problèmes pour l'affichage du DME

Questions de programmation / Offset FSUIPC et IOCP

problèmes pour l'affichage du DME

Messagede FiX » Mer 10 Aoû 2011 16:20

Je suis en train d'essayer de reproduire le petit afficheur du B58 avec le DME (distance, vitesse et time-to-station).
J'ai 2 petits soucis avec mon code:

Var 0016, name DME1_dist, Link FSUIPC_IN, Offset $300, Length 2 // distance DME1 en nm*10
{
L0 = &DME1_dist / 10
&calc_dist_DME1 = TRUNC L0
}

Var 0017, name calc_dist_DME1 // affiche la distance DME1 en nm

Var 0020, name DME1_speed, Link FSUIPC_IN, Offset $302, Length 2 // vitesse DME 1 en kts*10
{
L0 = &DME1_speed / 10
&calc_kt_DME1 = L0
}

Var 0021, name calc_kt_DME1 // affiche la vitesse DME1 en kt

Var 0025, name DME1_time, Link FSUIPC_IN, Offset $304, Length 2 // time to station DME1 en sec*10
{
L0 = &DME1_time / 10 // time to station en sec
L1 = L0 / 60 // time to station en min
&calc_time_DME1 = TRUNC L1
}

Var 0026, name calc_time_DME1 // affiche time to station DME1 en min


-1/Ca ne doit pas être bien compliqué, c'est le calcul de la décimale pour la distance au DME.
Sachant que l'offset nous donne la distance x10
Pour afficher les chiffres avant la virgule, ça fonctionne, pas de problème ( en divisant par 10 puis avec la fonction "TRUNC"), mais je ne sais pas trop quelle fonction ou calcul utiliser pour avoir un chiffre après la virgule.


