Calcul du point GPS a partir de l'acquisition en temps réel des trames d'un rece [Résolu]

Messages postés
21
Date d'inscription
vendredi 17 février 2006
Dernière intervention
3 avril 2006
- - Dernière réponse : ymca2003
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Dernière intervention
3 juillet 2006
- 24 févr. 2006 à 14:22
Bonjour,

Je doit réaliser un programme orientée objet en C++
sous linux qui réalise le calcul du point GPS à partir de l'acquisition
en temps réel des trames d'un recepteur.

Plus précisément, il me faut récupérer en temps réel
les differentes trames GPS qui proviennent d'un recepteur pour les
traiter et ranger toutes les données utiles (contenu dans ces trames)
dans une structure. Ceci me permetra ensuite de faire des calculs avec
ces données.

De plus si quelqu'un sait aussi comment passer des
trames récupérées de type ASCII à un type struct bien ordonné.

Donc si quelqu'un à des infos ou des classes déja
faites et réutilisables pour mon programme je lui serais reconnaissant
de bien vouloir m'aider.

Je vous remercie par avance
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
3
Merci
Tu parcours ta trame et tu comptes 20 virgules. A partir de la 20ieme, tus commences a lire les valeurs souhaitées.
Exemple :

int cpt;
char *pszTrame = new char[1024];
char *pszBuff = new char[1024];

strcpy(pszTrame, "$GPRMC,000405.984,V,0000.0000,N,00000.0000,E,,,101102,.....");

cpt = 0;
pszBuff = pszTrame;

while(*pszBuff && cpt < 20)
{
if(*pszBuff == ',') cpt++;
pszBuff++;
}

// Ici tu fais ton traitement a partir de *pszBuff pour stocker les valeurs dans ta structure

A toi d'adapter en conséquence, mais ca devrait ressembler a un truc du genre.
Par contre pour ce qui est de ta structure, je te conseil de la sauvegardée dans un fichier en binaire, a moins que tu ne fasses pas d'archivage.
A ce moment la, utilises alors un tableau de structures.

Shell

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de DeAtHCrAsH
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Dernière intervention
3 juillet 2006
0
Merci
Cherche déjà le format NMEA 0183 sur le net.

ensuite c'est du parsing. j'ai un bout de code quelque part. Je met la main dessus et je te tiens au courant.
Commenter la réponse de ymca2003
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
0
Merci
Les GPS éméttent sur le port série.
Dans leur trame, tu y retrouves pas mal d'informations telles que la position actuelle géoréférencée, l'altitude, le nombre de sattelite capté, la puissance du signal, l'heure UTC, ....
Pour ce qui est des coordonnées, tu devras peut etre les convertir sur la base souhaités (Lambert II, NTF, ....)

Pour la programmation a toi d'aviser en conséquence. Essaye deja de faire le tri sur la trame recue, et crées toi ensuite un structure qui corresponde au mieux a tes besoins.
Les données GPS sont de mémoire séparées par des points virgules ce qui devrait te simplifier la tache.

Je te conseil ainsi de commencer par prendre un stylo et une feuille et de noter tous les champs qui te seront utiles dans la trame.
Ensuite crées la structure qui va bien.

Après pour ce qui est du traitement du devrais t'en sortir sans trop de mal a l'aide du forum si nécéssaire.

Shell
Commenter la réponse de DeAtHCrAsH
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
0
Merci
Voici une trame émise par mon GPS. Dans cette trame, le GPS n'as aucun FIX.
Si tu as besoin d'une trame en mode de fonctionnement avec FIX je peux essayer de trouver un endroit ou mon GPS puisse capter.
Voici la trame :

$GPRMC,000405.984,V,0000.0000,N,00000.0000,E,,,101102,,*13
$GPGGA,000406.984,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*71$GPGGA,000650.974,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,0.0,M,0.0,0000*7F
$GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05

Shell
Commenter la réponse de DeAtHCrAsH
Messages postés
21
Date d'inscription
vendredi 17 février 2006
Dernière intervention
3 avril 2006
0
Merci
Merci pour ces infos



