Aide compréhension 1ere jauge Air Manager

Programmation LUA, Macros FSUIPC, logiciel LINDA
et codage en LUA des gauges Air Manager

Aide compréhension 1ere jauge Air Manager

Messagede taton » Jeu 14 Juil 2016 16:49

Bonjour à tous,

Dans le cadre de mon pit de Vans, et suite a mes problèmes de gauges non "compatibles" avec une future cockpitarisation, je me suis mis à Air manager pour faire mes miennes à moi de gauges...
Mais.... bon, fin, bref, un poil de boulot en perspective...


Je commence simple avec l'horloge analogique ...
Je me base sur une horloge pré-programmée (Baron B58 - Clock) et j'essaye d'en comprendre le code.
J'ajoute que je voudrais changer l'horloge pour qu'elle affiche l'heure locale et non le GMT....

pour le code, voilà ce que j'ai à cette heure-ci:
Code: Tout sélectionner
img_add_fullscreen("watch_background.png")
img_seconds = img_add_fullscreen("watch_second_hand.png")
img_small = img_add_fullscreen("watch_small_hand.png")
img_big = img_add_fullscreen("watch_big_hand.png")

function Callback_time(s,m,h)
    img_rotate(img_seconds, s*6)
    img_rotate(img_small, h*30 + m*6/12)
    img_rotate(img_big, m*6)
end

fsx_variable_subscribe("LOCAL TIME", "Seconds",
                  "LOCAL TIME", "Minutes",
                  "LOCAL TIME", "Hours",Callback_time)



Alors, j'ai bien compris que le script est-lu de haut en bas et qu'il va donc me charger mes différentes images dans l'ordre en commencant par le fond, puis la troteur, les heures et les minutes dnas mon cas.
Aucun problème la dessus.


C'est en dessous que j'ai des soucis:

Tout d'abord, le function Callback_time(s,m,h)
d'ou viennenet ces arguments s m et h ?

ils sont réutilisés dnas les calculs ci-dessous via image rotate.

Si je prend par exemple : img_rotate(img_seconds, s*6)
je sais qu'il doit me faire tourner mon image "img_seconde de 6° par secondes, d'où le *6, mais je ne comprend pas d'où viens ce s et ce qu'il "contient".
donc mon problème est idem pour le m et h

Si quelqu'un peut juste m'aider a comprendre ce truc por ma 1ere ca serais sympa ^^.

Merci d'avance.
Nathan
J'ai fait tous les calculs... Ils confirment l'opinion des spécialistes: notre idée est irréalisable. Il ne me reste plus qu'une chose à faire; ...la réaliser.
Avatar de l’utilisateur
taton
 
Messages: 96
Inscription: 17/12/13
Localisation: Augny (57)

Re: Aide compréhension 1ere jauge Air Manager

Messagede JacquesZ » Jeu 14 Juil 2016 19:10

taton a écrit:
Tout d'abord, le function Callback_time(s,m,h)
d'ou viennenet ces arguments s m et h ?

ils sont réutilisés dnas les calculs ci-dessous via image rotate.

Si je prend par exemple : img_rotate(img_seconds, s*6)
je sais qu'il doit me faire tourner mon image "img_seconde de 6° par secondes, d'où le *6, mais je ne comprend pas d'où viens ce s et ce qu'il "contient".

Bonjour Nathan

Dans la fin du code, tu as une section

fsx_variable_subscribe("LOCAL TIME", "Seconds",
"LOCAL TIME", "Minutes",
"LOCAL TIME", "Hours",Callback_time)

