Tutoriel pour rajouter un groupe de parc à votre avion

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

Tutoriel pour rajouter un groupe de parc à votre avion

Messagede tabar57 » Ven 22 Fév 2019 12:18

Pour animer un peu je vous ai recopié le tutoriel que je viens de publier sur mon blog

C'est ici : https://tabar57.blog4ever.com/tutoriel-pour-rajouter-un-groupe-de-parc-sur-un-avion


Dans ce tutoriel nous allons voir comment rajouter un groupe de parc sur un avion pour éviter la décharge trop rapide de la batterie.

Le problème est posé.
Sur certains avions et notamment le B200 de FlightOne, lorsque l'interrupteur batterie est mis sur On sans que les génératrices soient en fonction, ce qui est le cas moteurs à l'arrêt, on a pas le temps de faire sa première checklist que déjà la batterie est à 17 volts et ne permet plus le démarrage des moteurs

On peut bien sûr utiliser une fonction de FSUIPC enregistré qui consiste à rendre la batterie non déchargeable mais ce n'est pas élégant.

Alors dans ce tutoriel je vais vous guider pour installer cela dans votre avion.

Ce qu'il vous faudra c'est une jauge de Doug Dawson à télécharger ici : https://www.douglassdawson.ca/dsd_p3d_b ... er_x64.zip et que l'on mettra dans le panel.cfg de votre avion, préparer un interrupteur Input d'une carte IOC, modifier le code SIOC pour l'intégrer et rédiger un code Lua pour interfacer tout ce joli monde.

Comment cela fonctionne ?

La jauge est une dll qui crée une Lvar dans la liste des Lvars de votre avion, L: Batterycharger, cette jauge dans le panel n'affiche rien.

Quand cette Lvar est mise à 1, elle maintient la batterie à 24 volts et imite donc la charge d'un groupe de parc.

Pour mettre cette Lvar à 1, nous allons utiliser un interrupteur connecté à une input et recopier sa valeur dans un offset libre de Fsuipc, ensuite c'est cet offset qui sera "écouté" par le script LUA et qui, en cas de changement écrira la valeur de l'offset dans la Lvar, simple non ?

1ère Etape Installer la jauge

Après décompression du zip livré par Doug Dawson, on se retrouve avec une Dll dsd_p3d_battery_charger_x64.dll qu'il faut copier dans le répertoire Gauges de P3DV4.

Ensuite il faut modifier le panel.cfg de votre avion pour l'y intégrer sous la forme d'une ligne :

gauge60=dsd_p3d_battery_charger_x64!charger, 552,559,20,20 dans votre windows 0 par exemple

Au rechargement de P3DV4, si la gauge est opérationnelle vous devez avoir la Lvar L: BatteryCharger qui apparait dans la liste des Lvars, vérifiez avec l'édition de la liste des Lvars depuis FSCUIPC, je ne reprend pas ici la façon de faire vous devez savoir le faire maintenant.

2 ème étape

Reprenez votre code Sioc pour y intégrer à minima l'input du switch et la déclaration de l'offset libre qui sera écouté par Lua, chez moi çà donne çà :


Var 0165, name LVAR_ext_powSW, Link FSUIPC_INout, Offset $66D1, Length 1 // position du switch groupe de parc

Var 4060, name ext_power_SW, Link IOCARD_SW, device 1, Input 51 // inter pour connecter le groupe de parc
{
&LVAR_ext_powSW = &ext_power_sw // l'offset 66d1 prend la valeur du switch et sera recopiée dans la lvar L:BatteryCharger par le script LUA
}

A cette étape et après compilation il faut vérifier par la console sioc que l'offset 66D1 prend bien la valeur 1 quand l'inter est enclenché, c'est une étape de déboggage et de tests importante sinon galère

3 ème étape écriture du script LUA

A ce stade nous avons donc un inter qui fait changer la valeur d'un offset libre ( $66D1) et une Lvar ( L:BatteryCharger )
Il faut maintenant écrire ( ou compléter ) un script Lua qui va ranger la valeur de l'offset dans la Lvar

Dans ce script ( à la fin ) il faut écouter l'offset et s'il change lancer une fonction, on fait çà avec une ligne :

event.offset("66D1","UB","groupedeparc") -- écoute de l'offset interrupteur groupe de parc

event.offset c'est la commande d'écoute

66D1 c'est l'offset fsuipc à écouter

UB c'est la taille de l'offset ( byte non signé )

groupedeparc c'est la fonction qui va être lancée quand l'offset change

