Page 1 sur 2

Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 08:13
de Neutrino
Bonjour

Jusqu'à présent j'avais réussi à me passer de l'utilisation d'un fichier Lua exécuté par Fsuipc mais comme tout arrive un jour ou un autre je me suis exercé à essayer avec un exemple, mais très certainement par faute d'inattention quelque part cela ne fonctionne pas.

Ma config: P3Dv4.3 Fsuipc5.140

1 - Dans Fsuipc5.ini j'ai bien la ligne pour déclarer le fichier Test.lua
[LuaFiles]
1=ipcReady
2=linda
3=ipcReady
4=log lvars
5=Test

2 - Dans le fichier \Modules\Profiles\RealAir Legacy.ini j'ai la ligne pour exécuter le script du fichier Test.Lua avec le bouton 16 du joystick #2
[Buttons]
1=P2,16,CL5:R,0 -{Lua Test}-

3 - J'ai placé le fichier Test.lua à la racine de \Modules et il contient le script suivant:
-- ## Test Lua scripts ###############
function Adf_On_Off ()
EtatSwitchAdf = ipc.readLvar("ADF_On_Switch")
if EtatSwitchAdf == 0 then
ipc.writeLvar("ADF_On_Switch",1)
else
ipc.writeLvar("ADF_On_Switch",o)
end
end

4 - Et bien cela ne fonctionne pas !!!! Par contre le même script exécuté avec Linda fonctionne ....
Je suis intéressé de savoir ce que j'ai raté ...

Merci
Michel

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 08:20
de A320 hérétique
Bonjour,

Tu devrais commencer par rajouter un ipc.display dans ton code pour t'assurer qu'il s'exécute bien.

Michel

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 09:09
de gardan
Bonjour,

Consulter le fichier txt des logs de FSUIPC pour voir si une 'error' existe.

Michel

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 11:24
de Neutrino
A320 hérétique a écrit:
Tu devrais commencer par rajouter un ipc.display dans ton code pour t'assurer qu'il s'exécute bien.



Je ne sais pas faire - Quel paramètre faut-il mettre à ipc.display() ?

-- ## Test Lua scripts ###############
function Adf_On_Off ()
ipc.display()
EtatSwitchAdf = ipc.readLvar("ADF_On_Switch")
if EtatSwitchAdf == 0 then
ipc.writeLvar("ADF_On_Switch",1)
else
ipc.writeLvar("ADF_On_Switch",o)
end
end

Le fichier FSUIPC5.log ne contient pas le terme "error"

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 11:41
de A320 hérétique
Re,

tu as la doc des bibliothèques spécifiques FSUIPC dans le répertoire FSUIPC ... FSUIPC Lua Library.pdf

Dans ton instruction, rajoutes simplement en paramètre le message que tu veux afficher à l'écran (pour du texte, tu mets entre double quote, pour du numérique pas de quote, et pour concaténer, tu mets 2 points successifs).

ipc.display("texte" .. numérique .. "etc")

je n'ai pas encore essayé avec P3Dv4.2, selon Peter pas de pb.

Michel

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 12:59
de Neutrino
Ok, donc j'ai ajouté à mon script lua: ipc.display("Erreur")
Cela donne:
-- ## Test Lua scripts ###############
function Adf_On_Off ()
ipc.display("Erreur")
EtatSwitchAdf = ipc.readLvar("ADF_On_Switch")
if EtatSwitchAdf == 0 then
ipc.writeLvar("ADF_On_Switch",1)
else
ipc.writeLvar("ADF_On_Switch",o)
end
end

Donc si je comprend bien, si le script s"exécute mal je devrai avoir une fenêtre "Lua Display" avec string value = Erreur

Hors après manipulation du contact affecté dans fsuipc (joy#2 Btn#16) => pas de résultat
A croire que fsuipc n'execute pas le fichier Test.lua

Quand je fais:
Fsuipc / onglet Logging/ coché Debug Trace Lua plugings et Send to console windows
J'ai une liste ininterrompue de lignes identiques:
1206047 LUA.0: Waiting for an event in "P:\Program Files\Lockheed Martin\Prepar3D v4\Modules\linda/system/init.lua"
1206078 LUA.0: Timer event: calling "hidPoll" in "P:\Program Files\Lockheed Martin\Prepar3D v4\Modules\linda/system/init.lua"

Mais rien en rapport avec l'exécution du prog lua...

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 14:07
de A320 hérétique
Bon, j'y vais sur la pointe des pieds car je ne me suis penché sur Lua que très récemment...

1) en effet, la fonction n'est pas exécutée (ce qui ne veut pas dire que le fichier n'est pas appelé)
2) mais au fait, ce fichier ne contient que la définition de la fonction, pas de trace de son appel ???

