author | mickeyl <mickeyl> | 2004-02-15 15:28:27 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2004-02-15 15:28:27 (UTC) |
commit | 4f5703de93628ec6920957ef18d6cd5c87a69ba1 (patch) (side-by-side diff) | |
tree | 674e0d5eeb30ccf52dd5f0491522e651c2383116 /noncore/net/wellenreiter/gui/gps.cpp | |
parent | 3d50523ac7782e08795fabb071c8678d79a71b13 (diff) | |
download | opie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.zip opie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.tar.gz opie-4f5703de93628ec6920957ef18d6cd5c87a69ba1.tar.bz2 |
*** empty log message ***
Diffstat (limited to 'noncore/net/wellenreiter/gui/gps.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/wellenreiter/gui/gps.cpp | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/noncore/net/wellenreiter/gui/gps.cpp b/noncore/net/wellenreiter/gui/gps.cpp index b814427..5b1b4a4 100644 --- a/noncore/net/wellenreiter/gui/gps.cpp +++ b/noncore/net/wellenreiter/gui/gps.cpp @@ -45,6 +45,8 @@ bool GPS::open( const QString& host, int port ) GpsLocation GPS::position() const { char buf[256]; + double lat = -111.0; + double lon = -111.0; int result = _socket->writeBlock( "p\r\n", 3 ); _socket->flush(); @@ -53,19 +55,19 @@ GpsLocation GPS::position() const int numAvail = _socket->bytesAvailable(); qDebug( "GPS write succeeded, %d bytes available for reading...", numAvail ); if ( numAvail ) - { - QTextStream stream( _socket ); - - QString str; - stream.readRawBytes( &buf[0], 7 ); - float lat = -111; - stream >> lat; - stream.skipWhiteSpace(); - float lon = -111; - stream >> lon; - stream.readRawBytes( &buf[0], 200 ); // read and discard the stuff until EOF - - return GpsLocation( lat, lon ); + { + int numRead = _socket->readBlock( &buf[0], sizeof buf ); + int numScan = sscanf( &buf[0], "GPSD,P=%lg %lg", &lat, &lon); + + if ( numRead < 7 || numScan != 2 ) + { + qDebug( "GPS read %d bytes succeeded, invalid response: '%s'", numRead, &buf[0] ); + return GpsLocation( -111, -111 ); + } + else + { + return GpsLocation( lat, lon ); + } } } return GpsLocation( -111, -111 ); @@ -123,9 +125,3 @@ QString GpsLocation::dmsPosition() const return dms; } - - - - - - |