Problème de decodage trame nmea

Résolu
flatron123 Messages postés 49 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 juin 2008 - 21 avril 2008 à 23:21
flatron123 Messages postés 49 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 juin 2008 - 26 mai 2008 à 11:40
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
A voir également:

28 réponses

flatron123 Messages postés 49 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 juin 2008
6 mai 2008 à 09:32
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
0
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
6 mai 2008 à 09:40
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
0
flatron123 Messages postés 49 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 juin 2008
8 mai 2008 à 14:03
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.


 
0
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
10 mai 2008 à 22:16
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flatron123 Messages postés 49 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 juin 2008
10 mai 2008 à 23:39
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
0
NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
11 mai 2008 à 08:55
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
0
flatron123 Messages postés 49 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 juin 2008
13 mai 2008 à 07:54
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
0
flatron123 Messages postés 49 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 juin 2008
26 mai 2008 à 11:40
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
0
Rejoignez-nous