Index: trunk/BNC/src/bncgetthread.cpp
===================================================================
--- trunk/BNC/src/bncgetthread.cpp	(revision 6769)
+++ trunk/BNC/src/bncgetthread.cpp	(revision 6770)
@@ -268,5 +268,4 @@
       QByteArray _serialHeightNMEA = hlp.toAscii();
       _manualNMEAString = ggaString(_latitude, _longitude, _serialHeightNMEA);
-
     }
   }
@@ -618,11 +617,33 @@
       _query = new bncNetQueryV1();
     }
-    if (_nmea == "yes" && _serialNMEA == MANUAL_NMEA) {
-      _query->startRequest(_mountPoint, _manualNMEAString);
-      _lastManualNMEA = QDateTime::currentDateTime();
+    if (_nmea == "yes") {
+      if (_serialNMEA == MANUAL_NMEA) {
+        _query->startRequest(_mountPoint, _manualNMEAString);
+        _lastManualNMEA = QDateTime::currentDateTime();
+      }
+      else if (_serialNMEA == AUTO_NMEA) {
+        if (_serialPort) {
+          int nb = _serialPort->bytesAvailable();
+          if (nb > 0) {
+            QByteArray data = _serialPort->read(nb);
+            int i1 = data.indexOf("$GPGGA");
+            if (i1 == -1) {
+              i1 = data.indexOf("$GNGGA");
+            }
+            if (i1 != -1) {
+              int i2 = data.indexOf("*", i1);
+              if (i2 != -1 && data.size() > i2 + 1) {
+                QByteArray gga = data.mid(i1, i2 - i1 + 3);
+                _query->startRequest(_mountPoint, gga);
+              }
+            }
+          }
+        }
+      }
     }
     else {
       _query->startRequest(_mountPoint, "");
     }
+
     if (_query->status() != bncNetQuery::running) {
       return failure;
@@ -804,6 +825,9 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncGetThread::slotSerialReadyRead() {
+
   if (_serialPort) {
+
     int nb = _serialPort->bytesAvailable();
+
     if (nb > 0) {
       QByteArray data = _serialPort->read(nb);
