Page 1 sur 1

Position GPS

MessagePosté: Dim 28 Aoû 2022 09:39
de Bernard_de_Lyon
Bonjour à tous,
Je suis sur FS2020. Je voudrais convertir en degrés la position de mon avion. J'utilise l'offset $0560 pour la latitude.
voici mon code :
Var 0012, name LATDEGRE
Var 0013, name Latitude, Link FSUIPC_INOUT, Offset $0560, Lenght 8, Numbers 1
{
L0 = &Latitude * 90
L1 = 10001750 * 65536
L1 = L1 * 65536
&LATDEGRE = L0 / L1
}

Lorsque j’exécute le code, les valeurs de Latitude et de LATDEGRE sont toujours à 0.

Qui peut me dire où je fais l'erreur ?
Merci

Re: Position GPS

MessagePosté: Dim 28 Aoû 2022 10:53
de fab
Bonjour,

Si ta variable "latitude" reste à 0, ce n'est pas ton code, mais ma lecture de l'offset qui ne fonctionne pas.

Tu arrives à lire d'autres offset ?

Fabien

Re: Position GPS

MessagePosté: Dim 28 Aoû 2022 11:39
de Bernard_de_Lyon
bonjour Fab
Oui j'arrive à lire d'autre Offset, mais je n'arrive pas à lire les offsets de longueur 8 et je ne sais pas pourquoi.
Si je mets une longueur de 4 à la variable Latitude, celle si retourne une valeur, mais la variable LATDEGRE reste à zéro.

Re: Position GPS

MessagePosté: Dim 28 Aoû 2022 12:06
de Bernard_de_Lyon
Par exemple, avec une longueur 4 à la variable Latitude :
Si je suis au seuil de la piste 34 de Lyon Bron LFLY, la valeur retournée à Latitude est 828176676.
Si je suis au seuil de la piste 16, la valeur retournée à Latitude est 328102184.
Dans tous les cas, la valeur retournée à LATDEGRE est 0.

Re: Position GPS

MessagePosté: Dim 28 Aoû 2022 13:15
de fab
Comme tu divisés ta valeur par un nombre très grand, 0 doit être normal !
Tu divises par 10001750 * 65536 * 65536 ...

Re: Position GPS

MessagePosté: Dim 28 Aoû 2022 13:17
de fab
Fait alors ce ci :
Otherwise you will have to handle the high 32-bits and the low 32-bits separately, combining them into one double floating point value (say dHi). To do, copy the high part (the 32-bit int at 0564) to one double and the low part (the 32-bit unsigned int at 0560) to another (say dLo). Remember that the low part is only part of a bigger number, so doesn’t have a sign of its own.
Divide dLo by (65536.0 * 65536.0) to give it its proper
magnitude compared to the high part, then either add it to or subtract it from dHi according to whether dHi is positive or negative. This preserves the integrity of the original positive or
negative number. Finally multiply the result by 90.0/10001750.0 to get degrees.

Re: Position GPS

MessagePosté: Dim 28 Aoû 2022 13:48
de A320 hérétique
Je crois me souvenir que la taille d'une varible iocp est 32 bits, ceci doit donc expliquer cela (les variables sioc peuvent prendre des valeurs bien plus importantes, je ne pense pas que le pb se situe au niveau de la division).

Si je ne me trompe pas, alors il faut en effet, comme l'indique Fabien, décomposer les 8 bytes de la latitude en 4 bytes de poids lourd et 4 bytes de poids faibles, réaliser les calculs, et recombiner.

Michel

Re: Position GPS

MessagePosté: Jeu 1 Sep 2022 08:43
de Bernard_de_Lyon
Merci pour vos réponses. J'ai un autre problème qui vient de surgir et qu'il va me falloir résoudre en priorité :
Je lance FS2020 : tout va bien. Toutes les commandes répondent. Si je passe dans les menus avec la touche Echap, je passe effectivement sur l'écran des menus. Je repasse sur le simulateur avec le bouton Retour, là plus aucune commande ne fonctionne, ni avec la souris, ni avec le clavier, ni avec SIOC. Par exemple, si je fais un clic sur la commande des gaz, celle-ci devient jaune mais je ne peut pas modifier sa valeur. Et ceci pour toutes le commandes ! Un vrai mystère ...