Maintenant il faut écrire la fonction, elle sera placée au dessus de la ligne que l'on vient d'écrire


function groupedeparc()

if ipc.readLvar('L:BatteryCharger')~=ipc.readUB(0x66D1) then
ipc.writeLvar('L:BatteryCharger',ipc.readUB(0x66D1))
end

end

Que fait-elle cette fonction écrite par nos soins ?

Eh bien quand elle est lancée, si la valeur de la Lvar L:BatteryCharger est différente de la valeur de 0x66D1 alors elle range par un ipc.writeLvar la valeur de l'offset 66D1 dans la Lvar et c'est tout.

Dernière étape sauvegarder son script et le lancer automatiquement par FSUIPC

- On sauvegarde ce script avec une extension .lua dans le répertoire modules de P3DV4, celui où doit normalement se situer aussi le fsuipc.ini

- dans le fsuipc.ini on rajoute le script dans la section [AUTO] pour qu'il se lance

Les vérifications

Après avoir relancé toute la mécanique on prend l' iocp console de SIOC et on vérifie la variable de voltage de la battery normalement c'est l'offset $2834, si l'inter Master Battery est enclenché sans l'inter de Chargeur enclenché et moteurs éteints la valeur de tension batterie doit baisser et dès que l'on enclenche le chargeur, la tension doit remonter et osciller entre 23,99 et 24 volts.


Voilà un bon pas de franchi sur la compréhension de ces mécanismes d'interfaçage d'offset et de Lvars

Bonnes découvertes et n'oubliez pas de me faire part de vos éventuels soucis ou incompréhensions.
Dernière édition par tabar57 le Sam 23 Fév 2019 18:45, édité 3 fois.
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Tutoriel pour rajouter un groupe de parc à votre avion

Messagede A320 hérétique » Ven 22 Fév 2019 12:49

Bonjour Bernard,

En voilà une chose qu'elle est intéressante !

Annexement, peux tu m'expliquer comment tu débug du lua ? Editeur de texte + affichage de ce que tu suspectes, sauvegarde, lancement de p3d, observation des affichages, arrêt p3d, et on remet ça ?

Je trouve ça très très lourd !...

Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 3080 Ti sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3353
Inscription: 2/09/12
Localisation: Pornic

Re: Tutoriel pour rajouter un groupe de parc à votre avion

Messagede tabar57 » Ven 22 Fév 2019 12:57

Merci Michel,

Pour le débug de Lua gratgrat , il parait que l'éditeur de Linda détecte des choses mais je ne l'utilise pas, je fais sous Notepad++ et j'essaie de m'appliquer du mieux que je peux, sinon je mets des ipc.display.
Bon, pour l'instant çà reste du petit script, je fais par petits modules mais le script complet qui commence à interfacer le B200F1 fait déjà un bon nombre de lignes
Ah j'oubliais ... pour le débogage, j'ai créé sous fsuipc un groupe de touches CTRL+ 9 et 0 qui permet de tuer le script LUA et le relancer, çà marche vachement bien avec la console de fsuipc lancée pour voir où on en est et çà fait gagner un temps fou parce que plus besoin de relance P3D


Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Tutoriel pour rajouter un groupe de parc à votre avion

Messagede A320 hérétique » Ven 22 Fév 2019 14:47

Oui Bernard, je fais comme toi, je tue le ou tous les scripts, mais au bout de 2 ou 3 kills, p3d plante ! Et relancer plusieurs fois p3d, outre le fait que c'est long, est également malsain car p3d nettoie très mal la mémoire ...

Bon, en tous les cas tu me rassures, je ne suis pas passé à côté de la solution miracle.

Michel
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 3080 Ti sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3353
Inscription: 2/09/12
Localisation: Pornic

Re: Tutoriel pour rajouter un groupe de parc à votre avion

Messagede PapaLima » Sam 23 Fév 2019 17:48

Excellent tuto. merci affiche Bernard !
Avatar de l’utilisateur
PapaLima
 
Messages: 814
Inscription: 14/04/16
Localisation: LFPG

Re: Tutoriel pour rajouter un groupe de parc à votre avion

Messagede tabar57 » Sam 23 Fév 2019 18:39

Merci je fais de mon mieux, j'espère que çà va servir .
Ca me permet surtout de savoir si j'ai moi même compris toute cette logique ecroulerire

Cordialement

Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3651
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine


Retourner vers LUA, Linda, Macros & gauges Air Manager





Qui est en ligne

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