-2/plus embêtant: le temps qu'il reste à parcourir avant le VOR
C'est facile, on a l'offset qui va bien, il nous donne le temps en sec x10.
Donc on remet ça en minutes et on divise par 10 et tout va bien, ça fonctionne.
Par contre si on "perd" la fréquence du vor, il faut que l'indicateur de DME n'affiche plus rien (ce qu'il fait correctement dans FS).
Or, ça fonctionne bien pour la distance et la vitesse (ça disparaît), mais pas pour le time-to-station qui m'affiche 16min.
Je suis allé voir dans la console IOCP pour regarder la valeur de l'offset en question et effectivement c'est bizarre.
Alors que les autres offset (de vitesse et distance) se mettent gentiment à 0, l'offset de time-to-station, lui, se met à 9999.
Donc forcément avec mon calcul dans SIOC: (9999/10)/60 = 16
Et là je sais pas quoi faire... gratgrat
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: problèmes pour l'affichage du DME

Messagede Boutondair » Mer 10 Aoû 2011 17:08

Bonjour Fix,

Et bien tu es à fond dans le SIOC en ce moment !!!! chouettedoights

Ne pourrais tu pas mettre une ligne avec IF Var = 9999 - THEN Var = 0 - ELSE Var = Var

Peut etre une idée mais je ne me suis pas encore lancé dans le SIOC

David gratgrat
Image Image
Petit je rêvais que je volerais, maintenant grâce au virtuel je vole !!!!!
Avatar de l’utilisateur
Boutondair
Administrateur du site
 
Messages: 4174
Inscription: 20/04/09
Localisation: Ballans (17) proche de Cognac

Re: problèmes pour l'affichage du DME

Messagede JeeHell » Mer 10 Aoû 2011 18:10

Salut,
-1/Ca ne doit pas être bien compliqué, c'est le calcul de la décimale pour la distance au DME.
Sachant que l'offset nous donne la distance x10
Pour afficher les chiffres avant la virgule, ça fonctionne, pas de problème ( en divisant par 10 puis avec la fonction "TRUNC"), mais je ne sais pas trop quelle fonction ou calcul utiliser pour avoir un chiffre après la virgule.

Si tu veux un chiffre après la virgule, laisse l'offset en l'état (distance x10), comme ça sur tes 7 segments tu n'as que le point décimal à afficher sur l'avant dernier display (je suppose que tu utilises des 7 segments...).

-2/plus embêtant: le temps qu'il reste à parcourir avant le VOR
C'est facile, on a l'offset qui va bien, il nous donne le temps en sec x10.
Donc on remet ça en minutes et on divise par 10 et tout va bien, ça fonctionne.
Par contre si on "perd" la fréquence du vor, il faut que l'indicateur de DME n'affiche plus rien (ce qu'il fait correctement dans FS).
Or, ça fonctionne bien pour la distance et la vitesse (ça disparaît), mais pas pour le time-to-station qui m'affiche 16min.
Je suis allé voir dans la console IOCP pour regarder la valeur de l'offset en question et effectivement c'est bizarre.
Alors que les autres offset (de vitesse et distance) se mettent gentiment à 0, l'offset de time-to-station, lui, se met à 9999.
Donc forcément avec mon calcul dans SIOC: (9999/10)/60 = 16
Et là je sais pas quoi faire... gratgrat


Tu es sûr qu'il se met à 9999? c'est très étrange car c'est un entier sur 16 bits donc de 0 à 65536, la valeur 9999 ne correspond à rien de concret sur du 16 bits (ni le zéro, ni le max, ni le milieux...)?
JeeHell
 
Messages: 1853
Inscription: 18/05/09

Re: problèmes pour l'affichage du DME

Messagede FiX » Mer 10 Aoû 2011 19:29

Boutondair a écrit:Bonjour Fix,

Et bien tu es à fond dans le SIOC en ce moment !!!! chouettedoights

Ne pourrais tu pas mettre une ligne avec IF Var = 9999 - THEN Var = 0 - ELSE Var = Var

Peut etre une idée mais je ne me suis pas encore lancé dans le SIOC

David gratgrat



Oui, et c'est pas la partie que je préfère... zzzzzzzz
Non, je ne peux pas éliminer la valeur 9999, puisque ça correspond à 16nm et si je suis à 16nm d'un VOR il va m'afficher 0...
Dernière édition par FiX le Mer 10 Aoû 2011 19:37, édité 1 fois.
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: problèmes pour l'affichage du DME

Messagede FiX » Mer 10 Aoû 2011 19:30

JeeHell a écrit:Salut,

Si tu veux un chiffre après la virgule, laisse l'offset en l'état (distance x10), comme ça sur tes 7 segments tu n'as que le point décimal à afficher sur l'avant dernier display (je suppose que tu utilises des 7 segments...).


Et bien non, justement, j'utilise un LCD...
Donc il faut que j'ai une variable qui prenne la valeur de mon chiffre après la virgule.


Pour le 9999, oui, c'est bien ça et c'est pas franchement pratique!
Voilà ce que ça donne lorsque le 'on ne capte pas de VOR:

Image
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: problèmes pour l'affichage du DME

Messagede Colibri » Mer 10 Aoû 2011 19:51

j'avoue que je ne suis pas pressé de me remettre à SIOC ...
Heureusement que j'ai encore plein de choses à faire sur mon Simu avant de me replonger dans la programmation parce rien que d'y penser blemeblanc
Vincent
Avatar de l’utilisateur
Colibri
 
Messages: 1456
Inscription: 13/05/09
Localisation: Guérande (44)

Re: problèmes pour l'affichage du DME

Messagede JeeHell » Mer 10 Aoû 2011 20:25

Dans ce cas, pour le time to station, il faut que tu passes par un autre offset (je n'ai plus ses références en mémoire) qui donne l'état de réception ou non du NAV1. C'est un offset avec plusieurs infos codées sur les 8 bits.

Quant à la distance, il faut opérer tel un sioux:
-stocke dans la variable locale L0 la valeur de distance (corrigée des x10 avec TRUNC)
-Puis tu multiplies L0 par 10
- dans L1 tu soustrais L0 à la valeur non corrigée de l'offset de distance.

Et du coup tu te retrouves avec le chiffre des décumales dans L1!

Jl
JeeHell
 
Messages: 1853
Inscription: 18/05/09

Re: problèmes pour l'affichage du DME

Messagede FiX » Mer 10 Aoû 2011 23:55

Merci pour la technique du sioux, ça marche encore mieux que les signaux de fumée!
J'ai donc fait ça:
Code: Tout sélectionner
Var 0016, name DME1_dist, Link FSUIPC_IN, Offset $300, Length 2     // distance DME1 en nm*10
{
  L0 = &DME1_dist / 10
  &calc_dist_DME1 = TRUNC L0
  L1 = &calc_dist_DME1 * 10
  &calc_dec_dist = &DME1_dist - L1
}

Var 0017, name calc_dist_DME1     // affiche la dist DME1 en nm avant virgule

Var 0018, name calc_dec_dist     // affiche dist DME1 en nm après virgule

Et ça marche très bien, il fallait y penser!
Rraah, j'ai pas encore la "SIOC attitude"...


Bon,maintenant il n'y a plus qu'à trouver ce fameux offset...
i7 2600k/P8P67pro/16Go PC3 17000/RX 580/SSD 250 Go et 120Go/W10x64
https://www.facebook.com/cessna150.sim
Avatar de l’utilisateur
FiX
 
Messages: 4664
Inscription: 8/01/10
Localisation: Reims/Maubeuge

Re: problèmes pour l'affichage du DME

Messagede JeeHell » Jeu 11 Aoû 2011 19:27

Essaye les offsets suivants:

0C4B,1: NAV1 To/From flag: 0=not active, 1=To, 2=From

0C4D,1: NAV1 code flags, bits used as follows:
  • 0 DME available
  • 1 TACAN (Not found for FSX)
  • 2 Voice available (Not found for FSX)
  • 3 No signal available
  • 4 DME/GS co-located (Not found for FSX)
  • 5 No back course
  • 6 GS available
  • 7 This is a localiser (else it‘s a VOR)
JeeHell
 
Messages: 1853
Inscription: 18/05/09


Retourner vers Programmation Sioc





Qui est en ligne

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