Ecriture d'offset en bit dans SIOC

Questions de programmation / Offset FSUIPC et IOCP

Ecriture d'offset en bit dans SIOC

Messagede bebert » Mar 15 Jan 2013 14:04

bonjour,

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

3122 2^3 ( ident radio )

comment l'ecrire dans le programme SIOC ?


merki
Dernière édition par bebert le Ven 18 Jan 2013 21:06, édité 1 fois.
Image
Avatar de l’utilisateur
bebert
 
Messages: 347
Inscription: 8/10/09

Re: Ecriture offset dans sioc

Messagede chtipilot » Mer 16 Jan 2013 07:54

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
  }
}
Chtipilot Image

Image
Avatar de l’utilisateur
chtipilot
 
Messages: 371
Inscription: 2/04/11
Localisation: Lille (Nord)

Re: Ecriture offset dans sioc

Messagede bebert » Mer 16 Jan 2013 12:03

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 ???
Image
Avatar de l’utilisateur
bebert
 
Messages: 347
Inscription: 8/10/09

Re: Ecriture offset dans sioc

Messagede bebert » Mer 16 Jan 2013 12:16

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
Image
Avatar de l’utilisateur
bebert
 
Messages: 347
Inscription: 8/10/09

Re: Ecriture offset dans sioc

Messagede stevelep » Mer 16 Jan 2013 13:54

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
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Ecriture offset dans sioc

Messagede bebert » Ven 18 Jan 2013 18:48

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
Image
Avatar de l’utilisateur
bebert
 
Messages: 347
Inscription: 8/10/09

Re: Ecriture offset dans sioc

Messagede stevelep » Ven 18 Jan 2013 20:25

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
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Ecriture offset dans sioc

Messagede bebert » Ven 18 Jan 2013 21:06

merci pour la reponse

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

merci affiche merci affiche
Image
Avatar de l’utilisateur
bebert
 
Messages: 347
Inscription: 8/10/09

Re: Ecriture offset dans sioc

Messagede stevelep » Ven 18 Jan 2013 23:14

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
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Ecriture offset dans sioc

Messagede bebert » Ven 18 Jan 2013 23:24

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
Image
Avatar de l’utilisateur
bebert
 
Messages: 347
Inscription: 8/10/09


Retourner vers Programmation Sioc





Qui est en ligne

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