Je connais le format de mes trames. Ce que je n'arrive pas a faire,
c'est récupérer la 20ène de valeur utile (ephéméride, psr, les
differents temps) dans une structure afin de faire mes calculs.

J'ai toujours fais des programme ou je demandé a l'utilisateur de
rentrer des valeurs ou de faire un truc. Là je doit comuniquer avec
l'exterieur et ensuite gérer un fichier ASCII. Est ce qu'un fichier
ASCII ce déclare comme un char[] ?

Pour ce qui est des calculs qui suivent ca devrait aller.

Encore merci a vous pour la rapidité de vos réponse.
Commenter la réponse de berenger_R
Messages postés
21
Date d'inscription
vendredi 17 février 2006
Dernière intervention
3 avril 2006
0
Merci
Je te remerci pour la methode, ca me semble trés bien.

Je vais tenter comme ca quand j'aurrais réussie à récupérer en temps réel toutes les trames du recepteur.



Juste un truc sur cette ligne :

while(*pszBuff && cpt < 20)

Je comprend pas pk tu utilises *pszBuff ? j'aurrais juste mis : while(cpt < 20)



Sinon, tu fais quoi dans la vie pour etre aussi doué en programation ?
Commenter la réponse de berenger_R
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
0
Merci
J'utilise *pszBuff pour etre sur que je ne suis pas arrivée en fin de trame et que je peux donc encore lire les charactères suivants.
Ca évite les plantages dus au dépassement de buffer (bufferoverflow).

Sinon je suis programmeur analyste et étudiant à mi-temps.

Shell
Commenter la réponse de DeAtHCrAsH
Messages postés
21
Date d'inscription
vendredi 17 février 2006
Dernière intervention
3 avril 2006
0
Merci
Moi je suis un vieux stagiaire de 30 ans qui a repris ces étude à 27
ans. Et là je doit valider mon école par ce stage. Mais comme je ne
suis un expère en programation ca va etre dure.

Et vraiment merci de prendre de ton temps pour m'aider.
Commenter la réponse de berenger_R
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
0
Merci
Shell
Commenter la réponse de DeAtHCrAsH
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
0
Merci
Mieux vaut aider un vieux stagiaire qu'un ptit pisseur.
Tu fais quoi comme école exactement ? Et tu faisais quoi avant de reprendre les cours?

Shell
Commenter la réponse de DeAtHCrAsH
Messages postés
21
Date d'inscription
vendredi 17 février 2006
Dernière intervention
3 avril 2006
0
Merci
Je fais l'ENSEEIHT à toulouse en automatique et informatique industriel.

Et avant je travailler sur les plateformes pétrolière en tant que technicien pour faire du positionnement GPS.

Voila, et toi tu es d'ou et tu traivails et étudie sur quoi ?
Commenter la réponse de berenger_R
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Dernière intervention
3 juillet 2006
0
Merci
Bon j'ai retouvé un code de parsing nmea avec extracttion de tous les champs des trames.
Si tu me donnes une @ e-mail (par MP c'est plus sur), je te filerais le code en question.
Commenter la réponse de ymca2003
Messages postés
21
Date d'inscription
vendredi 17 février 2006
Dernière intervention
3 avril 2006
0
Merci
Ok, je t'ai envoyé mon adresse mail.
Et encore merci
Commenter la réponse de berenger_R
Messages postés
2674
Date d'inscription
vendredi 25 janvier 2002
Dernière intervention
6 février 2013
0
Merci
Je suis de Lyon, je bosse dans un boite de programmation et je poursui mes études en parrallèle.
Je ne bosse pas a temps plein.

ymca2003> T'as bossé sur quel type de GPS ?

Shell
Commenter la réponse de DeAtHCrAsH
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Dernière intervention
3 juillet 2006
0
Merci
Embarqué pour du suivi de flotte à distance.
Commenter la réponse de ymca2003

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.