Module ATC airbus

Questions de programmation / Offset FSUIPC et IOCP

Module ATC airbus

Messagede nuno14 » Ven 15 Juil 2011 13:55

Je voudrais savoir comment remplacer les 4 encodeurs du transpondeurs, par 9 touches comme sur le module ATC vendu par cockpit Passion, par un code SIOC ?
Image
Avatar de l’utilisateur
nuno14
 
Messages: 175
Inscription: 14/09/10
Localisation: Près de Lisieux, Normandie

Re: Module ATC airbus

Messagede stevelep » Ven 15 Juil 2011 16:39

Il y a un code SIOC pour transpondeur à chiffres sur le site de simubaron

www.simubaron.fr

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Module ATC airbus

Messagede nuno14 » Ven 15 Juil 2011 21:11

Encore merci affiche a toi stevelep. J'aurais du y penser.

Je me met au travail. chouettedoights
Image
Avatar de l’utilisateur
nuno14
 
Messages: 175
Inscription: 14/09/10
Localisation: Près de Lisieux, Normandie

Re: Module ATC airbus

Messagede stevelep » Ven 15 Juil 2011 21:32

Heu le code n'y est plus ...

Demande le à Kelt760 c'est lui qui l'a programmé

BOB
Avatar de l’utilisateur
stevelep
Administrateur du site
 
Messages: 2075
Inscription: 27/03/09
Localisation: LSGN Neuchâtel, Suisse

Re: Module ATC airbus

Messagede Kelt760 » Sam 16 Juil 2011 13:10

Bonjour,

