Position GPS

Tous les tutoriels sur la programmation SIOC, le language des cartes Opencockpits

Position GPS

Messagede Bernard_de_Lyon » Dim 28 Aoû 2022 09:39

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
Avatar de l’utilisateur
Bernard_de_Lyon
 
Messages: 14
Inscription: 2/02/13
Localisation: Lyon

Re: Position GPS

Messagede fab » Dim 28 Aoû 2022 10:53

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
Avatar de l’utilisateur
fab
 
Messages: 4417
Inscription: 26/12/12
Localisation: Roubaix

Re: Position GPS

Messagede Bernard_de_Lyon » Dim 28 Aoû 2022 11:39

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.
Avatar de l’utilisateur
Bernard_de_Lyon
 
Messages: 14
Inscription: 2/02/13
Localisation: Lyon

Re: Position GPS

Messagede Bernard_de_Lyon » Dim 28 Aoû 2022 12:06

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.
Avatar de l’utilisateur
Bernard_de_Lyon
 
Messages: 14
Inscription: 2/02/13
Localisation: Lyon

Re: Position GPS

Messagede fab » Dim 28 Aoû 2022 13:15

Comme tu divisés ta valeur par un nombre très grand, 0 doit être normal !
Tu divises par 10001750 * 65536 * 65536 ...
Avatar de l’utilisateur
fab
 
Messages: 4417
Inscription: 26/12/12
Localisation: Roubaix

Re: Position GPS

Messagede fab » Dim 28 Aoû 2022 13:17

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.
Avatar de l’utilisateur
fab
 
Messages: 4417
Inscription: 26/12/12
Localisation: Roubaix

Re: Position GPS

Messagede A320 hérétique » Dim 28 Aoû 2022 13:48

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
http://www.myA320sim.com
Simu mixte P3D/FS2020, serveur P3Dv4/A320 FMGS (7700k et GTX 1070 sous W10 64), client P3Dv4/FS2020 (i9-12900K et RTX 4070 Ti Super sous W10 64), 3 vdp Optoma GT1080E, client A320 FMGS (2600k sous W10 64).
Avatar de l’utilisateur
A320 hérétique
 
Messages: 3358
Inscription: 2/09/12
Localisation: Pornic

Re: Position GPS

Messagede Bernard_de_Lyon » Jeu 1 Sep 2022 08:43

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 ...
Avatar de l’utilisateur
Bernard_de_Lyon
 
Messages: 14
Inscription: 2/02/13
Localisation: Lyon


Retourner vers Les TUTOS SIOC





Qui est en ligne

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

cron