GNSS library
Diff: GPS.cpp
- Revision:
- 1:eff122356909
- Parent:
- 0:15611c7938a3
--- a/GPS.cpp Tue Jun 08 14:10:27 2010 +0000 +++ b/GPS.cpp Sun Jul 03 08:36:50 2016 +0000 @@ -23,24 +23,24 @@ #include "GPS.h" GPS::GPS(PinName tx, PinName rx) : _gps(tx, rx) { - _gps.baud(4800); + _gps.baud(115200); longitude = 0.0; latitude = 0.0; } int GPS::sample() { - float time; + char ns, ew; - int lock; + while(1) { getline(); // Check if it is a GPGGA msg (matches both locked and non-locked msg) - if(sscanf(msg, "GPGGA,%f,%f,%c,%f,%c,%d", &time, &latitude, &ns, &longitude, &ew, &lock) >= 1) { + if(sscanf(msg, "GPGGA,%f,%f,%c,%f,%c,%d,%d", &time, &latitude, &ns, &longitude, &ew, &lock, &sate_in_view) >= 1) { if(!lock) { longitude = 0.0; - latitude = 0.0; + latitude = 0.0; return 0; } else { if(ns == 'S') { latitude *= -1.0; } @@ -48,7 +48,7 @@ float degrees = trunc(latitude / 100.0f); float minutes = latitude - (degrees * 100.0f); latitude = degrees + minutes / 60.0f; - degrees = trunc(longitude / 100.0f * 0.01f); + degrees = trunc(longitude / 100.0f); minutes = longitude - (degrees * 100.0f); longitude = degrees + minutes / 60.0f; return 1;