Le code y est toujours, à la fin du programme (qui n'est pas à jour, ça fait partie de la liste des choses à faire...).
Le voici de nouveau :
Code: Tout sélectionner
//
// Transpondeur
//


Var 2500, name fs_transp, Link FSUIPC_INOUT, Offset $0354, Length 2
{
  &temp_tr_code = FROMBCD &fs_transp
  CALL &calc_temp_dgs
}

Var 2501, name aff_tr_dg4, Link IOCARD_DISPLAY, Digit 96, Numbers 1     // unités transp

Var 2502, name aff_tr_dg3, Link IOCARD_DISPLAY, Digit 97, Numbers 1     // dizaines transp

Var 2503, name aff_tr_dg2, Link IOCARD_DISPLAY, Digit 98, Numbers 1     // centaines transp

Var 2504, name aff_tr_dg1, Link IOCARD_DISPLAY, Digit 99, Numbers 1     // milliers transp

Var 2506, name aff_tr_code, Link IOCARD_DISPLAY, Digit 96, Numbers 4     // code entier

Var 2508, name press_count, Value 0     // nombre d'appuis

Var 2509, name current_digit, Value 1     // numéro du chiffre à afficher

Var 2510, name val_dg     // valeur chiffre courant

Var 2511, name temp_tr_dg1, Value 0     // valeur chiffre milliers

Var 2512, name temp_tr_dg2, Value 0     // valeur chiffre centaines

Var 2513, name temp_tr_dg3, Value 0     // valeur chiffre dizaines

Var 2514, name temp_tr_dg4, Value 0     // valeur chiffre unités

Var 2516, name temp_tr_code     // code temporaire pendans saisie

Var 2517, name mem_tr_code     // code précédent

Var 2518, name new_tr_code, Value 1     // à 0 pendant saisie, à 1 si nouveau code

Var 2520, name tr_push_0, Link IOCARD_SW, Input 127     // Push chiffre 0
{
  IF &tr_push_0 = 1
  {
    IF &press_count = 0
    {
      CALL &init_tempo
    }
    &val_dg = 0         // chiffre courant = 0
    CALL &place_dg, &val_dg     // met le chiffre à sa place en temporaire
    CALL &calc_temp_code     // calcul le nouveau code
    CALL &use_code     // vérifie si code entier
  }
}

Var 2521, name tr_push_1, Link IOCARD_SW, Input 122     // Push chiffre 1
{
  IF &tr_push_1 = 1
  {
    IF &press_count = 0
    {
      CALL &init_tempo
    }
    &val_dg = 1         // chiffre courant = 1
    CALL &place_dg, &val_dg     // met le chiffre à sa place en temporaire
    CALL &calc_temp_code
    CALL &use_code
  }
}

Var 2522, name tr_push_2, Link IOCARD_SW, Input 121     // Push chiffre 2
{
  IF &tr_push_2 = 1
  {
    IF &press_count = 0
    {
      CALL &init_tempo
    }
    &val_dg = 2         // chiffre courant = 2
    CALL &place_dg, &val_dg     // met le chiffre à sa place en temporaire
    CALL &calc_temp_code
    CALL &use_code
  }
}

Var 2523, name tr_push_3, Link IOCARD_SW, Input 108     // Push chiffre 3
{
  IF &tr_push_3 = 1
  {
    IF &press_count = 0
    {
      CALL &init_tempo
    }
    &val_dg = 3         // chiffre courant = 3
    CALL &place_dg, &val_dg     // met le chiffre à sa place en temporaire
    CALL &calc_temp_code
    CALL &use_code
  }
}

Var 2524, name tr_push_4, Link IOCARD_SW, Input 109     // Push chiffre 4
{
  IF &tr_push_4 = 1
  {
    IF &press_count = 0
    {
      CALL &init_tempo
    }
    &val_dg = 4         // chiffre courant = 4
    CALL &place_dg, &val_dg     // met le chiffre à sa place en temporaire
    CALL &calc_temp_code
    CALL &use_code
  }
}

Var 2525, name tr_push_5, Link IOCARD_SW, Input 112 // Push chiffre 5
{
  IF &tr_push_5 = 1
  {
    IF &press_count = 0
    {
      CALL &init_tempo
    }
    &val_dg = 5         // chiffre courant = 5
    CALL &place_dg, &val_dg     // met le chiffre à sa place en temporaire
    CALL &calc_temp_code
    CALL &use_code
  }
}

Var 2526, name tr_push_6, Link IOCARD_SW, Input 110     // Push chiffre 6
{
  IF &tr_push_6 = 1
  {
    IF &press_count = 0
    {
      CALL &init_tempo
    }
    &val_dg = 6         // chiffre courant = 6
    CALL &place_dg, &val_dg     // met le chiffre à sa place en temporaire
    CALL &calc_temp_code
    CALL &use_code
  }
}

Var 2527, name tr_push_7, Link IOCARD_SW, Input 111     // Push chiffre 7
{
  IF &tr_push_7 = 1
  {
    IF &press_count = 0
    {
      CALL &init_tempo
    }
    &val_dg = 7         // chiffre courant = 7
    CALL &place_dg, &val_dg     // met le chiffre à sa place en temporaire
    CALL &calc_temp_code
    CALL &use_code
  }
}

Var 2528, name vfr, Link IOCARD_SW, Input 116     // Push VFR
{
  IF &vfr = 1
  {
  &region = rotate 0,2,&vfr
  &tr_mode = 1
  if &region = 0
    {
      &fs_transp = TOBCD 7000     // met le code 7000
      &temp_tr_dg1 = 7         // met les millers à 7 
      &temp_tr_dg2 = 0   
      &temp_tr_dg3 = 0   
      &temp_tr_dg4 = 0   
      CALL &affich_transp     // et l'affiche
    }
  if  &region = 1
    {
      &fs_transp = TOBCD 2000 // met le code 2000
      &temp_tr_dg1 = 2         // met les millers à 7 
      &temp_tr_dg2 = 0   
      &temp_tr_dg3 = 0   
      &temp_tr_dg4 = 0   
      CALL &affich_transp     // et l'affiche
    }
  if  &region = 2
    {
      &fs_transp = TOBCD 1200     // met le code 1200
      &temp_tr_dg1 = 1         // met les millers à 1 
      &temp_tr_dg2 = 2   
      &temp_tr_dg3 = 0   
      &temp_tr_dg4 = 0   
      CALL &affich_transp     // et l'affiche
    }
  }
}



Var 2529, name sw_tr_off, Link IOCARD_SW, Input 125     // Inter Transp Off
{
  IF &sw_tr_off = 1
  {
    &tr_mode = 1   
    CALL &affich_transp
  }
}
Var 2530, name sw_tr_test, Link IOCARD_SW, Input 117     // test Transp
{
  IF &sw_tr_test = 1
  {
    &tr_mode = 1   
    CALL &affich_transp
  }
}
Var 2531, name sw_tr_sby, Link IOCARD_SW, Input 123     // Transpondeur mode standby
{
  IF &sw_tr_sby = 1
  {
    &tr_mode = 1   
    &aff_tr_dg1 = &temp_tr_dg1   
    &aff_tr_dg2 = &temp_tr_dg2   
    &aff_tr_dg3 = &temp_tr_dg3   
    &aff_tr_dg4 = &temp_tr_dg4   
    CALL &affich_transp
  }
}

Var 2532, name sw_tr_chrly, Link IOCARD_SW, Input 123     // Transpondeur mode Charly
{
  IF &sw_tr_chrly = 1
  {
    &tr_mode = 0   
  }
}

Var 2533, name sw_tr_ident, Link IOCARD_SW, Input 69     // push ident transpondeur pour ivao
{
  IF &sw_tr_ident = 1
  {
    &tr_ident = 1   
  }
}

Var 2534, name tr_ident, Link FSUIPC_INOUT, Offset $7B93, Length 1     // ident ivao

Var 2535, name tr_mode, Link FSUIPC_INOUT, Offset $7B91, Length 2, Value 0     // mode transpondeur ivao

var 2536, name region, value 0

Var 2540, name tempo, Link SUBRUTINE     // temporisation saisie
{
  IF &tempo >= 400     // si temps terminé
  {
    IF &press_count < 4     // si code partiel saisi
    {
      &temp_tr_code = &mem_tr_code         // on remet l'ancien code 
      &fs_transp = TOBCD &temp_tr_code     // on le repasse à FS
      CALL &calc_temp_dgs     // et on calcule les chiffres
    }
    CALL &affich_transp     // on affiche les chiffres
    &press_count = 0         // et on réinitialise
    &new_tr_code = 1   
    &current_digit = 1   
  }
}

Var 2541, name init_tempo, Link SUBRUTINE     // initialisation tempo
{
  &tempo = 0   
  &tempo = TIMER 400 ,4 ,5
  &mem_tr_code = FROMBCD &fs_transp     // mémorisation ancien code
}

Var 2542, name place_dg, Link SUBRUTINE     // place les chiffres
{
  IF &press_count > 0     // si pas premier appui
  {
    &new_tr_code = 0         // pas un nouveau code
  }
  &press_count = &press_count + 1
  IF &current_digit = 1     // saisie du chiffre des milliers
  {
    &temp_tr_dg1 = &place_dg   
  }
  IF &current_digit = 2     // saisie du chiffre des centaines
  {
    &temp_tr_dg2 = &place_dg   
  }
  IF &current_digit = 3     // saisie du chiffre des dizaines
  {
    &temp_tr_dg3 = &place_dg   
  }
  IF &current_digit = 4     // saisie du chiffre des unités
  {
    &temp_tr_dg4 = &place_dg   
  }
  &current_digit = &current_digit + 1     // incrémente la position
  IF &current_digit = 5     // revient au premier chiffre après le 4e
  {
    &current_digit = 1   
  }
}

Var 2543, name calc_temp_code, Link SUBRUTINE     // calcule, envoie à FS et affiche la valeu
{
  L0 = &temp_tr_dg1 * 1000
  L1 = &temp_tr_dg2 * 100
  L2 = L0 + L1
  L1 = &temp_tr_dg3 * 10
  L2 = L2 + L1
  &temp_tr_code = L2 + &temp_tr_dg4
  &fs_transp = TOBCD &temp_tr_code
  CALL &affich_transp
}

Var 2544, name use_code, Link SUBRUTINE     // décision gader ou rejeter
{
  IF &press_count = 4     // code entier saisi
  {
    CALL &fin     // on garde le nouveau code
  }
  ELSE
  {
    CALL &tempo     // on agit selon timer
  }
}

Var 2545, name fin, Link SUBRUTINE     // termine le traitement
{
  &new_tr_code = 1         // réinitialise pour nouevau code
  &current_digit = 1         // réinitialise chiffre à 1
  &fs_transp = TOBCD &temp_tr_code     // envoi code à FS
}

Var 2546, name calc_temp_dgs, Link SUBRUTINE     // calcule les chiffres d'après le code si
{
  &temp_tr_dg1 = DIV &temp_tr_code ,1000
  &temp_tr_dg4 = MOD &temp_tr_code ,10
  L0 = &temp_tr_dg1 * 1000
  L1 = &temp_tr_code - L0
  &temp_tr_dg2 = DIV L1 ,100
  L2 = &temp_tr_dg2 * 100
  L0 = L1 - L2
  &temp_tr_dg3 = DIV L0 ,10
}

Var 2550, name affich_transp, Link SUBRUTINE     // affiche les 7 segments à réunir avec SIO
{
  C0 = &sw_tr_off = 1
  C1 = &courant = 0     // pas de courant
  C2 = C0 OR C1
  C1 = &fs_avionics = 0
  IF C2 OR C1     // pas de courant ou transpondeur coupé
  {
    &affich_transp = 0   
    &aff_tr_dg1 = -999999         // on éteint les chiffres
    &aff_tr_dg2 = -999999   
    &aff_tr_dg3 = -999999   
    &aff_tr_dg4 = -999999   
  }
  ELSE
  {
  if &sw_tr_test = 1     // si test
   {
   &aff_tr_dg1 = 8         // on allume tous les 8
    &aff_tr_dg2 = 8   
    &aff_tr_dg3 = 8   
    &aff_tr_dg4 = 8
   }
   ELSE
  {
    &affich_transp = 0   
    &aff_tr_dg1 = &temp_tr_dg1   
    &aff_tr_dg2 = &temp_tr_dg2   
    &aff_tr_dg3 = &temp_tr_dg3   
    &aff_tr_dg4 = &temp_tr_dg4   
    &aff_tr_code = &temp_tr_code   
  }
 }
}


De mémoire, il ne fait appel à l'extérieur qu'à la variable &courant, qui indique s'il y a une tension suffisante sur le bus, et fsavionics, qui reflète la position de l'inter Avionique.

Sinon, il possède une temporisation (si on ne comprose pas les 4 chiffres, l'ancien code revient au bout de quelques secondes, il communique avec Ivao (mdoe charly et stby), possède les codes prédéfinis 1200, 7000 et 200.

Je pars en vacances (ouf) je ne pourrai donc pas aider dans les jours qui viennent.
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: Module ATC airbus

Messagede nuno14 » Sam 16 Juil 2011 20:26

merci pour le nouveau script KELT760, je n'est plus qu'a modifier celui que j'avais copier sur le site simubaron, et rajouter aussi certaine variable de JEEHELL pour la partie TCAS


Ah oui, bonne vacance a toi.
Image
Avatar de l’utilisateur
nuno14
 
Messages: 175
Inscription: 14/09/10
Localisation: Près de Lisieux, Normandie


Retourner vers Programmation Sioc





Qui est en ligne

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