![]() |
Navigation : Trame NMEA
|
mars 2019 |
Dans le descriptif précédent l'analyse était en noir et blanc dans une fenêtre "console" !.
Je vous propose ici un analyseur réalisé dans des fenêtres Windows avec les petits dessins qui vont bien. Cette réalisation est
développée avec le langage C++ dans l'environnement QT. Je vous livre donc les points importants des fichiers sources qui permettent
de résoudre les problèmes qui vous entravent dans la réalisation de ce genre d'application.
(pas les sources complet ! et puis quoi encore ! il faut bosser un minimum...) Pour les non programmeur l'executable sera bientôt mis à dispo...
L'application permet de lister les trames NMEA depuis un fichier texte ou depuis une liaison NMEA
(soit directe NMEA ou derrière un multiplexeur). Il est entre autre possible de mémoriser toutes les trames reçues ou seulement
certain type de trame dans un fichier pour une exploitation future.
Une petite démo vidéo est disponible plus bas (laissez lui le temps de se charger !)...
Structure de la trame NMEA décrite dans fichier d'entête du programme C++, on y retrouve l'objet "struct_nmea" avec ses données et ses méthodes.
Ici un exemple d'initialisation d'un type de trame NMEA.
Affichage des infos de la trame NMEA (conversion latitude, longitude, date, heure) L'heure affichée est l'heure UTC donc qui ne tient pas compte des décalages été hivers, j'ai préféré conserver ici l'affichage des données brutes.
Affichage du positionnement des satellites en fonction des infos de la trame nmea GSV. En réalité NMEA peut suivre 16 satellites soit 4 trames GSV qui se suivent. (Certains systèmes vont même au-delà des 16 satellites de la norme avec des trames supplémentaires (non traitées ici on n'en traite que 16 (4 trames))). Le positionnement de la position en fonction de l'élévation et de l'azimut sur un cercle demande l'utilisation des sinus et cosinus (notions que j'avais un peu oubliée, c'est pourquoi je vous passe ici le code si vous êtes comme moi !).
Calcul de la checksum de la trame nmea : Je vous passe également le code, il faut faire un ou exclusif logique de tous les caractères de la trame sauf le $ (ou !) du début jusqu'à l'étoile de la fin (sans l'étoile). J'ai un peu galéré car QT traite les string en représentant chaque caractère sur 16 bit alors forcément ça ne marchait pas !
Voilà donc un outil qui permet de mieux comprendre ce qui se passe sur le réseau NMEA 0183. IL est perfectible dans bien des domaines,
dans une prochaine aventure je vais m'intéresser aux trames AIS et ensuite j'essaierai de voir comment fonctionne le NMEA 2000... A suivre...
Si vous le souhaitez, vous pouvez télécharger l'exécutable de cette application dans le dernier chapitre de cette analyse sur ce site...