Towards a Better GPS ProtocolEricStevenRaymond
What's Wrong with NMEA 0183, and Why Fix It? The protocol used by GPS devices to report to computers is a small subset of NMEA 0183. NMEA stands for "National Marine Electronics Association", and the features GPSes use for reporting time/position/velocity information are a small part of a protocol originally designed for communication between parts of complex marine navigation systems. Thus the full protocol includes support for depth sounders, LORAN, and many other things irrelevant to a modern GPS.
The lowest level of NMEA 0183 is quite sensibly designed. The protocol consists of sentences, each led by a dollar sign and an identifying text tag, followed by multiple comma-separated textual fields, ended by an asterisk, a checksum, and LF/CR. This is a simple, clean format with good extensibility, easy to parse and generate. It is well adapted to its job, which is to pass small amounts of numeric and status information. The textual format makes it easy to log NMEA sessions, edit them, and play them back — a substantial advantage in developing talker and parser software.
Unfortunately, the good news ends there. The design of the upper layers of NMEA 0183 is patchy, kludgy, and replete with the kind of errors that arise from growth by accretion rather than forethought. Here are some of the more obvious problems:
No comments yet, be the first one to post comment.