Vous n'êtes pas identifié(e).
Oliver77 a écrit :Patrick,
Je te ferai un petit topo sur le DME (que je n'ai pas encore utilisé) et le XPDR.
Quant à la logique de Saïtek, peut-être est-ce en vue de cockpits bien "garnis" avec de nombreux modules radio, ce qui permet d'en dédier un aux COM, un aux NAV, etc... ?
Amtiés.
C'est d'ailleurs ce qu je fais avec mes trois modules radio.... Lâchez pas!
-Comm 1 et Nav 1 pour le premier
-Comm 2 et Nav 2 pour le deuxième
-ADF et Transpondeur pour le dernier...
Bonsoir (chez nous) Bo,
Trois modules!! Je sais que quand on aime on ne compte pas mais quand même...
Mais ne t'inquiètes pas, on ne lâche rien. Si Olivier en a la volonté (et je suis sûr qu'il l'a), on va rentabiliser ces doublons...
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
@ Bo : Je vais déjà essayer de maîtriser un module radio ... C'est sûr que plusieurs modules c'est pratique en plus de faire un bel effet ... ... Mais je reste humble, et dans mes limites techniques pour l'instant !
@ Patrick : Je tiens à arriver au bout ... Mais ça va être plus long que prévu ! Hier soir, au lieu de coder, j'ai essayé de réfléchir à l'arborescence de ce que je voulais mettre en place, histoire de ne pas écrire des tas de lignes pour rien ...
Donc en gros :
1- Lorsque le Module radio est initialisé, je dois mémoriser la position des deux sélecteurs. (pour moi, par défaut, COM1 et NAV1)
2- Lorsque je mets l'avionique en service, je dois synchroniser COM1 et NAV1 les deux sélecteurs précédemment mémorisés de FSX vers le module radio.
3- Lorsque je change un sélecteur de position, je dois mémoriser sa nouvelle position et synchroniser l'affichage en fonction (en tenant compte du second sélecteur, et de l'affichage associé)
Vu que moi je n'ai qu'un seul module ( dédicace à Bo ), je garde mon sélecteur du haut en COM1, puis je jongle avec le second sélecteur pour les autres fonctions. Je pense me focaliser sur ce fonctionnement dans un premier temps, histoire d'essayer d'arriver à un résultat.
Si c'est ok, je n'aurai plus qu'Ã adapter le code dans l'autre sens ...
Voilà ... il n'y a plus qu'à ça a l'air tout facile, dit comme ça !
J'entre en mode codeur (mais modeste,hein !) Je crois que je vais pondre un truc qui va pas fonctionner, et Patrick va devoir s'arracher les cheveux pour m'aider ...
Dernière modification par Oliver77 (20-11-2014 07:27:57)
Hors ligne
Bonjour Olivier,
Dis-moi, quand tu allumes ton panel radio (ton appareil en cold and dark, pas de batterie, pas d'avionique) qu'est ce qu'il affiche?
Je te laisse préparer ton code mais donne-le moi au complet. Si tu fais "communiquer" deux LUA, donne-moi les deux s'il te plait. Merci.
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Bonsoir Patrick,
Je reviens avec le sourire ! Je suis arrivé à faire ce que je voulais. Bien sûr c'est loin d'être terminé, mais ça fonctionne.
Pour cela j'ai modifié deux scripts.
- le SwitchPanel.lua :
- J'ai rajouté une section au début du fichier pour initialiser des variables et ainsi connaître l'état des deux sélecteurs.
- Sur l'event qui gère Avionique "ON", je lance la fonction Get_Val, avec en paramètres les valeurs liées à l'état du sélecteur du haut. Par exemple, si il est sur COM1, j'envoie com1 et com1stb. La foulée fait le nécessaire pour afficher ces deux infos sur le module, puis fait la même chose en fonction de l'état du second sélecteur. Pour l'instant j'ai fait mes tests avec NAV1 et NAV2 sur le sélecteur du bas et ça fonctionne bien.
-Sur l'event qui gère Avionique "OFF", je gère l'extinction du module.
- le RadioPanel.lua :
C'est grosso-modo le même principe. J'initialise deux variables, une pour chaque sélecteur. (TopSel et BotSel). Ensuite la bascule du sélecteur top entraine le lancement de la fonction Get_ToP_Val avec deux paramètres concernant la position du sélecteur et afficher les valeurs sur le module. Ensuite la fonction affiche les valeurs du bas selon la position du sélecteur concerné.
J'ai testé, et ça fonctionne.
Tout ça est incomplet, et imparfait, et comporte deux petites failles, dont une volontaire pour commencer :
1 - l'initialisation de SwitchPanel ne fonctionne pas s je coupe l'avionique. Si je la remets en route avec le sélecteur du bas, ce sont toujours les premières valeurs qui s’afficheront. En revanche, si je relance le switchpanel.lua, c'est ok.
2- comme je garde COM1 sur le sélecteur du haut, et que je jongle avec le sélecteur du bas, je ne tiens compte que du sélecteur du haut pour commencer.
je pense que ce code est à améliorer, sûrement à simplifier. Mais je suis vraiment content ! il fonctionne ... Auto satisfaction primaire, et j'ai même pas honte !
Amitiés
Dernière modification par Oliver77 (20-11-2014 22:25:50)
Hors ligne
Le script SwitchPanel.lua
Edit : un bug détecté : Au premier lancement, il faut manipuler le sélecteur du haut, puis relancer le script. Et là ça fonctionne. Sinon, Erreur nil ...
Penser à ajouter une temporisation lors de la mise sous tension de l'avionique, pour coïncider avec le délai d'affichage de la radio du cessna A2A C'est fait, ligne 198
Dernière modification par Oliver77 (20-11-2014 23:18:24)
Hors ligne
Le script RadioPanel.lua
Edit : BUG : Si je modifie le sélecteur du haut, le script fonctionne et la console et le log affiche les bonnes valeurs. Mais l'affichage n'est pas mis à jour. Corrigé partiellement. Affichage OK mais valeurs incorrectes répétées sur la ligne du bas.
Dernière modification par Oliver77 (21-11-2014 07:32:07)
Hors ligne
Bonjour Olivier,
J'ai modifié un peu ton script.
Tout d'abord, pour qu'il fonctionne au démarrage sans devoir bouger un bouton, il faut créer une "initialisation" qui lira la position des switchs au départ (idem pour le switch panel). Cette initialisation se trouve tout en bas du script pour que toutes les fonctions soient lues avant celle-ci (évite l'erreur got nil).
J'ai séparé l'acquisition des valeurs d'affichage haut et bas (fonction Get_Val_TOP et Get_Val_BOT) et dédié une fonction spécifique pour l'écriture ("Write_Panel"). Ainsi, seule la partie de la chaîne concernée change. Inutile de relire toutes les variables.
Je suppose que tu lances ce script de façon automatique, j'avais imaginé le lancer depuis le switchpanel.lua en fonction de la position des interrupteurs batterie et avionique. Qu'en penses-tu?
Dernière modification par Pat_59 (21-11-2014 09:49:37)
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Je viens de regarder ton script SwitchPanel, je m'aperçois que tu utilises beaucoup de fonctions issues du RadioPanel.
Je l'ai aussi modifié (surtout allégé) pour lancer le Radio_Panel depuis celui-ci. Conditions : le Master Bat et Avionic sur ON.
Dans l'autre script Radio_Panel, j'ai rajouté deux event.offsetmask qui surveille l'état des deux boutons Master Bat et Avionic du Switch Panel. Si l'un des deux repasse à 0, appel d'une fonction Radio_Off qui envoie une chaîne "Blank" au bout de 2s puis qui ferme le script. Il sera relancé quand les deux boutons seront sur la bonne position.
Evidemment, ce ne sont que des suggestions. Tu restes le seul maître à bord.
Le SwitchPanel.lua et les mofifs du RadioPanel à la fin. Il semble que l'on ne puisse pas mettre deux balises"Spoiler".
Dernière modification par Pat_59 (21-11-2014 11:26:29)
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Et pendant que j'y suis, Ã tester cette fonction pour le bouton Act/Stby du bas (fonctionne uniquement pour COM1 et COM2 pour le moment).
function BRI_ACTSTB()
testVar = ipc.readUD(0x3358)
if logic.And(testVar,32768) ~= 0 then
ipc.display('stand-by_bas',10)
ipc.log('stand-by_bas')
if BotSel == "BCOM1" then
Vleft = ipc.readUW(0x034E) -- com1
Vright = ipc.readUW(0x311A)-- com1 stdby
ipc.writeUW(0x034E,Vright)
ipc.writeUW(0x0311A,Vleft) -- on permute gauche et droite
Vleft = ipc.readUW(0x034E) -- com1
Vright = ipc.readUW(0x311A)-- com1 stdby
Get_Val_BOT(Vleft,Vright)
elseif BotSel == "BCOM2" then
Vleft = ipc.readUW(0x03118) -- com2
Vright = ipc.readUW(0x311C)-- com2 stdby
ipc.writeUW(0x03118,Vright)
ipc.writeUW(0x0311C,Vleft) -- on permute gauche et droite
Vleft = ipc.readUW(0x03118) -- com2
Vright = ipc.readUW(0x311C)-- com2 stdby
Get_Val_BOT(Vleft,Vright)
end
end
end
Dernière modification par Pat_59 (21-11-2014 12:11:59)
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Bonjour Patrick,
Je viens de voir tes propositions de modification, et c'est vraiment très intéressant. Cela éclaircit le code et simplifie certains appels.
En lisant ton code j'ai capté de suite mon erreur avec l'init du switch panel. Ma méthode fonctionnait, mais une seule fois, au lancement du lua ...
J'espère pourvoir tester tes modifications ce soir, ou ce week-end au plus tard.
Evidemment, ce ne sont que des suggestions. Tu restes le seul maître à bord.
Je vois plutôt ça comme un travail collaboratif, qui s'enrichit par l'expérience de tous ... Mes idées étaient bien là , mais incomplètes et imparfaites ... Tu m'aides à combler ces lacunes, ou tu m'orientes sur des pistes ... Je suis preneur, avec grand plaisir !
Et puis qui sait ? peut-être que les scripts terminés (le sont-ils vraiment un jour ?) pourront peut-être intéresser ou aider d'autres utilisateurs ...
Edit : je viens de voir ton dernier post à l'instant. Je testerai également. Merci !
Dernière modification par Oliver77 (21-11-2014 12:51:52)
Hors ligne
Je suis content que tu considères cela comme du travail "collaboratif", je n'aurais pas eu l'outrecuidance de passer outre tes intentions premières.
Je te laisse faire pour corriger certains "aspects" du script par la suite. Je pense que c'est la meilleure façon pour que tu apprennes; si je te donne les solutions immédiatement, tu ne te creuseras pas la "cervelle" et, tu ne feras que reprendre (peut-être sans comprendre) la solution apportée. On n'apprend jamais tant que de ses erreurs.
Maintenant, puisque tu le proposes, je pense m'attaquer aux rotatifs qui permettent la modification des fréquences stand-by.
Pour les COM et les NAV, pas de probleme je connais la façon dont elles sont représentées. Comptes-tu l'utiliser également pour les ADF ( la modification de fréquence est-elle faite depuis la fréquence active ou existe-t-il également une fréquence en stand-by, sinon de quel côté s'affiche la fréquence et que modifie le inner et outer switch permettant les réglages) , pour le XPDR (idem, quel côté correspond à l'affichage et que modifie le inner et le outer au niveau de l'affichage)?
N'ayant pas le matériel, j'aimerais connaître ce qui est affiché lorsque le switch est sur DME. Sans doute, la distance de la balise (si elle est disponible) sur la fenêtre de gauche mais laquelle, NAV1 ou NAV2? Dans ce cas, il serait possible d'afficher sur la fenêtre de droite la vitesse de rapprochement de cette balise par exemple.
Je suis content de participer à l'élaboration de ton script et, même sans posséder le matériel, l'aspect "programmation" me réjouit.
Je ne suis pas sûr que ce script soit fini un jour (tous les jours, tu auras une nouvelle idée pour l'améliorer) mais, l'avantage qu'il présente, c'est qu'il est modifiable pour correspondre à n'importe quel add-on ce que ne fait pas le driver original.
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Patrick,
Il faudrait être un kéké de base (pour être poli et compatible avec la charte du forum) pour demander de l'aide et des avis, puis s'offusquer des suggestions ou pire encore, se vexer suite à des modifications de son propre script ... Je sais bien que de nos jours tout cela n'est pas évident, mais quand même ... Et je ne sais pas faire autrement que respecter le temps que tu m'accordes, tout comme le partage de tes connaissances ! c'est le B.A.BA ...
Comme tu as pu le voir, je n'attends pas de script tout cuit à copier/coller "bêtement". l'intérêt est de comprendre la chose, et le fonctionnement un peu plus en profondeur de FSX ... Dont j'avais, jusque là , sous-estimé l'étendue !!!
Je vais tester tes scripts, essayer de collecter avec précisions les infos demandées. Ce que je te propose, si le script fonctionne en l'état, pour COM1/COM2 et NAV1/NAV2, c'est effectivement de passer en parallèle sur les rotatifs, ce qui je crois va être un gros morceau ...
Hors ligne
Une petite question sous le couverte
Tu as le CatalinaX Pat?... Ou Oliver?
J'ai ouvert ma console Lua avec FSUIPC, et je suis étonné du résultat...
Certains Lvars ne sont pas lu???? Mais bon, si tu as, j'ouvrirai peut-être un topic pour le CAT et ses Lvars
J'ai aussi sans cesse des offset qui tourne en boucle dans la liste des Lvars (MIXTURE axis machin), je comprend pas...
Hors ligne
Bonsoir Bo,
Hélas non, je n'ai pas le Catalina X (je serai plutôt PMDG en ce moment) mais cela n'a pas grande importance.
En ce qui concerne les Lvar "axis" (je me demande si c'est réellement une Lvar, un offset plus sûrement), c'est normal que cela tourne en boucle. Ça surveille la valeur de ton axe "mixture" ou cela provient de ton axe qui n'est pas stable (valeur changeante sans mouvement de l'axe, c'est l'hypothèse que je privilégie).
Quand tu dis "certaines Lvar ne sont pas lues", le log FSUIPC ne fais voir que les valeurs qui sont modifiées, pas l'intégralité des Lvar.
Tu peux très bien continuer ici si Olivier n'y voit pas d'inconvénient et j'essaierai de te répondre dans la mesure de mes connaissances. Si tu ouvres un autre post, je m'y abonnerai également.
Dernière modification par Pat_59 (21-11-2014 21:31:18)
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Bonsoir Patrick,
Pas de succès ce soir avec tes modifications. Qu'il s'agisse du SwitchPanel, du RadioPanel ou du test Act/stby ...
Du coup de continue sur ma lancée, en essayant d'adapter mes scripts avec tes suggestions.
Je poste dès que j'ai du neuf.
Très bonne soirée et bon week-end.
Hors ligne
Bonjour Olivier,
Tu avais raison, il y avait quelques erreurs. Finalement, j'ai décidé de les tester en envoyant les valeurs dans les offset comme si j'avais le matériel.
Maintenant tout fonctionne (du moins chez moi), si tu pouvais également tester. Merci.
Le script SwitchPanel :
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Le RadioPanel :
Je vais pouvoir continuer sur les rotatifs maintenant que je peux tester.
Bon week-end et excuse-moi pour les erreurs.
A te lire.
Dernière modification par Pat_59 (22-11-2014 10:08:07)
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Bonjour Patrick,
Pas de souci, et pas de perte de temps !
Au contraire, car je fais des essais avec nos scripts respectifs ! Et je maintiens ce que j'ai dit hier en lisant tes scripts; ils simplifient le code considérablement et évitent les redondances. Je dois m'absenter mais je te tiens au courant quand je reviens ce soir. J'ai identifié le problème.
Bonne journée, et amitiés.
Olivier.
Hors ligne
Bonsoir Patrick,
Alors pour commencer, je réponds à tes questions :
- Mode XPDR :
L'afficheur de droite indique le réglage de l'altimètre ( Outer +, Outer -)
Celui de droite indique le transpondeur. Les millies avec la décimale par défaut. Modification par Inner (+ et -). Une pression sur ACT/STBY (aussi indiqué XPDR Digit) pour basculer sur les centaines, et ainsi de suite ...
- Mode DME :
Je ne l'ai jamais utilisé. Par défaut, machine à l'arrêt, l'afficheur n'affiche que les trois premières décimales à gauche et à droite.
- Mode ADF :
L'afficheur de gauche affiche les trois premières décimales.
Celui de droite voit la décimale modifiée par le Inner (+ et -). Le reste modifié par le outer (+ et -) C'est également une fonction que je n'ai pas vraiment utilisée.
Maintenant, j'en viens à tes scripts. Ils fonctionnent parfaitement !
Dans ta précédente version du switchpanel, il y avait un souci avec le master bat et l'avionique : la valeur n'arrivait jamais à 2. Tu a été plus rapide que moi pour le corriger !
Pour le radioPanel, l'affichage ne s'allumait pas du tout. Là , c'est nickel après quelques petites bidouilles.
Je t'en ferai part demain.
Amitiés,
Olivier.
Hors ligne
Bonjour Olivier,
Merci pour les screens, cela va m'aider.
Pour l'ADF et le réglage altimètre, pas de problème. Le mode XPDR sera sans doute un peu plus compliqué à coder du fait qu'il faille utiliser la touche Stand-by pour changer de digit (et je ne parle même pas de la chaîne à construire à chaque fois).
À cœur vaillant, rien d'impossible. On mettra le temps qu'il faudra.
Concernant le SwitchPanel, j'avais oublier que le code est exécuter une fois à l'initialisation donc la variable qui était au départ à 0 se retrouvait à -2 et ne pouvait plus atteindre 2 par la suite pour lancer le RadioPanel. En partant de 2 cela fonctionne beaucoup mieux. Comme quoi il aurait fallu que je teste avant de te le donner. On ne m'y reprendra plus.
En parlant de chaîne à construire, je suis tomber, lors de mes tests, sur un cas un peu particulier.
Pour le cas des fréquences NAV qui comporte un 0 en second chiffre (109.50 par ex), l'offset nous renvoie 950 (le 0 est évidemment omis). De ce fait, lors de la construction de la chaîne (v1 à v4), il te manque nécessairement une valeur ce qui devait entraîner ces erreurs d'affichage.
J'ai modifié le script pour prendre cela en compte. Je demande le nombre de caractère de la variable (string.len(variable)) et si j'obtiens 3 , je concatène avec un 0 en tête ("0"..variable) ainsi l'intégrité des 4 variables v est préservée
À bientôt pour la suite.
PS : J'attends la valeur des bits modifiés par les inner et outer knob mais c'est secondaire, ça ne m'empêche pas de travailler, je fais comme si...
Dernière modification par Pat_59 (23-11-2014 09:27:33)
Amicalement Patrick[img align=D]http://www.pilote-virtuel.com/img/members/8639/P3DV3.jpg[/img]
Configuration: Intel I7 3770k OC 4,4 GHz, CM Asrock Z77 Extrem 9
8Gb Gskill DDR3 2133, CG Nvidia 980 GTX TI 6Gb, Windows 8 64bits
P3D V3.3, X52 Pro, CH Product "Éclipse", TIR 5 etc....
Hors ligne
Patrick,
Voici un récapitulatif des différentes valeurs retournées par les rotatifs selon la position du sélecteur.
Haut -> out+ -> out- > in+ -> in -
com1 262657 524801 66049 131585
com2 262658 524802 66050 131586
nav1 262660 524804 66052 131588
nav2 262664 524808 66056 131592
adf 262672 54816 66064 131600
dme 262688 524832 66080 131616
xpdr 26270 524864 66112 131648
Bas-> out+ -> out- > in+ -> in -
com1 4194433 8388737 1048705 2097281
com2 4194561 8388865 1048833 2097409
na1v 4194817 8389121 1049089 2097665
nav2 4195329 8389633 1049601 2098177
adf 4196353 8390657 1050625 2099201
dme 4198401 8392705 1052673 2101249
xpdr 4202497 8396801 1056769 2105345
Quant à l'ADF, il j'avais compris que lui-ci était stocké sur deux offset:
- 0x0356 pour le chiffre des milliers et la décimale
- 0x034C pour les chiffres des centaines, des dizaines et des unités.
Je pensais extraire ces valeurs et les concaténer avant de pouvoir les traiter. Mais je n'ai pas encore essayé ... Aujourd'hui je vais enfin essayer de positionner correctement mes deux écrans destinés l'affichage des gauges ... Mon install actuelle est inconfortable et fait souffrir mes épaules ...
Du coup, si tu attends les conversions des valeurs attendues, je te les ferai parvenir un peu plus tard ...
Hors ligne