Bonjour à tous,
En train de réinventer la roue, puisque je sais qu'il existe par exemple python-gpsd, j'essaye de récupérer les données NMEA depuis un GPS USB. Pour la base, je suis sous Ubuntu 10.04 LTS et j'utilise Python v2.6.
Considérant mon GPS comme un périphérique série j'ai écrit ces quelques lignes afin de m'y connecter :
Le résultat n'est pas concluant, puisque je devrais trouver des choses comme cela (des extraits en tous cas) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #!/usr/bin/python # -*- coding: UTF-8 -*- import serial port_serie=serial.Serial('/dev/ttyUSB0', 9600) if port_serie.isOpen() : print('Le port série du GPS est ouvert !') phrase_nmea=port_serie.read(10) #Pour ne lire qu'un tampon de 10 caractères pour commencer. print 'Phrase NMEA : ', phrase_nmea #Cas 1 print('Phrase NMEA : ', phrase_nmea) #Cas 2 port_serie.close() print('C\'est fini... pour l\'instant')
avec bien entendu des valeurs numériques à la place des 'x' et des 'y', mais je tire cette exemple de la documentation du protocole NMEA0183. A la place, j'obtiens dans le cas 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $--GGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh
et dans le cas 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Phrase NMEA : `x`�~�`
C'est ce second cas qui m'a mis sur la piste d'un problème d'encodage. Je crois me souvenir que Python utilise l'encodage de la console pour afficher les résultats hors les données du GPS sont envoyées en ASCII (d'après la documentation constructeur), est-ce une piste ? D'autre part, la commande 'print' évalue les résultats, et je pense que c'est pour cette raison que j'ai ces valeurs dans le cas 1 alors que dans le cas 2, les résultats ne seraient pas évalués ? Pourriez-vous m'aider à y voir plus clair et à récupérer mes trames NMEA ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part ('Phrase NMEA : ', '`x`\x00\xe6~\x9e`\x06\x1e')
Une dernière information, les données NMEA sont envoyés à chaque fois avec [CR][CF] en fin de ligne, j'avais donc essayer au début de faire :
mais cela ne fonctionne pas, il semble que je lise les données de façon cryptées ou compressées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part phrase_nmea=port_serie.readline()
Par ailleurs j'ai testé ce GPS qui fonctionne correctement, et me donne bien la position avec d'autres logiciels. (au cas où...)
Nouveau sur le forum, j'ai cherché pendant un moment déjà sur google, bien entendu et sur le forum également, mais je ne trouve pas de réponse, donc je poste mon message ici, espérant qu'il y trouvera réponse. Merci d'avance.
Partager