Page 1 sur 2

j'ai un problème

MessagePosté: Lun 13 Sep 2021 19:56
de trajector
Bonjour à tous,

je m'adresse plus particulièrement aux utilisateurs de sioc.
Pour mon baron j'avais déjà concocté des petits programmes
qui fonctionnaient bien en indépendants.
Il s'agit maintenant des les mettre en commun pour faire fonctionner
mon simulateur "Mon Baron" et c'est là que le bât blesse.

Voici en image, entourer de rouge, le non fonctionnement:

Image

tout fonctionne jusqu'à la Var 14, dans le IOCP, mais l'allumage de la Led
ne se fait pas.

Pourquoi?

Pour plus de compréhension pour les avertis, voici l'embryon de mon code:

Code: Tout sélectionner
// *****************************************************************************
// * Config_SIOC ver 5.1   -     By Manuel Velez    -    www.opencockpits.com
// *****************************************************************************
// * FileName : Baron_58_perso.txt
// * Date : 13/09/2021



Var 0000, name init, Value 0     // initialisation

Var 0001, name courant, Value 0     // courant g_n_ral

Var 0002, name fs_bat, Link FSUIPC_INOUT, Offset $3102, Length 1     // batterie FS
{
  &fs_bat = &sw_batt   
}

Var 0003, name sw_batt, Link IOCARD_SW, Input 126     // Inter batterie
{
  &fs_bat = &sw_batt   
  CALL &sub_courant
}

Var 0004, name disp, Link IOCARD_DISPLAY, Digit 5, Numbers 3     // pour debug

Var 0005, name fs_gen1, Link FSUIPC_INOUT, Offset $3B78, Length 4     // fs_gen1
{
  &fs_gen1 = &sw_gen1   
}

Var 0006, name sw_gen1, Link IOCARD_SW, Input 136     // inter génératrice 1
{
  &fs_gen1 = &sw_gen1   
  CALL &sub_courant
}

Var 0007, name fs_gen2, Link FSUIPC_INOUT, Offset $3AB8, Length 4     // fs_gen2
{
  &fs_gen2 = &sw_gen2   
}

Var 0008, name sw_gen2, Link IOCARD_SW, Input 131     // inter génératrice 2
{
  &fs_gen2 = &sw_gen2   
  CALL &sub_courant
}

Var 0009, name RPM_mot_1, Link FSUIPC_IN, Offset $0898, Length 2     // Tours moteur 1
{
  CALL &sub_courant
}

Var 0010, name RPM_mot_2, Link FSUIPC_IN, Offset $0930, Length 2     // Tours moteur 2
{
  CALL &sub_courant
}

Var 0011, name sub_courant, Link SUBRUTINE     // détermine si courant d'après tension bus
{
  IF   = 2800     // au moins si une génértrice fonctionne
  {
    &courant = 1         // le courant est ON...
  }
  ELSE
  {
    IF &fs_bat = 1     // si inter batterie ON
    {
      IF &temp_batt > 1680     // si tension suffisante     
      {
        &courant = 1         // le courant est ON...
      }
    }
    ELSE
    {
      &courant = 0         // le courant est OFF
    }
  }
}

Var 0014, name fs_batt_volt, Link FSUIPC_IN, Offset $2840, Length 8, Numbers 2
{
  &temp_batt = &fs_batt_volt   
}

Var 0016, name temp_batt

Var 0017, name led
{
  IF &courant = 1
  {
    &led = 1   
  }
  ELSE
  {
    &led = 0   
  }
}


Merci pour votre aide

Jean-Gilles

Re: j'ai un problème

MessagePosté: Lun 13 Sep 2021 22:08
de A320 hérétique
Bonjour Jean-Gilles,
Bizarre, ton code ... (par exemple, if = 2800)

Pour ce qui concerne ta variable led, je ne comprends pas ce que tu cherches à faire : voilà un bout de code (après la déclaration de variable) qui est sensé s'exécuter si la variable led change de valeur, alors qu'elle n'est reliée à rien , et qu'aucun autre bout de code ne vient modifier ??? Il ne se passera jamais rien !

Michel

