Data can be sent from a serial GPS interface formatted to form an NMEA "Sentence". Each Sentence is self-contained and independent from other sentences.
All NMEA Sentences start with an ASCII dollar sign "$" that delimits the start of the frame. The next five characters identify the talker (two characters, GP for GPS). This is followed by the type of message (three characters).
The sequence $GP forms the synchronisation marker for decoding the frames sent by a NMEA GPS receiver. Examples of NMEA Sentences generated with GPS data include:
Where $GSV is Satellite Data, and GGA is Fix Data.
A range of sentences have been implemented by different equipment manufacturers, so there is no one format that every GPS device conforms to. None the less, a few of the formats are common.
All data fields that follow are comma-delimited and represented in ASCII text. The information incudes data such as the PVT (position, velocity, time) computed by the GPS receiver. The data may vary in the amount of precision contained in a message. For example, the time may be represented in decimal parts of a second or location may be show with 3 or even 4 digits after the decimal point. Where data is unavailable, the corresponding field remains blank (it contains no character before the next comma).
In most traces, the first character that immediately follows the last data field character is an asterisk, "*", this indicates presence of a longitudinal frame parity checksum, represented as a two-digit hexadecimal number.
The longitudinal frame parity checksum is the bit wise exclusive OR of ASCII codes of all the characters between the $ and the *, excluding these two characters. This checksum is optional for most data sentences, but is compulsory for RMA, RMB, and RMC (and some others).
The end of each frame (sentence) is followed the characters Carriage Return <CR> and Line Feed <LF>, simplifying the display on a simple serial terminal, by starting a new line after each sentence. These characters have no real value, because the next frame only starts after a $ is received, and omitting these characters would not impact reception of the data.
Examples include:
See also
Prof. Gorry Fairhurst, School of Engineering, University of Aberdeen, Scotland (2024).