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

berenger_R 21 Messages postés vendredi 17 février 2006Date d'inscription 3 avril 2006 Dernière intervention - 23 févr. 2006 à 09:39 - Dernière réponse : ymca2003 2070 Messages postés mardi 22 avril 2003Date d'inscription 3 juillet 2006 Dernière intervention
- 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
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 23 févr. 2006 à 12:54
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

Merci DeAtHCrAsH 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de DeAtHCrAsH
ymca2003 2070 Messages postés mardi 22 avril 2003Date d'inscription 3 juillet 2006 Dernière intervention - 23 févr. 2006 à 09:55
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
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 23 févr. 2006 à 09:59
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
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 23 févr. 2006 à 10:28
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
berenger_R 21 Messages postés vendredi 17 février 2006Date d'inscription 3 avril 2006 Dernière intervention - 23 févr. 2006 à 11:08
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
berenger_R 21 Messages postés vendredi 17 février 2006Date d'inscription 3 avril 2006 Dernière intervention - 23 févr. 2006 à 13:45
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
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 23 févr. 2006 à 14:11
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
berenger_R 21 Messages postés vendredi 17 février 2006Date d'inscription 3 avril 2006 Dernière intervention - 23 févr. 2006 à 15:31
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
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 23 févr. 2006 à 16:39
0
Merci
Shell
Commenter la réponse de DeAtHCrAsH
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 23 févr. 2006 à 16:41
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
berenger_R 21 Messages postés vendredi 17 février 2006Date d'inscription 3 avril 2006 Dernière intervention - 23 févr. 2006 à 16:49
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
ymca2003 2070 Messages postés mardi 22 avril 2003Date d'inscription 3 juillet 2006 Dernière intervention - 24 févr. 2006 à 09:25
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
berenger_R 21 Messages postés vendredi 17 février 2006Date d'inscription 3 avril 2006 Dernière intervention - 24 févr. 2006 à 09:52
0
Merci
Ok, je t'ai envoyé mon adresse mail.
Et encore merci
Commenter la réponse de berenger_R
DeAtHCrAsH 2674 Messages postés vendredi 25 janvier 2002Date d'inscription 6 février 2013 Dernière intervention - 24 févr. 2006 à 10:00
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
ymca2003 2070 Messages postés mardi 22 avril 2003Date d'inscription 3 juillet 2006 Dernière intervention - 24 févr. 2006 à 14:22
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.