programmation de l'ADF

Questions de programmation / Offset FSUIPC et IOCP

programmation de l'ADF

Messagede pascal737 » Mer 24 Mar 2010 23:39

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
Avatar de l’utilisateur
pascal737
 
Messages: 24
Inscription: 25/01/10
Localisation: quebec canada

Re: programmation de l'ADF

Messagede stevelep » Jeu 25 Mar 2010 00:18

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

Re: programmation de l'ADF

Messagede pascal737 » Jeu 25 Mar 2010 01:18

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
Avatar de l’utilisateur
pascal737
 
Messages: 24
Inscription: 25/01/10
Localisation: quebec canada

Re: programmation de l'ADF

Messagede steph737 » Jeu 25 Mar 2010 05:25

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
Image
Avatar de l’utilisateur
steph737
 
Messages: 1083
Inscription: 27/03/09
Localisation: Antananarivo - Madagascar

Re: programmation de l'ADF

Messagede Kelt760 » Jeu 25 Mar 2010 13:54

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     
Pierre
--------------
http://www.simubaron.fr le site des 2 Pierre. Venez nous voir !
Avatar de l’utilisateur
Kelt760
 
Messages: 204
Inscription: 27/03/09

Re: programmation de l'ADF

Messagede pascal737 » Ven 26 Mar 2010 02:34

merci je vais essayer ,mais moi j'ai des encoders simple cts 288,je redonne des nouvelles.
pascal737
Avatar de l’utilisateur
pascal737
 
Messages: 24
Inscription: 25/01/10
Localisation: quebec canada

Re: programmation de l'ADF

Messagede Kelt760 » Ven 26 Mar 2010 09:13

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 !
Pierre
--------------
http://www.simubaron.fr le site des 2 Pierre. Venez nous voir !
Avatar de l’utilisateur
Kelt760
 
Messages: 204
Inscription: 27/03/09

Re: programmation de l'ADF

Messagede pascal737 » Sam 27 Mar 2010 14:33

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
Avatar de l’utilisateur
pascal737
 
Messages: 24
Inscription: 25/01/10
Localisation: quebec canada

Re: programmation de l'ADF

Messagede F-DEUZ » Sam 27 Mar 2010 19:53

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
F-DEUZ
 

Re: programmation de l'ADF

Messagede pascal737 » Sam 27 Mar 2010 23:25

merci affiche
merci a tous
aprés quelques ajustements tous mes modules com ,nav ,adf et tcas fonctionnent
pascal737
Avatar de l’utilisateur
pascal737
 
Messages: 24
Inscription: 25/01/10
Localisation: quebec canada


Retourner vers Programmation Sioc





Qui est en ligne

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