Developing for GPS

I started coding some testing examples for GPS - to check out two commercial libraries. Both suck. I am tempted to rewrite the libraries itself and may be it'll suck less. Both the commerical libraries have terrible documentation and one of them has its error messages in German! One is an ActiveX control and the other a static DLL. Both call for marshalling wrappers as my testing applications are with Windows Forms in C#. I still have to modify the library to read the USB ports in my laptop. (Gives a new depth to combating 'war chalking'). I also found out that the bulk of the GPS library really is string-processing - basically, from the port you get a stream of strings in the NMEA 0183 standard and then parse the commands and parameters to update your map/grid locations. Ironically, NMEA is a marine association and GPS was initially deployed for ships & boats. Now we use it for precision-guidance (as shown a few weeks ago) and for checking during hiking trips, if bears really do what they do in the woods...