Problème de decodage trame nmea [Résolu]

Signaler
Messages postés
49
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
29 juin 2008
-
flatron123
Messages postés
49
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
29 juin 2008
-
Bonjours à toutes et à tous,

Je developpe une petite appli avec mon gps sous visual basic 2008, mais je n'arrive pas à trouver les commandes pour lire le buffer, le segmenter, et le traiter. Quelqu'un pourrait il eclairer ma lanterne svp?

Merci d'avance.

Flatron

28 réponses

Messages postés
49
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
29 juin 2008

Bonjour Nico,

Voilà comment je recupere la fin de ma trame. Le truc genant est que, normalement, si il n'y a pas d'infos, la trame à cette tete: GPSV,xx,xx,xx,xx,xx,xx,  et non pas GPSV,xx,xx,xx,xx,xx,xx,,,,,, comme je l'aurais voulu.

If



Words(2) <>

""



And
Words(2) =

"3"



Then






If
Words(4) <>

""



Then






Dim
SatNeuf

As



Double
=

Double
.Parse(Words(4), NmeaCultureInfo)


RaiseEvent
SVU9(SatNeuf)


End



If






'If Words(8) <> "" Then






'Dim SatDix As Double = Double.Parse(Words(8), NmeaCultureInfo)






'RaiseEvent SVU10(SatDix)






'End If






'If Words(12) <> "" Then






'Dim SatOnze As Double = Double.Parse(Words(12), NmeaCultureInfo)






'RaiseEvent SVU11(SatOnze)






'End If






'If Words(16) <> "" Then






'Dim SatDouze As Double = Double.Parse(Words(16), NmeaCultureInfo)






'RaiseEvent SVU12(SatDouze)






'End If






'If Words(7) <> "" Then






'Dim SatneufSNR As Double = Double.Parse(Words(7), NmeaCultureInfo)






'RaiseEvent SVU9SNR(SatneufSNR)






'End If






' If Words(11) <> "" Then






'Dim SatdixSNR As Double = Double.Parse(Words(11), NmeaCultureInfo)






'RaiseEvent SVU10SNR(SatdixSNR)






'End If






'If Words(15) <> "" Then






'Dim SatonzeSNR As Double = Double.Parse(Words(15), NmeaCultureInfo)






'RaiseEvent SVU11SNR(SatonzeSNR)






'End If






'If Words(19) <> "" Then






'Dim SatdouzeSNR As Double = Double.Parse(Words(19), NmeaCultureInfo)






'RaiseEvent SVU12SNR(SatdouzeSNR)






'End If






End



If

T'as une idée? Merci
Messages postés
14655
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 février 2020
139
Bonjour

Je suspecte plutot une réception en provenance du port COM incomplète.

J'ai déjà eu un pb similaire (avec du Modbus, mais le principe est le même), en fait, tu ne récupère que le début de la trame, car celle-ci est trop longue, la classe de gestion du port série ne t'en retourne qu'une partie, il faudrait que tu fasse un buffer de réception et dès que tu reçoi les cartactères de fin de ligne (CR/LF), tu traduit la trame.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Messages postés
49
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
29 juin 2008

Bonjour,

Oula ça m'a l'air compliqué à faire ça. Ce qui est etrange est que lorsque je change de periph GPS, il n'y a que les infos du dernier satellite que je ne recois pas, avec le meme port COM. Si le decodage incomplet provient du port COM qui n'arrive pas à tout retenir, comment est-ce possible, avec un autre GPS (mais avec une antenne plus puissante) d'en obtenir plus? Simplement grace à un signal plus important?


Merci




PS: Je t'ai laissé un msg sur une source de ton site sur ton forum.


 
Messages postés
14655
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 février 2020
139
Bonjour

Je récacapépète.

- Tu reçois la trame avec à la fin que des , aulieu d'une fin de trame ?
- Tu reçoi une ta trame, et le CRC n'est pas reçu ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Messages postés
49
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
29 juin 2008

Bonjour,

En fait, j'ai à ma disposition plusieurs recepteurs GPS, de 2 modèles différents, dont un qui a une reception bien meilleure que les autres. De plus, j'habite dans Paris, et faut avouer que les immeubles ne sont pas les meilleurs amis des satellites, donc souvent des problèmes de reception. En fait, avec le recepteur A (low quality), je ne reçois pas la fin de la 3eme trame GPGSV. Avec le recepteur B (hight quality) je la reçois quasiement tout le temps. Comment faire pour que, avec le recepteur de mauvaise qualité, je puisse dire que si "aucune donnée". Je crois que ce post d'un utilisateur, explique d'une autre maniere mon probleme:
http://www.gpspassion.com/FORUMSEN/topic.asp?TOPIC_ID=66744

Merci
Messages postés
14655
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 février 2020
139
Bonjour

Alors là, il faudrait à ce moment que tu mette les trames en question, car je n'ai pas de récepteur GPS chez moi et je suis un peu (voir plus :p ) largué.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Messages postés
49
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
29 juin 2008

Bonjour,

Problème résolu. Il fallait, avant d'aller chercher les infos, n'allez chercher les infos que des satellites qui etait mentionné en debut de trames :). Mes questions à propos de la NMEA sont finies. Merci pour ton aide Nico.

Derniere petite question qui n'a rien à voir, comment pouvoir repeter une fonction toutes les x secondes à partir du declenchement de celle-ci par un bouton?

Merci
Messages postés
49
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
29 juin 2008

Desolé pour le retard dans la réponse.

C'est parfait, merci Nico. Je n'ai plus de soucis avec la trame NMEA, le sujet est donc clos. Je m'attaque maintenant au TCP ;)

Merci

flatron
1 2