Home 
  
 
Rotating earth
- GPS & NMEA -

Gesammelte Übersicht über das NMEA-Protokoll
Proprietäre Garmin-GPS-Daten
Umfangreiches Projekt zur NMEA-Auswertung (freier OPL source code)
  
  
  
 
Das NMEA Protokoll 0183 ( National Marine Electronics Association)

Alle hier aufgeführten Daten wurden verteilt im Netz gefunden und sind nach bestem Wissen und Gewissen zusammengestellt. Trotzdem kann ich selbstverständlich keine Gewährleistung bezüglich dieser Angaben übernehmen. Das unten aufgeführte OPL-Projekt bezieht sich auf diese Protokollbeschreibung. Für Hinweise auf Fehler oder Änderungsvorschläge bin ich jederzeit dankbar.

NMEA wurde zum Datenaustausch zwischen elektronischen Marine-Meß- und Auswertungsgeräten entworfen und ist inzwischen ein Standardprotokoll für das Interface vielseitiger Meß- und Datengeräte, das auf der seriellen Schnittstelle (RS232) aufsetzt. Erweiterte Spezifikationen sind in der Protokollversion 2.00 enthalten. Festgelegte Einstellungen für die Schnittstelle sind:

Baudrate4800
Datenbits8 (Bit 7 ist 0)
Stoppbits1 oder 2
Paritynone
Handshakenone

NMEA Informationen sind unterteilt in Sätze aus jeweils maximal 80 Zeichen. Jeder Satz beginnt mit dem Zeichen '$' und endet mit [CR][LF]. Beispiel:

$GPRMC,154232,A,2758.612,N,08210.515,W,085.4,084.4,230394,003.1,W*43[CR][LF]

Die ersten 5 Zeichen nach dem $ bezeichnet man als Adressfeld. Danach folgen (jeweils durch Komma abgegrenzt) die Datenfelder. Die ersten 2 Zeichen des Adressfeldes sind die sogenannte Talker-ID, die den Typ des Senders kennzeichnen (hier GP = GPS-Device). Eine Liste über alle Talker-ID's habe ich hier zusammengestellt.

Die folgenden 3 Buchstaben kennzeichnen den Typ (das Format) des Satzes, d.h. welche Informationen in diesem Satz übermittelt werden (hier: RMC = Minimum Navigation Information). Eine Liste über die meisten Satztypen und deren Syntax steht hier. Eine Beschreibung sämtlicher Satzformate ist in den Quelltexten des unten aufgeführten OPL-Projektes enthalten.
Datenfelder, die zum Sendezeitpunkt einen unbestimmten Wert haben, werden leer gelassen (zwei aufeinanderfolgende Kommas). Optional kann eine Check-Summe angehängt sein. Diese ist dann durch '*' vom Satz getrennt und entspricht der hexadezimalen Darstellung der XOR-Verknüpfung aller Zeichen zwischen '$' und '*'.

Die meisten Geräte senden nur eine geringe Teilmenge der NMEA-Sätze. Reihenfolge und Häufigkeit sind dabei vom Gerätetyp und dessen aktuellem Status abhängig.

Zusätzlich gibt es

  • herstellerspezifische Protokollerweiterungen - die sogenannten proprietären Daten
    Das Adressfeld solcher Sätze lautet:

    $Pmmmc---c

    wobei mmm durch die Hersteller-ID und c---c durch den Message-Code (beliebig lang im Rahmen der maximal zugelassenen Satzlänge) ersetzt wird.

  • Query-Sätze:

    $ttllQ,sss[CR][LF]

    eventuell mit Check-Summen-Angabe.
    tt wird dabei durch die Talker-ID des fragenden Gerätes (z.B. CC=Computer) und ll durch die Talker-ID des gefragten Gerätes (z.B. GP=GPS Gerät) ersetzt. Für sss muß der Typbezeichner des angeforderten Satzes eingetragen werden.
 

Proprietäre Garmin-GPS-Daten

Für Garmin GPS-Receiver habe ich die P-Daten hier zusammengestellt.

 

Open Source OPL Projekt zur NMEA-Auswertung


