Y'a un truc que je pige pas dans le SIOC

Questions de programmation / Offset FSUIPC et IOCP

Y'a un truc que je pige pas dans le SIOC

Messagede FiX » Jeu 1 Mar 2012 23:25

Y'a un principe que je comprends pas dans le SIOC:
Un exemple: un code tout bête de parking break.
La partie switch fonctionne, c'est pour les leds que je pige pas:

Pourquoi ce code fonctionne t-il:

Code: Tout sélectionner
Var 0165, name Parking, Link FSUIPC_INOUT, Offset $0BC8, Length 2     // parking brake
{
  IF &Parking = 32767
  {
    &Parking_led = 1   
  }
  ELSE
  {
    &Parking_led = 0   
  }
}

Var 0166, name Parking_sw, Link IOCARD_SW, Input 23
{
  IF &Parking_sw = 1
  {
    &Parking = 32767   
  }
  ELSE
  {
    &Parking = 0   
  }
}

Var 0167, name Parking_led, Link IOCARD_OUT, Output 24     // Voyant de parking brake


Alors que celui-là ne fonctionne pas:


Code: Tout sélectionner
Var 0165, name Parking, Link FSUIPC_INOUT, Offset $0BC8, Length 2     // parking brake

Var 0166, name Parking_sw, Link IOCARD_SW, Input 23
{
  IF &Parking_sw = 1
  {
    &Parking = 32767   
  }
  ELSE
  {
    &Parking = 0   
  }
}

Var 0167, name Parking_led, Link IOCARD_OUT, Output 24     // Voyant de parking brake
{
  IF &Parking = 32767
  {
    &Parking_led = 1   
  }
  ELSE
  {
    &Parking_led = 0   
  }
}



Pourquoi le simple fait de positionner la partie du code sur le voyant au dessus du code du switch change quelque chose?
Je ne comprends pas pourquoi l'ordre intervient puisque de toute façon tout est lu. gratgrat
Dernière édition par FiX le Sam 3 Mar 2012 00:09, édité 1 fois.
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4668
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Y'a un truc que je pige pas dans le SIOC

Messagede Ptitgars45 » Ven 2 Mar 2012 00:08

La règle du "qui commande" Fix !!!!!!!!!!!!!!!!!

C'est le mouvement de ton inter et/ou de FSUIPC qui commande ta Led, et non pas la Led qui se commande elle-même ecroulerire ecroulerire ecroulerire

Une fois que tu sais "qui commande", en gros change de valeur lors d'un appui su rune touche, alors tu as tout compris dans le SIOC !!!!

En espérant t'avoir aidé... yeuxhaut
Matthieu
Image Image Image
Avatar de l’utilisateur
Ptitgars45
 
Messages: 225
Inscription: 25/09/11
Localisation: Orange (LFMO)

Re: Y'a un truc que je pige pas dans le SIOC

Messagede jéjé07 » Ven 2 Mar 2012 11:39

salut essai celui là
Var 0001, Link FSUIPC_INOUT, Offset $0BC8, Length 2 // parking brake

Var 0002, Link IOCARD_SW, Input 10
{
IF V0002 = 1
{
V0001 = 32767
V0003 = 1
}
ELSE
{
V0001 = 0
V0003 = 0
}
}

Var 0003, Link IOCARD_OUT, Output 20
jéjé07
 

Re: Y'a un truc que je pige pas dans le SIOC

Messagede FiX » Ven 2 Mar 2012 11:49

Ptitgars45 a écrit:La règle du "qui commande" Fix !!!!!!!!!!!!!!!!!

C'est le mouvement de ton inter et/ou de FSUIPC qui commande ta Led, et non pas la Led qui se commande elle-même ecroulerire ecroulerire ecroulerire

Une fois que tu sais "qui commande", en gros change de valeur lors d'un appui su rune touche, alors tu as tout compris dans le SIOC !!!!

En espérant t'avoir aidé... yeuxhaut



Non, j'y comprends rien du tout.
Je ne vois pas pourquoi le fait de passer la commande de led au dessus ou en dessous de la variable déclarée change quelque chose, alors que pour un switch ça ne change rien du tout.

C'est le mouvement de ton inter et/ou de FSUIPC qui commande ta Led, et non pas la Led qui se commande elle-même

