NMEA-Prüfsummen-Rechner
Füge einen oder mehrere NMEA-0183-Sätze ein, einen pro Zeile. Zu jedem siehst du die richtige Prüfsumme, ob die übertragene stimmt, und den korrigierten Satz.
Ein Satz pro Zeile, mit oder ohne *Prüfsumme. Sätze dürfen mit $ oder ! (AIS) beginnen.
Läuft vollständig in deinem Browser — nichts, was du eingibst, wird übertragen.
So funktioniert die NMEA-Prüfsumme
Die Prüfsumme ist ein einfaches XOR über alle Zeichen zwischen dem führenden $ (oder !) und dem *. Beide Zeichen zählen nicht mit, das Zeilenende ebenso wenig.
- Mit 0 beginnen und den ASCII-Code jedes Zeichens nach dem $ nacheinander per XOR einrechnen.
- Am * aufhören — es beendet den gesicherten Bereich.
- Das Ergebnis als zwei Hex-Ziffern in Großbuchstaben hinter das * schreiben: GGA … ,M,,*47.
Dasselbe in C
Ein paar Zeilen genügen. Vergleiche das Ergebnis mit den zwei Hex-Ziffern hinter dem *, bevor du den Feldern traust.
/* XOR from after '$' up to '*' */ uint8_t nmea_checksum(const char *sentence) { uint8_t sum = 0; for (const char *p = sentence + 1; *p && *p != '*'; p++) sum ^= (uint8_t)*p; return sum; /* print as "%02X" after the '*' */ }
Häufige Fragen
Welche Zeichen zählen zur Prüfsumme?
Alles genau zwischen $ (oder !) und * — Talker und Satzkennung, jedes Komma und jedes Feld. Das $, das * und das CR LF am Ende zählen nicht mit.
Ist die Prüfsumme Pflicht?
Praktisch ja: aktuelle Empfänger senden sie bei jedem Satz, und viele Parser verwerfen Sätze ohne sie. Ältere NMEA-Fassungen erlaubten, sie bei manchen Sätzen wegzulassen — deshalb kommt dieses Werkzeug auch mit Zeilen ohne Prüfsumme zurecht.
Gilt dieselbe Prüfsumme für AIS (!AIVDM)?
Ja. AIS-Sätze beginnen mit ! statt $, nutzen aber dieselbe XOR-Prüfsumme über die Zeichen bis zum *.
Mehr als ein Satz zu prüfen?
Trace liest die serielle Leitung eines GPS-Empfängers oder Kartenplotters, prüft die Prüfsumme jedes $-Satzes und zeigt Talker und Satztyp — live und durchsuchbar.