I am using the afss version posted here: http://forums.ladyada.net/viewtopic.php?f=25&t=8351
One reason that the error rate may be higher then expected is the circuitous connectivity in my test rig. The GPS was connected to the arduino via a pair of xbee modules. One xbee is connected to the GPS at 4800 baud, the other is connected to the Arduino afss input at 9600 baud.
Strange, I tried connecting the GPS directly to the Arduino and am no longer getting the encode method returning true so newdata is always false and dump is never called.
If I modify feedgps to the following, I do get the sentences printed out:
bool feedgps()
{
while (afss.available())
{
char c = afss.read();
Serial.print(c);
if (gps.encode(c) )
// if (gps.encode(afss.read()))
return true;
}
return false;
}
Fwiw, here is some of the output from that code:
$GPGSV,2,1,08,11,70,142,40,14,22,041,00,17,40,300,00,19,12,162,00*79
$GPGSV,2,2,08,20,66,238,00,23,18,181,36,28,13,257,00,32,83,087,00*72
$GPRMC,143727,V,5133.1094,N,00010.4425,W,000.0,331.5,210109,,,N*7F
$GPGGA,143728,5133.1094,N,00010.4425,W,0,00,,-00000.0,M,047.3,M,,*67
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
Not sure what is going on, I may have to put some debugging in the encode method.
edit: I just tried it again with the xbee and its no longer working with that. Its a real rats nest of wires here so the problems may have nothing to do with the code. I am going to clean everthing up and try it again - but want get back to this till much later today.