Problème avec code GEARS

Questions de programmation / Offset FSUIPC et IOCP

Problème avec code GEARS

Messagede ijack30 » Mer 9 Nov 2011 02:19

Bonjour

Je suis a travailler sur le code de mon train de mon Baron 58
J'ai pris quelque bout de code par ci et par la, je n'ai donc pas réinventer la roue, étant donné qu'elle tourne déja.
Par contre, (j'ai surement mal cherché), je n'ai pas trouvé de code qui prend en compte la position de l'interupteur Batterie. En effet, si batterie = off, les lumières sont éteintes.

Voici un bout de mon code, partie pour le train avant..

Var 0129, name GEAR, Link FSUIPC_INOUT, Offset $0BE8, Length 4 // Control train d'atterrissage

Var 0700, name GEAR_TRANS_LED, Link IOCARD_OUT, Output 11 // LED rouge train en transit
Var 0701, name GEAR_NOSE_LED, Link IOCARD_OUT, Output 12 // LED train avant
Var 0702, name GEAR_R_LED, Link IOCARD_OUT, Output 13 // LED train droit
Var 0703, name GEAR_L_LED, Link IOCARD_OUT, Output 14 // LED train gauche
Var 0130, name GEAR_SW, Link IOCARD_SW, Input 26 // inter manette train
{
&GEAR = &GEAR_SW * 16383
}

Var 0131, name NOSE_GEAR_POS, Link FSUIPC_IN, Offset $0BEC, Length 4 // Position du train avant
{
IF &BATT_SW = 0
{
&GEAR_NOSE_LED = 0
&GEAR_TRANS_LED = 0
}
ELSE
{
IF &NOSE_GEAR_POS = 16383
{
&GEAR_NOSE_LED = 1
&GEAR_TRANS_LED = 0
}
ELSE
{
IF &NOSE_GEAR_POS >= 1
{
&GEAR_NOSE_LED = 0
&GEAR_TRANS_LED = 1
}
ELSE
{
IF &NOSE_GEAR_POS = 0
{
&GEAR_NOSE_LED = 0
&GEAR_TRANS_LED = 0
}
}
}
}
}

Puis je continue avec le train droit.. gauche...
Et bien la condition première qui est la position de la batterie ne fonctionne pas, les LEDS restent alumées.
Je dois préciser que la variable Batt_sw est deja mentionnée en debut de code.

Qu'est-ce qui ne fonctionne pas dans mon code ? Merci pour vos précieuses lunmières
ijack30
 
Messages: 78
Inscription: 2/02/11
Localisation: Québec

Re: Problème avec code GEARS

Messagede Ptitgars45 » Mer 9 Nov 2011 09:12

En cas de changement de position de ton interrupteur BATT par exemple ????
C'est normal, il faut également mettre une ligne dans ta variable BATT pour quelle puisse éteindre tes Leds. Car dans ton cas actuel, seul la variable NOSE_GEAR_POS peut faire allumer ou éteindre les Leds !!!!
J’espère avoir été assez clair gratgrat gratgrat gratgrat !!!
Matthieu
Image Image Image
Avatar de l’utilisateur
Ptitgars45
 
Messages: 225
Inscription: 25/09/11
Localisation: Orange (LFMO)

Re: Problème avec code GEARS

Messagede worldhugo » Mer 9 Nov 2011 09:40

Salut salut,
je te donne l'adresse du code (complet et fonctionnel) de mon ancien simulateur, la partie que tu veux est dispercé, mais les noms des variables sont (je pense) explicite -> http://worldcockpit.netai.net/dernier.php rigolus

A+ et bon courage

Hugo
worldhugo
 
Messages: 279
Inscription: 28/03/10
Localisation: Reims 51100

Re: Problème avec code GEARS

Messagede stevelep » Mer 9 Nov 2011 18:59

Il faut pas prendre l'inter batterie mais la tension du mainbus, ce qui est plus réaliste car cela
reflète réellement s'il y a du courant ou pas dans le système.

Var 7338, name fs_mbusvolt, Link FSUIPC_IN, Offset $2840, Length 8, Numbers 2 // Main Bus Voltage
{
IF &fs_mbusvolt > 1700
{
&fs_mbus = 1
}
ELSE
{
&fs_mbus = 0
}
}

Var 7340, name fs_mbus // 1 if mainbus on


Ici je teste s'il y a plus que 17 volts sur le bus car c'est en dessous de cette tension que tout s'éteint
dans FS. Je commande ensuite une variable &fs_mbus plus simple qui prend les valeurs 0 ou 1

Voila

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Problème avec code GEARS

Messagede ijack30 » Mer 9 Nov 2011 21:13

Super.. Merci BOB, je vais essayer cela.

Je suppose que c'est cette variable que je devrais rajouter pour toute les lumières du cockpit.

Excellent, je t'en redonne des nouvelles aussitôt que possible.
L'emplacement de ton bout de scipt a une importance ?
tout au début ou n'importe où ?

Encore merci affiche
ijack30
 
Messages: 78
Inscription: 2/02/11
Localisation: Québec

Re: Problème avec code GEARS

Messagede ijack30 » Jeu 10 Nov 2011 04:57

stevelep a écrit:Il faut pas prendre l'inter batterie mais la tension du mainbus, ce qui est plus réaliste car cela
reflète réellement s'il y a du courant ou pas dans le système.

Var 7338, name fs_mbusvolt, Link FSUIPC_IN, Offset $2840, Length 8, Numbers 2 // Main Bus Voltage
{
IF &fs_mbusvolt > 1700
{
&fs_mbus = 1
}
ELSE
{
&fs_mbus = 0
}
}

Var 7340, name fs_mbus // 1 if mainbus on


Ici je teste s'il y a plus que 17 volts sur le bus car c'est en dessous de cette tension que tout s'éteint
dans FS. Je commande ensuite une variable &fs_mbus plus simple qui prend les valeurs 0 ou 1

Voila

BOB


Bien, avec cette variable, j'ai bien 24V en partant la batterie switch. Donc fs_mbus passe de 0 a 1. Ok, mais je n'arrive pas rajouter cette condition a mon script de GEAR...
La, je sais plus .. Help.. murrouge

Le script gear fonctionne tres bien, et les lumoieres changent d'etat comme il le faut, mais si je n'ai pas de voltage, elles sont tout de meme ON au demarrage par exemple, avant tout. Aussitot SIOC chargé, les LEDS sont ON.
Je comprends plus,.
ijack30
 
Messages: 78
Inscription: 2/02/11
Localisation: Québec

Re: Problème avec code GEARS

Messagede stevelep » Jeu 10 Nov 2011 13:08

Pas de panique ... le SIOC demande de la patience pour permettre de découvrir toutes les astuces
et de complexifier son script au fur et à mesure de ta progression.

Comme dans ton cockpit toutes les LED vont être asservie à la présence de courant dans le mainbus
en plus de leur condition d'allumage, il te faut utiliser une subroutine. C'est à dire une variable
centralisée pour la gestion des lampes.
C'est à dire que dans ton/tes différentes parties de script tu vas définir la/les conditions d'allumage
de tes lampes (ici la position du train) et tu va directement appeler une subroutine (CALL) qui elle va allumer ou
éteindre la lampe suivant le courant mainbus.
Cela va centraliser la gestion de tes lampes.

Pour t'expliquer le principe, il faut utiliser 2 variable différentes pour chaque lampe:
une variable indépendante de "valeur" de la lampe ex: &lval_gear
une variable output, la vrai lampe. &led_gear

Dans ton script de GEAR tu définis les conditions d'allumage puis tu CALL la subroutine ledsystem
ex:
IF &gear > 3000
&lval_gear = 1
ELSE
&lval_gear = 0

CALL &ledsystem

Ensuite c'est dans cette subroutine que tu mets le courant du mainbus

Var xxx, name ledsystem, Link SUBRUTINE

IF &fs_mbus = 1
&led_gear = &lval_gear
ELSE
&led_gear = 0

Si il y a du courant la variable led prend la valeur de la variable "valeur"
Si il y a pas de courant elle est éteinte.

Il faut pas oublier de mettre aussi un CALL dans la variable &fs_mainbus
Pour que si le courant se coupe cela revoie à la subroutine pour éteindre les lampes ...

Voila

BOB

PS j'ai pas mis les { } dans les exemples, tu peux pas les utilser comme
ça ...
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Problème avec code GEARS

Messagede stevelep » Jeu 10 Nov 2011 13:14

Re-Hello

Quand à ton code, il y a plusieurs erreurs ...

Var 0131, name NOSE_GEAR_POS, Link FSUIPC_IN, Offset $0BEC, Length 4 // Position du train avant
{
IF &BATT_SW = 0
{
&GEAR_NOSE_LED = 0
&GEAR_TRANS_LED = 0
}
ELSE
{
IF &NOSE_GEAR_POS = 16383
{
&GEAR_NOSE_LED = 1
&GEAR_TRANS_LED = 0
}
ELSE
{
IF &NOSE_GEAR_POS >= 1
{
&GEAR_NOSE_LED = 0
&GEAR_TRANS_LED = 1
}
ELSE
{
IF &NOSE_GEAR_POS = 0
{
&GEAR_NOSE_LED = 0
&GEAR_TRANS_LED = 0
}
}
}
}
}


Tu peux beaucoup le simnplifier.

Il faut déjà que tu nous dise quand s'allume la led NOSE et la led TRANS
(quelles sont les valeurs où les led sont allumée ou éteinte)
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Problème avec code GEARS

Messagede ijack30 » Jeu 10 Nov 2011 16:29

Merci BOB pour ton support. Ok, va pour la subroutine.. je suis pas difficile moi, on me dit quoi faire et je le fais. Maintenant, faut essayer de le faire !
Je vais essayer de comprendre en lisant le scripts déjà tout fait, faisant appelle a des subroutines.
ijack30
 
Messages: 78
Inscription: 2/02/11
Localisation: Québec

Re: Problème avec code GEARS

Messagede stevelep » Ven 11 Nov 2011 01:08

Il te faut simplifier ton code:

Ta led NOSE s'allume à 16383 en dessous elle est éteinte:

Tu peux coder cela en 1 ligne sans IF ELSE :

&GEAR_NOSE_LED = &NOSE_GEAR_POS - 16382

C'est des maths si la variable vaut 16383 -> 16383-16382 = 1 led allumée
si plus petit que 16383 nombre = 0 ou négatif la led est éteinte.

Ta led TRANS s'allume entre 1 et 16382

tu peux coder cela comme ça:

C0 = &NOSE_GEAR_POS > 0
C1 = &NOSE_GEAR_POS < 16383

IF C0 AND C1
&GEAR_TRANS_LED = 1
ELSE
&GEAR_TRANS_LED = 0


En résume tu peux remplacer tes 30 lignes de code par cela:

Var 0131, name NOSE_GEAR_POS, Link FSUIPC_IN, Offset $0BEC, Length 4
{
&GEAR_NOSE_LED = &NOSE_GEAR_POS - 16382

C0 = &NOSE_GEAR_POS > 0
C1 = &NOSE_GEAR_POS < 16383
IF C0 AND C1
{
&GEAR_TRANS_LED = 1
}
ELSE
{
&GEAR_TRANS_LED = 0
}
}

C'est tout

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

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