I do a lot of location aware computing, often incorporating GPS. I have my own little simple NMEA parser that doesn't do anything special - just transforms the GPS specific sentences into usable numbers, flags, and so forth.
However, there is a lot of active development done on projects such as GPSD and Gypsy. If GPS were a simple matter, the projects would have finished long ago and simply gone into maintenance mode.
- What do they know/do that I don't know about, and therefore my code doesn't account for?
From an excellent article by the GPSD lead:
- NMEA standard doesn't provide a full TPV (time, position, velocity) tuple with error, geoid and magnetic variation, etc
- Since different values are in different sentences, and there's no defined order you can't easily know which velocity goes with which position report
- Some values are not given in full (ie, year is two digits on the more common and avilable sentences)
- No standardized way to determine vendor, model, firmware
- No standardized way to change settings (communications speed, sentences reported, samples per second, etc)
- Incompatible binary protocols for advanced usage and faster reporting
- Due to interesting race conditions for USB to serial bridges and bluetooth to serial bridges, changing the speed is a very tricky problem
-Adam