Page 1 sur 1

programmation de l'ADF

MessagePosté: Mer 24 Mar 2010 23:39
de pascal737
voici ma programmation pour l'adf,
mais je ne suis pas capable d'allumer les digits, que dois je faire et comment le faire gratgrat
merci pascal 737
// *****************************************************************************
// * Opencockpits ADF - By Manolo Vélez - http://www.opencockpits.com
// *****************************************************************************
// * FileName : ADF_Definicion.txt

// DIGITS
Var 100, name D_ACTIVE, Link IOCARD_DISPLAY, Digit 0, Numbers 5
Var 102, name D_STANDBY, Link IOCARD_DISPLAY, Digit 5, Numbers 5
Var 104, name D_BRIGHT, Link IOCARD_DISPLAY, Digit 16, Numbers 3


// OUTPUTS
Var 200, name DECIMAL_A, Link IOCARD_OUT, Output 20
Var 202, name DECIMAL_S, Link IOCARD_OUT, Output 21
Var 204, name ACT_ADF, Link IOCARD_OUT, Output 22
Var 206, name ACT_ANT, Link IOCARD_OUT, Output 23
Var 208, name STB_ANT, Link IOCARD_OUT, Output 24
Var 210, name STB_ADF, Link IOCARD_OUT, Output 25


// ROTARY ENCODERS
Var 300, name E_INT, Link IOCARD_ENCODER, Input 0, Aceleration 1, Type 2
Var 302, name E_DEC, Link IOCARD_ENCODER, Input 4, Aceleration 1, Type 2

// SWITCHES
Var 400, name I_TFR, Link IOCARD_SW, Input 6
Var 402, name I_ANT, Link IOCARD_SW, Input 2
Var 404, name I_TONE, Link IOCARD_SW, Input 3

Re: programmation de l'ADF

MessagePosté: Jeu 25 Mar 2010 00:18
de stevelep
Ca c'est pas une programmation, c'est une définition de variables.

Si tu veux coder un adf en SIOC tu dois écrire toute les relations qu'il y a entre les variables et leurs actions respectives.

Cherche un exemple de code dans les forums d'Opencockpits.

BOB

PS tu as quoi comme ADF, un panel que tu as câblé toi même ou un module plug&play d'Opencockpits ?

Re: programmation de l'ADF

MessagePosté: Jeu 25 Mar 2010 01:18
de pascal737
j'ai un panel cablé moi meme de opencockpit
le montage n'est pas un probleme pour moi c'est la programmation ou je suis trés novice .
je ne sais pas s'il existe une programmation toute faite.
salut pascal737

Re: programmation de l'ADF

MessagePosté: Jeu 25 Mar 2010 05:25
de steph737
http://www.lekseecon.nl/downloads/ADF.zip à décortiquer pour s'en inspirer...

De toute façon, certaines fonctions de l' ADF ne sont pas reprises par FS (ANT, ...)

http://www.lekseecon.nl/howto.html pour des choses plus générales

Re: programmation de l'ADF

MessagePosté: Jeu 25 Mar 2010 13:54
de Kelt760
Bonjour,

j'ai repris et adapté l'ADF de Nico Kaan. Je vais bientôt mettre le code sur notre site ; je le poste ci-dessous.

La fréquence est réglée avec un double encodeur, pour les deux chiffres du haut et les deux du bas. Il y a un inter pour l'allumer ou l'éteindre indépendamment des autres appareils du stack radio.

