code sioc DME1_DME2

Bonjours à tous,
J'ai besoin d'aide :
voici mon code sioc :
Var 0000, Value 0
Var 0011, name swap_DME, Link IOCARD_SW, Input 48, // swicht passage DME1_DME2
Var 0012, name speed_DME_d, Link IOCARD_DISPLAY, Digit 14, Numbers 3 // sortie display speed
Var 0013, name dist_DME_d, Link IOCARD_DISPLAY, Digit 20, Numbers 3 // sortie display distance
Var 0014, name time_DME_d, Link IOCARD_DISPLAY, Digit 26, Numbers 3 // sortie display time
Var 0016, name DME1_dist, Link FSUIPC_IN, Offset $0300, Length 2 // distance DME1 en nm*10
{
IF &swap_DME = 0
{
&dist_DME_d = &DME1_dist
}
ELSE
{
&dist_DME_d = &DME2_dist
}
}
Var 0019, name calc_spd_DME1 // affiche la vitesse DME1 en kt
{
IF &swap_DME = 0
{
&speed_DME_d = &calc_spd_DME1
}
ELSE
{
&speed_DME_d = &calc_spd_DME2
}
}
Var 0020, name DME1_speed, Link FSUIPC_IN, Offset $0302, Length 2 // vitesse DME 1 en kts*10
{
L0 = &DME1_speed / 10
&calc_spd_DME1 = L0
}
Var 0024, name calc_time_DME1
{
IF &swap_DME = 0
{
&time_DME_d = &calc_time_DME1
}
ELSE
{
&speed_DME_d = &calc_time_DME2
}
}
Var 0025, name DME1_time, Link FSUIPC_IN, Offset $0304, Length 2 // time to station DME1 en sec*10
{
L0 = &DME1_time / 600 // time to station en minutes
&calc_time_DME1 = TRUNC L0
}
// ****************************************************************
Var 0030, name DME2_dist, Link FSUIPC_IN, Offset $0306, Length 2 // distance DME2*10
{
IF &swap_DME = 0
{
&dist_DME_d = &DME2_dist
}
ELSE
{
&dist_DME_d = &DME1_dist
}
}
Var 0031, name calc_spd_DME2 // affiche la vitesse DME2 en kt
{
IF &swap_DME = 0
{
&speed_DME_d = &calc_spd_DME2
}
ELSE
{
&speed_DME_d = &calc_spd_DME1
}
}
Var 0032, name DME2_speed, Link FSUIPC_IN, Offset $0308, Length 2 // vitesse DME2 en kts*10
{
L0 = &DME2_speed / 10
&calc_spd_DME2 = L0
}
Var 0033, name calc_time_DME2
{
IF &swap_DME = 0
{
&time_DME_d = &calc_time_DME2
}
ELSE
{
&speed_DME_d = &calc_time_DME1
}
}
Var 0034, name DME2_time, Link FSUIPC_IN, Offset $030A, Length 2 // affiche time to station DME2 en sec*10
{
L0 = &DME2_time / 600 // time to station en minutes
&calc_time_DME2 = TRUNC L0
}
Les calculs de temps, de vitesse et de distance fonctionnent bien.
Mon problème arrive quand je veux les transférer aux displays 7 digits: j'ai un résultat aléatoire qui passe, sans discontinuer de la DME1 à la DME2. Cela est dû, je m'en doute à l'utilisation et la position des conditions "IF" et "ELSE" dans le code. Il faudrait peut-être utiliser des "SUBRUTINE", mais je ne vois pas comment les placer.
Quelqu'un peut-il m'aider?
Avec mes remerciements
Jean-Gilles
J'ai besoin d'aide :
voici mon code sioc :
Var 0000, Value 0
Var 0011, name swap_DME, Link IOCARD_SW, Input 48, // swicht passage DME1_DME2
Var 0012, name speed_DME_d, Link IOCARD_DISPLAY, Digit 14, Numbers 3 // sortie display speed
Var 0013, name dist_DME_d, Link IOCARD_DISPLAY, Digit 20, Numbers 3 // sortie display distance
Var 0014, name time_DME_d, Link IOCARD_DISPLAY, Digit 26, Numbers 3 // sortie display time
Var 0016, name DME1_dist, Link FSUIPC_IN, Offset $0300, Length 2 // distance DME1 en nm*10
{
IF &swap_DME = 0
{
&dist_DME_d = &DME1_dist
}
ELSE
{
&dist_DME_d = &DME2_dist
}
}
Var 0019, name calc_spd_DME1 // affiche la vitesse DME1 en kt
{
IF &swap_DME = 0
{
&speed_DME_d = &calc_spd_DME1
}
ELSE
{
&speed_DME_d = &calc_spd_DME2
}
}
Var 0020, name DME1_speed, Link FSUIPC_IN, Offset $0302, Length 2 // vitesse DME 1 en kts*10
{
L0 = &DME1_speed / 10
&calc_spd_DME1 = L0
}
Var 0024, name calc_time_DME1
{
IF &swap_DME = 0
{
&time_DME_d = &calc_time_DME1
}
ELSE
{
&speed_DME_d = &calc_time_DME2
}
}
Var 0025, name DME1_time, Link FSUIPC_IN, Offset $0304, Length 2 // time to station DME1 en sec*10
{
L0 = &DME1_time / 600 // time to station en minutes
&calc_time_DME1 = TRUNC L0
}
// ****************************************************************
Var 0030, name DME2_dist, Link FSUIPC_IN, Offset $0306, Length 2 // distance DME2*10
{
IF &swap_DME = 0
{
&dist_DME_d = &DME2_dist
}
ELSE
{
&dist_DME_d = &DME1_dist
}
}
Var 0031, name calc_spd_DME2 // affiche la vitesse DME2 en kt
{
IF &swap_DME = 0
{
&speed_DME_d = &calc_spd_DME2
}
ELSE
{
&speed_DME_d = &calc_spd_DME1
}
}
Var 0032, name DME2_speed, Link FSUIPC_IN, Offset $0308, Length 2 // vitesse DME2 en kts*10
{
L0 = &DME2_speed / 10
&calc_spd_DME2 = L0
}
Var 0033, name calc_time_DME2
{
IF &swap_DME = 0
{
&time_DME_d = &calc_time_DME2
}
ELSE
{
&speed_DME_d = &calc_time_DME1
}
}
Var 0034, name DME2_time, Link FSUIPC_IN, Offset $030A, Length 2 // affiche time to station DME2 en sec*10
{
L0 = &DME2_time / 600 // time to station en minutes
&calc_time_DME2 = TRUNC L0
}
Les calculs de temps, de vitesse et de distance fonctionnent bien.
Mon problème arrive quand je veux les transférer aux displays 7 digits: j'ai un résultat aléatoire qui passe, sans discontinuer de la DME1 à la DME2. Cela est dû, je m'en doute à l'utilisation et la position des conditions "IF" et "ELSE" dans le code. Il faudrait peut-être utiliser des "SUBRUTINE", mais je ne vois pas comment les placer.
Quelqu'un peut-il m'aider?
Avec mes remerciements
Jean-Gilles