Michel

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 16:09
de gardan
Re,
J'utilise Lua et Sioc pour la programmation de mon cockpit

- 1 tous mes modules (fsuipc.ini, fichiers Lua) sont dans le même répertoire "Modules"
comment indiques-tu à fsuipc ou Lua le chemin "\Modules\Profiles\RealAir Legacy.ini "

2- tu appelles une fonction Lua directement avec une instruction de Fsuipc.ini
"[Buttons]
1=P2,16,CL5:R,0 -{Lua Test}-"

Je ne connais pas cette méthode ; moi je procède comme ceci
"[Buttons]
53=P65,17,CL25:R,73 -- dans fsuipc.ini
********************************************************
if ipcPARAM == 73 then -- dans Lua
appel fonction ou toutes autres commande Lua
end


Michel

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 22:01
de Neutrino
Bon, j'ai plusieurs points à rectifier:

1 - Pour comprendre l'utilisation de l'instruction "ipc.display()" jai fais des tests avec mon script lua exécuté par Linda: j'ai ajouté la ligne
ipc.display("ADF on/off",5)
à la fin de mon script, ce qui donne:

-- ## Test Lua scripts ###############
function Adf_On_Off ()
EtatSwitchAdf = ipc.readLvar("ADF_On_Switch")
if EtatSwitchAdf == 0 then
ipc.writeLvar("ADF_On_Switch",1)
else
ipc.writeLvar("ADF_On_Switch",o)
end
ipc.display("ADF on/off",5) --affichage pendant 5s
end

Résultat: le script s'exécute, la commande sur le tdb aussi et l'affichage en fenêtre Lua pendant 5s.
Donc le test est bon et j'ai appris une instruction de plus; merci à Michel "A320 hérétique".

2 -
gardan a écrit:- 1 tous mes modules (fsuipc.ini, fichiers Lua) sont dans le même répertoire "Modules"

J'ai pareil : fsuipc.ini et Test.lua à la racine de \Modules

3-
gardan a écrit:comment indiques-tu à fsuipc ou Lua le chemin "\Modules\Profiles\RealAir Legacy.ini "

Pour fsuipc:
Onglet Buttons + Switch
coché ProfileSpecific
j'active sur le tdb le switch concerné (ici joy#2 Btn#16)
coché Select for Fs control
dans la liste déroulante je selectionne la ligne Lua Test (qui correspond à mon fichier Test.lua)
Je suppose que la méthode est bonne parce que je retrouve bien dans mon fichier \Modules\Profiles\RealAir Legacy.ini la ligne:
100=P2,16,CL5:R,0 -{Lua Test}-

4 - Ensuite j'avais tout faux en utilisant le même script lua pour Linda et Fsuipc.
A320 hérétique a écrit:2) mais au fait, ce fichier ne contient que la définition de la fonction, pas de trace de son appel ???

D'après les instructions que j'ai (mal) compris, j'ai modifié le script lua du fichier Test.lua ce qui donne:
if ipcPARAM == 16 then
EtatSwitchAdf = ipc.readLvar("ADF_On_Switch")
if EtatSwitchAdf == 0 then
ipc.writeLvar("ADF_On_Switch",1)
else
ipc.writeLvar("ADF_On_Switch",o)
end
end

Résultat: cela ne fonctionne pas - j'ai probablement une erreur dans le script ci-dessus ?

Michel

Re: Exécution script Lua avec Fsuipc

MessagePosté: Lun 17 Sep 2018 23:09
de fab
Neutrino a écrit:...
ipc.writeLvar("ADF_On_Switch",o)
...
Michel


Dans cet extrait de code, je crois distinguer comme paramètre un "o" comme oscar et non un "0" comme le chiffre zéro ?
Me trompe-je ?