Passe sur notre site pour voir comment intégrer ce morceau dans le reste de ton programme ( http://www.simubaron.fr/programmation_sioc.htm#modules ).

Voilà.

Désolé, les commentaires sont encore mélangés anglais et français.
Code: Tout sélectionner
//++++++++++++++++++++++++++++++++ ADF ++++++++++++++++++++++++++++++++++++///
//++++++++++++++++++++ Merci à Nico Kaan ++++++++++++++++++++
 

Var 2700 name X_ADF1High Link FSUIPC_INOUT Offset $034C Length 2
{
  L0 = FROMBCD &X_ADF1High
  IF &ADF1High <> L0           // block values coming from rotary
  {
    &ADF1High = L0
    &ADF1HighR = DIV &ADF1High 10
    CALL &CalcADF1LowR
    CALL &CalcADF1Freq
  }
}

Var 2701 name X_ADF1Low Link FSUIPC_INOUT Offset $0356 Length 2
{
  IF &X_ADF1Low <> &ADF1Low    // block values coming from rotary
  {
    &ADF1Low = &X_ADF1Low
    CALL &CalcADF1LowR
    CALL &CalcADF1Freq
  }
}

Var 2710 name ADF1High         // FSUIPC ADF value high: 3 digits
Var 2711 name ADF1Low          // FSUIPC ADF value: 1 digit
var 2712 name ADF1Freq         // total (needed for display): 4 digits

var 2713 name CalcADF1Freq Link Subrutine
{
  L0 = &ADF1High * 10          // high * 10
  &ADF1Freq = L0 + &ADF1Low    // + decimal
  CALL &affich_ADF
}

var 2715, name ADF_sw, link IOCARD_SW input 135
{
Call &affich_ADF
}

var 2717, name ADF_TEST, link IOCARD_SW input 80
{
Call &affich_ADF
}


Var 2720, name affich_ADF, Link SUBRUTINE     // affiche les 7 segments
{
  C0 = &ADF_SW = 0
  C1 = &courant = 0   // la variable courant est définie ailleurs, elle vaut 1 si on a du courant, 0 sinon 
  C2 = C0 OR C1       // pas de courant ou ADF coupé
  C1 = &fs_avionics = 0 // correspond à l'inter avionic
  IF C2 OR C1         //  ou Avionics off
  {
  &D_ADF1 = -999999  // on éteint les chiffres
  }
  ELSE
  {
    if &ADF_TEST = 1    // si test
   {
   &D_ADF1 = 88888     // on allume tous les 8
   }
   ELSE
  {
   &D_ADF1 = &ADF1Freq  // sinon on recopie la valeur de la fréquence
  }
 }
}

Var 2740 name ADF1HighR        // higher TWO digits controlled by rotarie
Var 2741 name ADF1LowR         // lower TWO digits controlled by rotarie

var 2742 name CalcADF1LowR Link Subrutine 
{
  L0 = MOD &ADF1High 10
  L0 = L0 * 10
  &ADF1LowR = L0 + &ADF1Low
}

var 2743 name CalcADF1High Link Subrutine
{
  L0 = DIV &ADF1LowR 10
  L1 = &ADF1HighR * 10
  &ADF1High = L0 + L1
}

Var 2744 name RO_ADF1High Link IOCARD_ENCODER Input 118 Aceleration 2     
{
// controls the higher TWO digits

  L0 = &RO_ADF1High * -1          // change direction
  &ADF1HighR = ROTATE 20 99 L0

  CALL &CalcADF1High
  CALL &CalcADF1Freq           
   
  &X_ADF1High = TOBCD &ADF1High   // higher 3 Digits in bcd to fsuipc
}

Var 2745 name RO_ADF1Low Link IOCARD_ENCODER Input 113 Aceleration 2    // controls the lower TWO digits
{

  L0 = &RO_ADF1Low * 5            // in steps of 5
  &ADF1LowR = ROTATE 0 99 L0   

  &ADF1Low = MOD &ADF1LowR 10
  CALL &CalcADF1High
  CALL &CalcADF1Freq           

  &X_ADF1Low = &ADF1Low           //  decimal digit to fsuipc
  &X_ADF1High = TOBCD &ADF1High   // higher 3 Digits in bcd to fsuipc
}

Var 2770 name D_ADF1 Link IOCARD_DISPLAY Digit 101 Numbers 5     

Re: programmation de l'ADF

MessagePosté: Ven 26 Mar 2010 02:34
de pascal737
merci je vais essayer ,mais moi j'ai des encoders simple cts 288,je redonne des nouvelles.
pascal737

Re: programmation de l'ADF

MessagePosté: Ven 26 Mar 2010 09:13
de Kelt760
Pas grave, c'est pareil, il suffit de rajouter "type 2" aux lignes de déclaration des encodeurs. Je pense que c'est tout.
Pour notre part, on a fait des encodeurs doubles à partir de commutateurs simples, comme indiqué sur notre site. Donc ça devrait marcher pareil.
Tiens-nous au courant !

Re: programmation de l'ADF

MessagePosté: Sam 27 Mar 2010 14:33
de pascal737
bonjour,
en faisant l'import txt j'ai un message d'erreur,que j'ai afficher au bas de ce texte.
pourquoi ca ne marche pas
pascal737

Code: Tout sélectionner
//++++++++++++++++++++++++++++++++ ADF ++++++++++++++++++++++++++++++++++++///
//++++++++++++++++++++ Merci à Nico Kaan ++++++++++++++++++++


Var 2700 name X_ADF1High Link FSUIPC_INOUT Offset $034C Length 2
{
  L0 = FROMBCD &X_ADF1High
  IF &ADF1High <> L0           // block values coming from rotary
  {
    &ADF1High = L0
    &ADF1HighR = DIV &ADF1High 10
    CALL &CalcADF1LowR
    CALL &CalcADF1Freq
  }
}

Var 2701 name X_ADF1Low Link FSUIPC_INOUT Offset $0356 Length 2
{
  IF &X_ADF1Low <> &ADF1Low    // block values coming from rotary
  {
    &ADF1Low = &X_ADF1Low
    CALL &CalcADF1LowR
    CALL &CalcADF1Freq
  }
}

Var 2710 name ADF1High         // FSUIPC ADF value high: 3 digits
Var 2711 name ADF1Low          // FSUIPC ADF value: 1 digit
var 2712 name ADF1Freq         // total (needed for display): 4 digits

var 2713 name CalcADF1Freq Link Subrutine
{
  L0 = &ADF1High * 10          // high * 10
  &ADF1Freq = L0 + &ADF1Low    // + decimal
  CALL &affich_ADF
}

var 2715, name ADF_sw, link IOCARD_SW input 135
{
Call &affich_ADF
}

var 2717, name ADF_TEST, link IOCARD_SW input 80
{
Call &affich_ADF
}


Var 2720, name affich_ADF, Link SUBRUTINE     // affiche les 7 segments
{
  C0 = &ADF_SW = 0
  C1 = &courant = 0   // la variable courant est définie ailleurs, elle vaut 1 si on a du courant, 0 sinon 
  C2 = C0 OR C1       // pas de courant ou ADF coupé
  C1 = &fs_avionics = 0 // correspond à l'inter avionic
  IF C2 OR C1         //  ou Avionics off
  {
  &D_ADF1 = -999999  // on éteint les chiffres
  }
  ELSE
  {
    if &ADF_TEST = 1    // si test
   {
   &D_ADF1 = 88888     // on allume tous les 8
   }
   ELSE
  {
   &D_ADF1 = &ADF1Freq  // sinon on recopie la valeur de la fréquence
  }
}
}

Var 2740 name ADF1HighR        // higher TWO digits controlled by rotarie
Var 2741 name ADF1LowR         // lower TWO digits controlled by rotarie

var 2742 name CalcADF1LowR Link Subrutine 
{
  L0 = MOD &ADF1High 10
  L0 = L0 * 10
  &ADF1LowR = L0 + &ADF1Low
}

var 2743 name CalcADF1High Link Subrutine
{
  L0 = DIV &ADF1LowR 10
  L1 = &ADF1HighR * 10
  &ADF1High = L0 + L1
}

Var 2744 name RO_ADF1High Link IOCARD_ENCODER Input 118 Aceleration 2     
{
// controls the higher TWO digits

  L0 = &RO_ADF1High * -1          // change direction
  &ADF1HighR = ROTATE 20 99 L0

  CALL &CalcADF1High
  CALL &CalcADF1Freq           
   
  &X_ADF1High = TOBCD &ADF1High   // higher 3 Digits in bcd to fsuipc
}

Var 2745 name RO_ADF1Low Link IOCARD_ENCODER Input 113 Aceleration 2    // controls the lower TWO digits
{

  L0 = &RO_ADF1Low * 5            // in steps of 5
  &ADF1LowR = ROTATE 0 99 L0   

  &ADF1Low = MOD &ADF1LowR 10
  CALL &CalcADF1High
  CALL &CalcADF1Freq           

  &X_ADF1Low = &ADF1Low           //  decimal digit to fsuipc
  &X_ADF1High = TOBCD &ADF1High   // higher 3 Digits in bcd to fsuipc
}

Var 2770 name D_ADF1 Link IOCARD_DISPLAY Digit 101 Numbers 5     

voici le message d'erreur
 gratgrat 
Config_SIOC ver 3.7B1   -     By Manolo Vélez    -    http://www.opencockpits.com
Open file "C:\b 737\nav1\radio adf 1b.txt"
08:23:59
Phase 1
  .OK.
 
Phase 2
  .OK.

Phase 3
Variable name not found
 ==> &COURANT

Re: programmation de l'ADF

MessagePosté: Sam 27 Mar 2010 19:53
de F-DEUZ
Bonsoir Pascal,
Ta variable 2720 fait appel a des variables qui ne sont pas dans ton script.
Rajoute les ligne suivantes :
Var 2780, name courant, value 1
Var 2790, name fs_avionics, value 1

ca devrait fonctionner

A+ - Denis

Re: programmation de l'ADF

MessagePosté: Sam 27 Mar 2010 23:25
de pascal737
merci affiche
merci a tous
aprés quelques ajustements tous mes modules com ,nav ,adf et tcas fonctionnent
pascal737