C'est cette ligne qui appelle la fonction définie plus haut Callback_time, en lui passant comme paramètres les variables précédemment souscrites auprès de FSX via le plugin d'Air Manager.
Les variables sont transmises dans l'ordre de leur déclaration, à savoir d'abord LOCAL TIME en secondes (et c'est stocké dans la variable s locale à la fonction), LOCAL TIME en Minutes (variable m) et LOCAL TIME en heures (le h).

En clair avec la ligne fsx_variable subscribe, tu demandes au plugin d'Air Manager d'envoyer à chaque modification de la variable Simconnect LOCAL TIME par FSX, l'heure locale en secondes, en minutes et en heures à la fonction Callback_time, ces paramètres sont stockés dans les variables temporaires s,m et h.
Attention les variables s,m et h ne sont "visibles" (utilisables) que dans le cadre de la fonction appelée, ici Callback_time, c'est pour cela qu'elles sont temporaires...

Je reconnais que le mode de fonctionnement de la fonction fsx_variable subscribe n'est pas clair de ce côté là.
Il faut veiller à toujours insérer les souscriptions de variables (FSX et/ou XPlane) APRES la ou les fonctions appelées, c'est une contrainte du langage Lua.

Pour le reste tu as compris le fonctionnement du code, bravo.
On associe dans la fonction Callback_time la rotation de chaque élément graphique (les aiguilles) aux variables s (rotation de 6 degrés toutes les secondes,) m et h, etc...

Enfin pour terminer, du coup j'ai regardé le code original de l'horloge du Baron 58 , et effectivement il ya un bug:
Code: Tout sélectionner
xpl_dataref_subscribe("sim/cockpit2/clock_timer/local_time_seconds", "INT",
                 "sim/cockpit2/clock_timer/local_time_minutes", "INT",
                 "sim/cockpit2/clock_timer/local_time_hours", "INT", PT_time)
fsx_variable_subscribe("ZULU TIME", "Seconds",
                  "ZULU TIME", "Minutes",
                  "ZULU TIME", "Hours",
                  "TIME ZONE OFFSET", "Seconds",
                  "TIME ZONE OFFSET", "Minutes",
                  "TIME ZONE OFFSET", "Hours", PT_time)

Avec Xplane, on récupère bien l'heure locale soit trois paramètres, alors que avec FSX on récupère d'abord l'heure GMT en secondes, minutes et heures (ZULU TIME), puis le décalage avec l'heure locale (TIME ZONE OFFSET) soit 6 paramètres en tout.

Comme la fonction appelée Pt_Time ne reçoit au final que trois paramètres (s,m,h), elle ne prendra en compte que les trois premiers paramètres souscrits et n'affichera donc que l'heure ZULU (en tous les cas lorsque l'horloge est utilisée avec FSX).
Tu as donc bien fait de supprimer les trois derniers paramètres qui ne sont pas utilisés, et de remplacer ZULU TIME par LOCAL TIME pour obtenir l'heure locale.

Petit ajustement esthétique:
Comme tu l'as deviné, l'ordre d'affichage des éléments graphiques dépend effectivement de l'ordre de leur déclaration dans le code, en partant de l'arrière vers l'avant-plan, aussi je te conseille de mettre la ligne
Code: Tout sélectionner
img_seconds = img_add_fullscreen("watch_second_hand.png")
APRES les deux lignes
Code: Tout sélectionner
img_small = img_add_fullscreen("watch_small_hand.png")
img_big = img_add_fullscreen("watch_big_hand.png")

pour que l'aiguille des secondes s'affiche en avant plan comme cela devrait être normalement.

Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Aide compréhension 1ere jauge Air Manager

Messagede JacquesZ » Jeu 14 Juil 2016 19:28

Et je te conseille, si ce n'est déjà fait, de télécharger l'éditeur gratuit Notepad++ et d'installer le colorateur syntaxique "spécial Air Manager" (voir dans ce forum le topic "plugin Air Manage pour Notepad++"), ça va t'aider pour le code.

Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Aide compréhension 1ere jauge Air Manager

Messagede taton » Jeu 14 Juil 2016 20:27

Merci beaucoup pour ces explications claires!
Do S si je comprend bien, le S,m et h sont totalement arbitraires !
Je peux y mettre ce que je veux ? Et vont prendre Les valeurs des variables dans l'ordre ou je les ai déclarées plus bas dans la fonction??!

Je suis perdu là dessus et pas trouvé d'explication claires sur le net.
Dernière question.... À quoi rime le +m*6/12 ??? Pas compris la.... Si je le vire ca fonctionne bien aussi.... Une idée?
J'ai fait tous les calculs... Ils confirment l'opinion des spécialistes: notre idée est irréalisable. Il ne me reste plus qu'une chose à faire; ...la réaliser.
Avatar de l’utilisateur
taton
 
Messages: 96
Inscription: 17/12/13
Localisation: Augny (57)

Re: Aide compréhension 1ere jauge Air Manager

Messagede JacquesZ » Jeu 14 Juil 2016 20:48

C'est exactement ça, s, m et h sont des noms de variables arbitraires, tu peux les appeler comme tu veux.
Par contre tu devras les utiliser pour les calculs dans la fonction appelée avec leur nouveau nom bien évidemment.

Lua contrairement à d'autres langages de programmation ne nécessite pas de déclaration préalable des variables, celles-ci sont créées à la volée par l'interpréteur de code.
Il faut d'ailleurs à ce sujet faire attention, parce que le type de la variable (texte, entier, réel, booléen, tec...) est défini du coup par la première utilisation de la variable. Si tu écris par exemple
s="coucou"
la variable s sera considérée comme une variable texte.

Avis perso, function Callback_time(s,m,h) c'est plus parlant pour des secondes, minutes et heures que function Callback_time(riri,fifi et loulou), bien qu'au final ça marchera exactement de la même manière lunettesnoires .


pour ça:
img_rotate(img_small, h*30 + m*6/12)

J'imagine que le h*30 fait tourner l'aiguille des heures de 30 degrés à chaque heure pleine (12 heures*30°=360° jusque là tout va bien), et + m*6/12 rajoute le mouvement intermédiaire très lent de l'aiguille pour passer progressivement d'une heure à l'autre, mouvement de 0.5 degré (6/12) par minute, ce qui donne aussi 30° de rotation au bout de 60 minutes (60 minutes *0.5°=30°).
Donc
img_rotate(img_small, h*30 + m*0.5)
marche aussi bien.

Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Aide compréhension 1ere jauge Air Manager

Messagede taton » Jeu 14 Juil 2016 21:16

Merci encore pour cette reponse.pour l'aiguille des heures, si on fait un "print" des variables s m et h on peut voire que celles-ci défilent (surtout pour h et m) en continue et ne sont pas changeante a chaises heures pk minutes. Donc la rotation étant calquée sur cette valeur, la rotation des heures est très lente et pas en a coups.
Je ne comprend donc toujours pas cette fin de calcul.
Je ne sais pas si je suis clair mais je pense que ça devrais aller ^^
Mérci encore.
Nathan
J'ai fait tous les calculs... Ils confirment l'opinion des spécialistes: notre idée est irréalisable. Il ne me reste plus qu'une chose à faire; ...la réaliser.
Avatar de l’utilisateur
taton
 
Messages: 96
Inscription: 17/12/13
Localisation: Augny (57)

Re: Aide compréhension 1ere jauge Air Manager

Messagede JacquesZ » Jeu 14 Juil 2016 21:32

taton a écrit:Merci encore pour cette reponse.pour l'aiguille des heures, si on fait un "print" des variables s m et h on peut voire que celles-ci défilent (surtout pour h et m) en continue et ne sont pas changeante a chaises heures pk minutes. Donc la rotation étant calquée sur cette valeur, la rotation des heures est très lente et pas en a coups.
Je ne comprend donc toujours pas cette fin de calcul.
Je ne sais pas si je suis clair mais je pense que ça devrais aller ^^
Mérci encore.
Nathan


Je n'ai pas programmé cette jauge tu sais, donc savoir ce qu'il ya dans la tête du développeur...
Il faudrait tester pendant une heure pour voir le déplacement de l'aiguille des heures. Si ça se trouve, une simple
img_rotate(img_small, h*30) suffit.


Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Aide compréhension 1ere jauge Air Manager

Messagede taton » Ven 15 Juil 2016 14:52

Merci pour toutes ces infos JacquesZ.

Donc pour info, j'ai testé les 2 versions de code et
Code: Tout sélectionner
img_rotate(img_small, h*30)
suffit.
La version
Code: Tout sélectionner
img_rotate(img_small, h*30 + m*6/12)
n'apporte rien... ou en tout cas pas grand chose car rien vu sur 1h....

Donc avec tout ces conseils généreux, un poil de magouille sous inkscape, recodage etc, voilà le résultat de ma 1ere gauge:


Version "Neuve"
Image


Version "Usagée"
Image

Je précise qu'il n'y a pas de bordure, car je vais réaliser ces bordure "physiquement" sur le TDB.

J'accèpte toutes remarques ou critiques sur ces 2 guages lolaffiche

Encore merci pour l'aide.
Maintenant je m'en vais attaquer les autres ^^
J'ai fait tous les calculs... Ils confirment l'opinion des spécialistes: notre idée est irréalisable. Il ne me reste plus qu'une chose à faire; ...la réaliser.
Avatar de l’utilisateur
taton
 
Messages: 96
Inscription: 17/12/13
Localisation: Augny (57)

Re: Aide compréhension 1ere jauge Air Manager

Messagede JacquesZ » Ven 15 Juil 2016 16:07

Superbe! applaublanc

Une fois opérationnelles, n'oublies pas de publier tes jauges sur le Store d'Air Manager.
Un tuto sur "comment réaliser l'effet usagé" (rayures de la vitre comprise) sous Inkscape serait apprécié!

Jacques
Ma chaîne YouTube Tutos sur l’A320 par un Pilote de Ligne: https://youtube.com/channel/UCljftuoKBcgeR-WBgYJpuoA
Avatar de l’utilisateur
JacquesZ
 
Messages: 2848
Inscription: 24/11/10

Re: Aide compréhension 1ere jauge Air Manager

Messagede arcc » Ven 15 Juil 2016 16:24

Un tuto sur "comment réaliser l'effet usagé" (rayures de la vitre comprise) sous Inkscape serait apprécié!


Tout à fait. Je suis preneur.
A+
Christian
Un ancien sous-marinier qui a pris de la hauteur.
Avatar de l’utilisateur
arcc
 
Messages: 715
Inscription: 16/12/13
Localisation: La ou fini la terre (Finistere)

Suivante

Retourner vers LUA, Linda, Macros & gauges Air Manager





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités