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 | |||
@@ -46,4 +46,6 @@ GpsLocation GPS::position() const | |||
46 | { | 46 | { |
47 | char buf[256]; | 47 | char buf[256]; |
48 | double lat = -111.0; | ||
49 | double lon = -111.0; | ||
48 | 50 | ||
49 | int result = _socket->writeBlock( "p\r\n", 3 ); | 51 | int result = _socket->writeBlock( "p\r\n", 3 ); |
@@ -54,17 +56,17 @@ GpsLocation GPS::position() const | |||
54 | qDebug( "GPS write succeeded, %d bytes available for reading...", numAvail ); | 56 | qDebug( "GPS write succeeded, %d bytes available for reading...", numAvail ); |
55 | if ( numAvail ) | 57 | if ( numAvail ) |
56 | { | 58 | { |
57 | QTextStream stream( _socket ); | 59 | int numRead = _socket->readBlock( &buf[0], sizeof buf ); |
58 | 60 | int numScan = sscanf( &buf[0], "GPSD,P=%lg %lg", &lat, &lon); | |
59 | QString str; | 61 | |
60 | stream.readRawBytes( &buf[0], 7 ); | 62 | if ( numRead < 7 || numScan != 2 ) |
61 | float lat = -111; | 63 | { |
62 | stream >> lat; | 64 | qDebug( "GPS read %d bytes succeeded, invalid response: '%s'", numRead, &buf[0] ); |
63 | stream.skipWhiteSpace(); | 65 | return GpsLocation( -111, -111 ); |
64 | float lon = -111; | 66 | } |
65 | stream >> lon; | 67 | else |
66 | stream.readRawBytes( &buf[0], 200 ); // read and discard the stuff until EOF | 68 | { |
67 | 69 | return GpsLocation( lat, lon ); | |
68 | return GpsLocation( lat, lon ); | 70 | } |
69 | } | 71 | } |
70 | } | 72 | } |
@@ -124,8 +126,2 @@ QString GpsLocation::dmsPosition() const | |||
124 | return dms; | 126 | return dms; |
125 | } | 127 | } |
126 | |||
127 | |||
128 | |||
129 | |||
130 | |||
131 | |||