Re: j'ai un problème

MessagePosté: Mar 14 Sep 2021 07:39
de fab
Bonjour,

Michel à mis le doigt dessus : tu mets du code derrière une variable qui ne change pas, à part, par elle même...

En général, ce n'est pas une bonne idée de mettre du code derrière une variable liée à une sortie.

Le "if = 2800" est pour moi aussi très étrange... gratgrat

Fabien

Re: j'ai un problème

MessagePosté: Mar 14 Sep 2021 08:50
de tabar57
Bonjour à tous,

Oui, tout est dit par Michel et Fab c'est le concept de programmation Sioc qu'il faut revoir

Bernard

Re: j'ai un problème

MessagePosté: Mar 14 Sep 2021 10:23
de trajector
Bonjours à tous,

merci de prendre mon problème en considération.
Pour information, le bout de programme, de la ligne 0 à 16
est emprunté au code du baron 58 des deux Pierre.
Il fonctionne bien, car dans sa mise en service avec FSX la
variable 2 me donne bien courant=1.

Ce que je souhaite c'est d'allumer des leds des alarmes "LT ALTR"
"RT ALTR" lorsqu'il y a du courant.
bien entendu, ces leds sont reliées à un output.

J'ai essayer de comprendre ce que disait stevelep à Kelt760 en Mars 2008

SIOC est orienté évènement -> pas d'événement pas d'exécution de code.
il faut donc que les IF qui contienne une variable soit
- dans le code dessous la variable
- dans une subroutine, lancée par la variable
- dans une variable de temps (fs_secondes)

sinon le code n'est jamais exécuté...


C'est cela que j'ai du mal à mettre en application

Jean-Gilles

Re: j'ai un problème

MessagePosté: Mar 14 Sep 2021 11:47
de fab
trajector a écrit:
../..
Ce que je souhaite c'est d'allumer des leds des alarmes "LT ALTR"
"RT ALTR" lorsqu'il y a du courant.
bien entendu, ces leds sont reliées à un output.
../..



Et bien tu mets ton code d'allumage de LED dans la variable qui représente le "courant".

Re: j'ai un problème

MessagePosté: Mar 14 Sep 2021 11:55
de A320 hérétique
Bonjour,

1) tu déclares la variable led en la liant à la sortie correspondante de la carte
2) dans le script de la variable qui représente le courant, tu y mets le code qui modifie la valeur de led en fonction de la valeur du courant : ce code s'exécutera à chaque fois que la valeur du courant changera.

Je te recommande d'essayer de faire fonctionner ce petit programme tout seul, sans le mélanger avec autre chose.
Quand au code des 2 Pierre, tu as dû l'abimer, car en l'état je pense qu'il n'est même pas compilable.

Michel

Oups, doublon, pardon Fabien !

Re: j'ai un problème

MessagePosté: Mar 14 Sep 2021 12:17
de fab
Pas de problème !

Par contre, cela à l'air d'être compilable, on le voit dans sa copie d'écran :
Image

étrange gratgrat

Re: j'ai un problème

MessagePosté: Mar 14 Sep 2021 12:20
de fab
Je viens de tester, c'est en effet pas compilable nondoightblanc

Réponse du compilateur SIOC :

ERROR! -
Line: 67 IF = 2800 // AU MOINS SI UNE GéNéRTRICE FONCTIONNE
==> =
%FAILED%
* COMPILATION ERROR*


Je ne sais pas comment tu as pu produire ce script avec "if =2800" yeuxhaut

Re: j'ai un problème

MessagePosté: Mar 14 Sep 2021 13:49
de pierre01
Bonjour Jean-Gilles et à tous,

Il y a longtemps que je n'ai pas mis le nez dans SIOC ...
Je vais m'y replonger pour regarder ton Pb, mais effectivement il doit y avoir un "loup" quelque part !

Notre code (que a beaucoup évolué) fonctionne correctement.
Les 2800 viennent de l'offset "bus volt" et qui représente les 28V batterie (x100).
Si tu veux je peux t'envoyer la dernière version, à toi de l'adapter bien sûr (écrite avec NotePad++).