de Pegase78 » Sam 12 Mar 2016 01:10
Bonsoir Dominique,
Je ne sais pas si ce qui va suivre te sera utile, je suis débutant en programmation SIOC et LUA, mes compétences en ce domaine sont donc très limitées, mais malgré tout j'ai réussi à faire fonctionner le master switch sur le C182 de A2A en passant par LUA.
Donc je te livre la méthode que j'ai utilisé pour y arriver, donc à toi d'éventuellement transposer ce qui suit à ta problématique.
J'ai dans SIOC la gestion de 2 switchs Master Battery et Alternateur.
-----------------------------------Code SIOC-------------------------------------------
Var 0002, name fs_bat, Link FSUIPC_INOUT, Offset $3102, Length 1 // Offset FS $3102
{
&fs_bat = &sw_batt
}
Var 0003, name sw_batt, Link IOCARD_SW, Input 1 // inter batterie
{
&fs_bat = &sw_batt
}
Var 0005, name fs_alternat, Link FSUIPC_INOUT, Offset $66C0, Length 1 // Offset libre
{
&fs_alternat = &sw_alternat
}
Var 0006, name sw_alternat, Link IOCARD_SW, Input 2 // inter alternateur
{
&fs_alternat = &sw_alternat
}
-------------------------------------FSUIPC.INI---------------------------------------------
// Dans FSUIPC.INI j'ai ajouté les entrées suivantes dans mon cas le fichier ipcReady et C182_A2A
[LuaFiles]
1=ipcReady
2=C182_A2A
------------------------------------ipcReady.LUA------------------------------------------
// Donc, il faut créer un fichier ipcReady
// Contenu du fichier ipcReady.LUA où je test le modèle d'avion chargé dans FS
// si c'est mon C182 alors je charge le fichier C182_A2A.LUA
if ipc.readSTR(0x3D00, 11) == "C182_N516DM" then
-- Appel C182_A2A.LUA
ipc.runlua('C182_A2A')
end
----------------------------------C182_A2A.LUA----------------------------------------
// Donc il faut créer un fichier C182_A2A.LUA
// Contenu du fichier C182_A2A.LUA où j'affiche une petite fenêtre dans FS pour monitorer la valeur
// des variables et modifier leurs valeurs à chaque modification des Offsets par SIOC
-- pour commencer une boucle infinie tant que -----------------------
while 1 do
-- Affiche dans une fenêtre la valeur des variables pour les monitorer pratique pour débug----
ipc.display(
"Batterie 3102="..ipc.readUB(0x3102).."\nswBat="..ipc.readLvar('Battery1Switch').."\
Alternateur 66C0="..ipc.readUB(0x66C0).."\nswAlt="..ipc.readLvar('Eng1_GeneratorSwitch')
)
-- switch Batterie --------------------------------------------------------------------------
-- si la valeur de la Lvar est différente de la valeur de l'Offset ( modifié par le switch avec SIOC )
--alors affectation de la valeur de l'Offset
if ipc.readLvar('Battery1Switch') ~= ipc.readUB(0x3102) then
ipc.writeLvar('Battery1Switch',ipc.readUB(0x3102))
end
-- switch Alternateur -------------------------------------------------------------
-- si la valeur de la Lvar est différente de la valeur de l'Offset ( modifié par le switch avec SIOC )
--alors affectation de la valeur de l'Offset
if ipc.readLvar('Eng1_GeneratorSwitch') ~= ipc.readUD(0x66C0) then
ipc.writeLvar('Eng1_GeneratorSwitch', ipc.readUD(0x66C0))
end
-- Pause de 100 mSecs avant de boucler
ipc.sleep(100)
end
J'espère que mon exemple te sera utile.
Bon courage pour la suite
Alain