de stevelep » Sam 16 Mar 2013 15:07
Salut Rémy,
Tu as certainement cablé ton inter 3 positions sur 2 entrées distinctes.
Quand tu as plusieurs entrées qui commande le même offset ou la même action, il
est préférable d'utiliser une subroutine, afin d'écrire les conditions à un seul endroit:
Var 0405, name INVERTER_SW1, Link IOCARD_SW, Input 8 // Commande Inverter 1 up
{
CALL &invert_sub
}
Var xxxx, name INVERTER_SW2, Link IOCARD_SW, Input X // Commande Inverter 1 down
{
CALL &invert_sub
}
Tu appelles la sous-routine avec les 2 variables d'entrée
Ensuite dans la sous routine, tu écris les 3 différentes conditions:
si switch up, si switch down, si 2 switch off
if &INVERTER_SW1 = 1 // switch up
if &INVERTER_SW2 = 1 // switch down
C1 = INVERTER_SW1 = 0 // switch off = au milieu
C2 = INVERTER_SW2 = 0
if C1 AND C2
Ensuite tu as besoin de 3 boutons joystick différents, un pour chaque position
mettons que tu choisis les bit 0,1,2 du joystick 64.
Tu dois utiliser la fonction TOGGLE qui va envoyer 1 puis 0 et simuler une pression de bouton de joystick
C'est mieux que CHANGEBIT dans ce cas là.
&JOYSTICK_64 = TOGGLE 0
&JOYSTICK_64 = TOGGLE 1
&JOYSTICK_64 = TOGGLE 2
Maintenant si tu assembles le tout:
Var 0405, name INVERTER_SW1, Link IOCARD_SW, Input 8 // Commande Inverter 1 up
{
CALL &invert_sub
}
Var xxxx, name INVERTER_SW2, Link IOCARD_SW, Input X // Commande Inverter 1 down
{
CALL &invert_sub
}
Var xxxx, name invert_sub, Link SUBRUTINE // sous-routine inverter
{
if &INVERTER_SW1 = 1
{
&JOYSTICK_64 = TOGGLE 1
}
if &INVERTER_SW2 = 1
{
&JOYSTICK_64 = TOGGLE 2
}
C1 = INVERTER_SW1 = 0
C2 = INVERTER_SW2 = 0
if C1 AND C2
{
&JOYSTICK_64 = TOGGLE 0
}
}
Var 0404, name JOYSTICK_64, Link FSUIPC_OUT, Offset $3340, Length 4
Voila, dis moi si tu as compris et si ça marche (il faut corriger le code avec tes n° de variables ...)
Bye
BOB