Un DME un peu fou

Avro

PILOTE DE LIGNE
Messages
1 856
Réactions
255
Points
297
Bonjour,

je fais des tests avec une carte Display et un afficheur 7 segments de 5 chiffres. Voici mon code.

Code:
[== SIOC==]

Var 0600, Value 0  // Initialization
{
  &DME = -999999
}

Var 0601, Name DME, Link IOCARD_DISPLAY, Device 2, Digit 0, Numbers 5 

Var 0602, name DME_DIST, Link FSUIPC_INOUT, Offset $0300, Length 4
{
   &DME = &DME_DIST
}

Aligné et à  larrêt sur la 23 à  Strasbourg avec mon VOR 115.6, il me donne l'affichage 00036. Il sagit de 3.6 nautiques.
Mais dès que je roule l'affichage devient fou. Si je fais Pause, l'afficheur donne alors une indication juste. Une idée ?

Question bonus, j'aimerais que le système affiche plutôt la valeur suivante : 3-6__ au lieu 00036
 
Opencockpit utilise une sortie pour alimenter ou non le point sur leur FCU, MCP, COM, NAV, ADF, ...

C'est une des possibilités que tu as pour afficher le point.

Sinon pour répondre à  ta question, il te faut faire un modulo de 10

L0 = MOD &DME_DIST ,10 // Ca te donnera le 6 de ton 36

Il te faut assigner tous tes digits un par un

Code:
[== SIOC ==]
Var 0601, Link IOCARD_DISPLAY, Device 2, Digit 0, Numbers 2  // le - et la decimale
Var 0603, Link IOCARD_DISPLAY, Device 2, Digit 2, Numbers 3  // l'unité
Var 0604, Link IOCARD_DISPLAY, Device 2, Digit 3, Numbers 1  // la dizaine
Var 0605, Link IOCARD_DISPLAY, Device 2, Digit 4, Numbers 1  // la cent'aine

Var 0606, name DME_DIST, Link FSUIPC_INOUT, Offset $0300, Length 4
{
IF V1186 = 0  // Ca c'est linter de la batterie
  {
    L0 = &DME_DIST / 10
    L0 = TRUNC L0 
    V0603 = L0    
    IF L0 < 100
    {
      V0605 = -999999    
    }
    IF L0 < 10
    {
      V0605 = -999999    
      V0604 = -999999    
    }
    L1 = MOD &DME_DIST ,10
    {
      V0601 = -L1
    }
  }
  ELSE
  {
    V0603 = -999999 
    V0601 = -999999    	
  }
}

Var 1186, Link IOCARD_SW, Device 1, Input 69     // Batt Sw
{
  IF V1186 = 1
  {
    V0603 = -999999 
    V0601 = -999999  
  }
  ELSE
  {
    &DME_DIST = &DME_DIST  // on force un changement sur la variable pour afficher le DME au retour de la batterie
  }
}

ça te donnera un affichage de type

104-5
11-6
3-6
0-6
 
Merci beaucoup. Et moi, j'ai trouvé pourquoi mon afficheur était fou

Var 0602, name DME_DIST, Link FSUIPC_INOUT, Offset $0300, Length 2 et non Length 4
 
Retour
Haut