Achtung! Ich bin seit Anfang 2002 nicht mehr aktiv an diesem Projekt beteiligt, da sich mein Psion leider für immer verabschiedet hat und ich inzwischen auf andere Produkte (aktuell YAKUMO GPS DELTAX mit Mobile Navigator MN|6.15 umgestiegen bin. Trotzdem übernehme ich weiterhin die Aufgabe des "Projektleiters" und beantworte auch gern alle Fragen, bzw. leite sie gegebenfalls auch an beteiligte Entwickler, die es inzwischen überall auf der Welt gibt, weiter. Ich trage mich ebenso mit dem Gedanken, ein ähnlich umfangreiches Freeware-Programm für Pocket PC 2002 zu entwickeln.

Einführung

Die Möglichkeiten eines Handheld-Navigationsgerätes kann man erst im Zusammenspiel mit einem (möglichst transportablen) Computer vollständig, individuell zugeschnitten und komfortabel nutzen. Ich verwende dazu den Handheld-PC Serie5 von PSION und einen GPS-Empfänger GPS12 von Garmin.
Die Anleitung zum Bau eines Verbindungskabels zwischen GPS-Gerät und Serie5 kann man hier nachlesen.

Das Projekt zur Entwicklung eines umfangreichen OPL-Programmes auf dem Serie5 ist noch nicht abgeschlossen. Deswegen wird die Liste der Quelldateien ständig erweitert. Um für Anfänger eine Einführung in OPL, das Ansprechen der seriellen Schnittstelle, die Auswertung der NMEA-Daten und die Darstellung auf dem PSION zu geben, werden verschiedene Versionen des Quelltextes angeboten, die unterschiedlichen Entwicklungsstadien entsprechen.
Es soll möglichst allgemeingültig sein, um verschiedenste NMEA-kompatible Geräte anzusprechen. Testen kann ich es natürlich nur am Garmin GPS12. Auch die proprietären Daten werde ich nur für Garmin-GPS implementieren. Unterstützung und Hilfe sind willkommen!
Zu guter Letzt soll per Garmin-Protokoll auch ein Waypoint- und Routentransfer ermöglicht werden.

Bisherige Funktionalität:

  • Verbindungsaufbau über die serielle Schnittstelle
  • Terminalemulation und Monitor (File/Screen) für ankommende NMEA Sequenzen
  • Freie Wahl des NMEA-Gerätes, das der Psion emulieren soll
  • Abfrage des angeschlossenen Gerätetypes
  • Individuelle Einstellungen für Meldungen, Ausgabeformate,...
  • Vollständiger Parser für alle Standard-NMEA-Sätze
  • Parser für alle propietären Garmin-Sätze
  • Statistik über Datenfelder (Mittelwert/Streuung/Extremwerte)
  • Registrierung von Karten (MBM)
  • Positionsanzeige, Distanzberechnungen, Zoomfunktion auf registrierten Karten
  • Automatisches Setzen des UTC-Offsets
  • Setzen der PSION-Uhr
  • Track-Aufzeichnung, -Auswertung und adaptive -Komprimierung
  • Allgemeine Waypoint-Verwaltungsroutinen (Ändern, Löschen, Erstellen, Eintragen in Karten, ...)
  • Allgemeine Routen-Verwaltungsroutinen (Ändern, Löschen, Erstellen, Anzeigen in Karten, ...)
  • Ein Großteil des Garmin-Protokolls ist implementiert.
  • Waypoint- und Routen-Transfer zwischen Psion und Garmin-Gerät
  • Transfer eines Track-Logs vom Garmin.
  • Import/Export von Waypoints und Routen in/aus eine(er) Textdatei.
  • Verschiedene Positions-Cursor stehen zur Verfügung.
  • Verschiedene Modi für Pen-Aktionen auf angezeigten Karten sind wählbar.
  • Das OPX-Modul nDirNav erlaubt einen schnellen File-Dialog.
  • Integrierte Weltkarte für einfaches "Start-and-Go".
  • Parser für beliebiges Latitude/Longitude-Eingabeformat
  • Extras: Task-, Backlight- und Autoswitch-off-Manager;
  • Daten der Sonnenfinsternis für aktuelle/eingegebene Position
  • Eintragen des SoFi-Pfades in Karten
  • Ein kleiner Einheiten- und Entfernungsrechner
  • Ein Offline-Map-Datum-Konverter steht zur Verfügung.
  • Erweiterbare Datenbank mit 220 vordefinierten Map-Datums und allen wichtigen Ellipsoiden
  • Garmin-Protokoll steht jetzt gleichberechtigt neben dem NMEA-Protokoll, somit ist jetzt z.B. auch das Tracking mit dem Garmin-Protokoll möglich.
  • Die direkte Ausgabe in das Streetplaner-Overlay-Format ist möglich! (c) Wolfram Müller
Screenshots (Version 1.10b)

Und jetzt: Freies DOWNLOAD der Installationsdatei PsiNMEA.sis (Version 2.11b) .
Es sind auch die benötigten OPX Module RMRAlarm, Systinfo und nDirNav enthalten.
Es gibt auch eine Hilfe-Datei (momentan nur im MS-Word-Format).
(Wegen vielfacher Schwierigkeiten, sis-Dateien mit Netscape fehlerfrei zu laden, habe ich auch ein ZIP-File bereitgestellt, das sowohl die SIS- als auch die Hilfe-Datei enthält.)

In den folgenden Versionen soll unter anderem integriert werden:

  • Nahezu vollständiges Garmin-Protokoll.
  • Verschiedene Screens/Panels für ständige Anzeige wichtiger NMEA-Daten.
  • Online-Konvertierung von Karten-Datums.
  • Suchfunktionen auf den Datenbanken.
  • Verbesserte Online-Hilfe.

Für Programmierer

Die Sourcecodes für die aktuelle und einige älteren Versionen finden Sie hier.

Die Quelltexte sind weitestgehend selbsterklärend und ausführlich mit (englischen) Kommentaren versehen. Eine umfassende Einführung in den Quellcode, insbesondere in die NMEA-Parseroutinen finden Sie hier.


Seitenanfang 04.05.2009,