Oui, ça je suis bien d'accord, mais là la led ne se commande pas elle même. C'est FSUIPC qui la commande (ça vient d'fs), dans le code que j'ai mis (qui sont exactement les 2 mêmes) c'est l'offset FSUIPC du parking brake qui commande la led.
La seule différence entre ces 2 codes c'est que dans un cas j'ai mis la commande en dessous de la variable $parking brake alors que dans l'autre cas j'ai mis la commande en dessous de la variabale $parking_led (ce qui me semblait plus logique d'un point de vue lecture).
Le premier fonctionne, pas le deuxième.
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4668
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Y'a un truc que je pige pas dans le SIOC

Messagede FiX » Ven 2 Mar 2012 11:53

jéjé07 a écrit:salut essai celui là
Var 0001, Link FSUIPC_INOUT, Offset $0BC8, Length 2 // parking brake

Var 0002, Link IOCARD_SW, Input 10
{
IF V0002 = 1
{
V0001 = 32767
V0003 = 1
}
ELSE
{
V0001 = 0
V0003 = 0
}
}

Var 0003, Link IOCARD_OUT, Output 20


Oui, ça marche, j'avais commencé par faire ça au début, mais le problème c'est que dans ce cas c'est le switch qui commande la led. Et moi je veux que ce soit bien l'état du parking brake dans FS qui commande la led.
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4668
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: Y'a un truc que je pige pas dans le SIOC

Messagede remont » Ven 2 Mar 2012 12:30

Ton premier code fonctionne donc le problème est résolu.
Pourquoi le deuxième ne fonctionne pas ?

Car SIOC fonctionne par évènements. Pour executer une procédure, il faut changer la variable de la procédure.

Pour le deuxième exemple :

Var 0167, name Parking_led, Link IOCARD_OUT, Output 24 // Voyant de parking brake
{
IF &Parking = 32767
{
&Parking_led = 1
}
ELSE
{
&Parking_led = 0
}
}

Tu aimerai déclencher la procédure de la variable 0167. Donc pour celà, il faut modifier sa valeur.
Donc question suivante : quelle ligne de commande modifier la variable 0167 ? Réponse : les lignes &Parking_led = 1/0 ... Donc à l'intérieur même de la procédure que tu cherches à déclencher. peurefrayé Ce n'est donc pas possible. gratgrat

SUis-je clair ? zzzzzzzz
Avatar de l’utilisateur
remont
 
Messages: 405
Inscription: 3/02/10
Localisation: France 95

Re: Y'a un truc que je pige pas dans le SIOC

Messagede tabar57 » Ven 2 Mar 2012 12:37

Tu peux aussi simplifier ainsi:

Var 0001, Link FSUIPC_INOUT, Offset $0BC8, Length 2 // parking brake
{
V0003 = V0001 * 1 // a chaque changement la led prend la valeur 0 ou 32767 et va s'allumer
}

Var 0002, Link IOCARD_SW, Input 10
{
IF V0002 = 1
{
V0001 = 32767
}
ELSE
{
V0001 = 0
}
}

Var 0003, Link IOCARD_OUT, Output 20



Cordialement


Bernard
Mon blog de construction : http://tabar57.blog4ever.com
Hémicockpit de Beechcraft B200 ( de FlightOne ) P3DV4.5 et 2 PC en réseau W7 64 bits et W10, cartes OC et FDbus, vibreur et yoke rdf de BFFsimulation, météo réelle asp4
Avatar de l’utilisateur
tabar57
 
Messages: 3653
Inscription: 29/12/10
Localisation: Dans ma cabine en Lorraine

Re: Y'a un truc que je pige pas dans le SIOC

Messagede Colibri » Ven 2 Mar 2012 12:46

Il a fallu que je réfléchisse longtemps mais je crois que j'ai pigé. Qu'on me corrige si ce n'est pas le cas.
Maintenant il faut que j'explique ce que j'ai compris .. gratgrat

Comme dit plus haut, ta LED dépend de la valeur de l'offset dans FS. Dans ton premier code, l'instruction concernant la LED trouve sa place dans la variable de cet offset. En cas de de changement de la valeur de l'offset -> action sur la LED

Dans ton deuxième code, l'instruction concernant ta LED est dans la variable de la LED, donc dépend d'elle-même. Mais comme une LED n'effectue aucune action, il n'y a forcément pas de réaction.

J'ai tout bon ? gratgrat
Vincent
Avatar de l’utilisateur
Colibri
 
Messages: 1456
Inscription: 13/05/09
Localisation: Guérande (44)

Re: Y'a un truc que je pige pas dans le SIOC

Messagede Colibri » Ven 2 Mar 2012 12:51

Tabar57 a écrit:
Code: Tout sélectionner
V0003 = V0001 * 1 // a chaque changement la led prend la valeur 0 ou 32767 et va s'allumer

çà je ne comprend pas du tout, par contre.
Pisque V0001 est égal à 0 ou à 32767, en disant V0003=V0001*1, V0003 sera aussi égal à 0 ou 32767, non ?
Or V0003 devrait être à 1 ou à 0 ...
Ou alors il suffit que V0003 soit différent de 0 pour que la led s'allume ? Mais dan ce cas pourquoi ne pas dire simplement V0003=V0001 ? Que change le *1 ?

Non capito gratgrat
Vincent
Avatar de l’utilisateur
Colibri
 
Messages: 1456
Inscription: 13/05/09
Localisation: Guérande (44)

Re: Y'a un truc que je pige pas dans le SIOC

Messagede FiX » Ven 2 Mar 2012 12:53

remont a écrit:Ton premier code fonctionne donc le problème est résolu.

Le problème n'était pas de faire un code qui fonctionne, juste de comprendre pourquoi le deuxième n'allait pas, et visiblement il y a un truc fondamental dans la logique du SIOC que je n'ai pas pigé.

Tu aimerai déclencher la procédure de la variable 0167. Donc pour celà, il faut modifier sa valeur.
Donc question suivante : quelle ligne de commande modifier la variable 0167 ? Réponse : les lignes &Parking_led = 1/0 ... Donc à l'intérieur même de la procédure que tu cherches à déclencher. Ce n'est donc pas possible.

SUis-je clair ?


Oui, je vois bien ce que tu veux dire.
Mais c'est justement ça qui me perturbe, puisque le SIOC est lu en boucle dès qu'il y a un changement d'état d'une variable, je ne comprends pas pourquoi l'ordre des commandes aurait une importance. Tout le code sera lu en boucle, il n'y a pas de début, pas de fin, donc pas vraiment d'ordre entre la commande et la déclaration de variable. Mettre la commande "au dessus" ou "en dessous" de la variable déclarée ne devrait pas affecter le code? gratgrat
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4668
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Suivante

Retourner vers Programmation Sioc





Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité