Page 1 sur 1

Ecriture d'offset en bit dans SIOC

MessagePosté: Mar 15 Jan 2013 14:04
de bebert
bonjour,

certain offset de fsuipc on plusieurs sous- numero , exemple:

3122 2^3 ( ident radio )

comment l'ecrire dans le programme SIOC ?


merki

Re: Ecriture offset dans sioc

MessagePosté: Mer 16 Jan 2013 07:54
de chtipilot
Hello Béber,

On peut "tester","mettre à zéro", "mettre à 1" un bit particulier d'un offset avec les commandes TESTBIT, CLEARBIT, SETBIT.
Dans l'exemple ci-dessous on teste les bit 6 et 7 et en fonction de la valeur on affecte à la variable locale "&COM_Memo" le n° de la COM en service.

Tu sauras adapter cela à ta prog cligneoeil .

Cordialement,
Chtipilot

Code: Tout sélectionner
Var 0160, name FSI_COM_Select, Link FSUIPC_IN, Offset $3122, Length 1     // FS Select: 2^7=COM1 2^6=COM2
{
  C0 = TESTBIT &FSI_COM_Select ,7 // test bit 7 offset $3122
  C1 = TESTBIT &FSI_COM_Select ,6 // test bit 6 offset $3122
  IF C0   
  {
    &COM_Memo = 1  // COM1 
  }
  IF C1   
  {
    &COM_Memo = 2  // COM2
  }
}

Re: Ecriture offset dans sioc

MessagePosté: Mer 16 Jan 2013 12:03
de bebert
merci pour ta reponse. merci affiche

toutefois je n'utilise pas le fichier texte pour faire mes codes, je le fais directement sur SIOC via CONFIG _SIOC ( c'est plus simple pour moi .

et donc je n'arrive pas a mettre les valeurs que tu viens de me donner .

a moins que la seule solution c'est de passer par le texte ???

Re: Ecriture offset dans sioc

MessagePosté: Mer 16 Jan 2013 12:16
de bebert
arf je viens de trouver lolaffiche

toutefois j'aimerais mettre tout les idents mais cela s'arrete a C2 ?????

pour info je n'utilise SIOC que pour les OUTPUTS !!!! , je ne fais pas d'input

Re: Ecriture offset dans sioc

MessagePosté: Mer 16 Jan 2013 13:54
de stevelep
Le code donné par Chtipilot est un exemple, tu ne l'utiliseras sûrement pas dans ton cockpit !!!

Cette notation est utilisée pour des variables à multibits, c'est à dire qu'au lieu d'utiliser 6 offsets
différents pour les 6 lampes de l'avion, on a tous réunis sous la même variable en assignant un bit
pour chaque lampe. C'est du binaire. En décimal c'est comme si on disait que les unités étaient le
bit 1, les dizaine le bit 2, les centaine le bit 3, donc si la variable vaut "101" le bit 1 et 3 sont on
et le 2ème est off.

Voila pour l'explication. Pour le SIOC on ne peux pas utiliser la valeur décimale de cette variable.
mais il faut lire/écrire uniquement le bit désiré.

Pour lire un bit on utilise la fonction TESTBIT

&valeur = TESTBIT &light 3

la variable &valeur va prendre la valeur du 3ème bit de la variable light

Pour écrire un bit on peux utiliser SETBIT, CLEARBIT, CHANGEBIT et CHANGEBITN

&light = SETBIT 4

met un 1 au 4ème bit de la variable &light

&light = CLEARBIT 4

met un 0

Les fonction CHANGEBIT et CHANGEBITN sont très utiles, elle permettent de donner la valeur d'une
variable à un bit d'une autre variable.
Typiquement un switch "taxi light", tu veux que la valeur de la variable de ton switch (1 ou 0)
commande le bit n°3 de &light qui correspond au taxi light.

&light = CHANGEBIT 3 &switch_taxi

tu mets ce code sous la variable du switch et comme ça le switch écrit dans le 3ème bit de &light

CHANGEBITN c'est la même chose mais si ton inter est câblé inversé (0=on 1=off)

Voila

BOB

Re: Ecriture offset dans sioc

MessagePosté: Ven 18 Jan 2013 18:48
de bebert
merci bob

mais comment ecrire ca sous sioc sans passer par le texte , car je souhaite allumer les leds des ident selectionné ???

CO, C1, C2 fonctionne nikel , mais j'ai 6 voyant ident a faire allumer ?

peux tu preciser ?

merci affiche

Re: Ecriture offset dans sioc

MessagePosté: Ven 18 Jan 2013 20:25
de stevelep
Il ne faut pas utiliser de variables logiques C0, C1 etc ...

Sous la variable &intercom liée à l'offset FSUIPC de l'intercom tu mets


Var xxxx, name intercom, Link FSUIPC_IN, Offset $3122, Length 1
{
&led_com1 = TESTBIT &intercom 7
&led_com2 = TESTBIT &lintercom 6
&led_nav1 = TESTBIT &intercom 4
etc
etc
etc

}
etc tu les mets tous à la suite

Tu peux faire ça dans CONFIGSIOC, pas besoin de IF de C0 ... juste LED = TESTBIT

Bits allocated as follows:

7 = COM1 Transmit
6 = COM2 transmit
5 = COM receive both
4 = NAV1 sound
3 = NAV2 sound
2 = Marker sound
1 = DME sound
0 = ADF sound

Re: Ecriture offset dans sioc

MessagePosté: Ven 18 Jan 2013 21:06
de bebert
merci pour la reponse

je viens de rentrer le code et cela marche tres bien !!!!!

merci affiche merci affiche

Re: Ecriture offset dans sioc

MessagePosté: Ven 18 Jan 2013 23:14
de stevelep
Super ! Tu vois c'est plus simple qu'on croit !

Peux tu exporter en txt et copier le bout de code dans ce post pour les autres membres intéressés .

Merci

BOB

Re: Ecriture offset dans sioc

MessagePosté: Ven 18 Jan 2013 23:24
de bebert
le voici et encore merci

Code: Tout sélectionner

Var 0120, name IDENT_FS, Link FSUIPC_INOUT, Offset $3122, Length 1     // ident radio
{
  &LED_COM_1 = TESTBIT &IDENT_FS ,7
  &LED_COM_2 = TESTBIT &IDENT_FS ,6
  &LED_NAV_1 = TESTBIT &IDENT_FS ,4
  &LED_NAV_2 = TESTBIT &IDENT_FS ,3
  &LED_ADF = TESTBIT &IDENT_FS ,0
  &LED_DME = TESTBIT &IDENT_FS ,1
}

Var 0121, name LED_COM_1, Link IOCARD_OUT, Output 1     // led ident com 1

Var 0122, name LED_COM_2, Link IOCARD_OUT, Output 2     // led com 2

Var 0123, name LED_NAV_1, Link IOCARD_OUT, Output 3     // nav 1

Var 0124, name LED_NAV_2, Link IOCARD_OUT, Output 4     // nav 2

Var 0125, name LED_ADF, Link IOCARD_OUT, Output 5     //  adf

Var 0126, name LED_DME, Link IOCARD_OUT, Output 6     // dme