Page 1 sur 1
Ecriture d'offset en bit dans SIOC

Posté:
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

Posté:
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

.
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

Posté:
Mer 16 Jan 2013 12:03
de bebert
merci pour ta reponse.
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

Posté:
Mer 16 Jan 2013 12:16
de bebert
arf je viens de trouver
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

Posté:
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

Posté:
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 ?

Re: Ecriture offset dans sioc

Posté:
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

Posté:
Ven 18 Jan 2013 21:06
de bebert
merci pour la reponse
je viens de rentrer le code et cela marche tres bien !!!!!

Re: Ecriture offset dans sioc

Posté:
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

Posté:
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