View Issue Details

IDProjectCategoryView StatusLast Update
0003175SAS.ПланетаБаг / Bugpublic09-02-2017 19:33
Reporternetsky Assigned Tozed  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
PlatformWindowsOSXPOS VersionProfessional SP3
Product Version160707 
Target Version181221Fixed in Version181221 
Summary0003175: NMEA: Игнорируется статус "V" в RMC и GLL, и Position Fix Flag "0" в GGA
DescriptionПри холодном старте приёмник данные:
$GPGGA,123939.00,0000.0000,N,00000.0000,E,0,,,-18.0,M,18.0,M,,*59
$GPRMC,123939.00,V,0000.0000,N,00000.0000,E,00.00,000.0,,,,N*41
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,2,1,05,05,00,000,31,07,00,000,47,08,00,000,35,28,00,000,39*72
$GPGSV,2,2,05,30,00,000,47*4C
$GLGSV,1,1,03,66,00,000,50,75,00,000,50,76,00,000,43*52
Но SAS почему-то игнорирует флаги о не валидности координат V и 0 и показывает, что я нахожусь в точке с координатами 0,0 и на высоте -18м. (Скрин 1)

Когда приёмник вычисляет верные координаты и SAS их читает, то я мгновенно перемещаюсь из 0,0 в текущие координаты. При этом пройденный путь возрастает на 7000км. (Скрин 2)

Есть другой приёмник, который при холодном старте выдаёт:
$GPGGA,235950.010,,,,,0,00,,,M,0.0,M,,0000*5F
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,02,00,000,48,06,00,000,50,12,00,000,47,19,00,000,43*7A
$GPGSV,3,2,12,01,00,000,,03,00,000,,04,00,000,,05,00,000,*78
$GPGSV,3,3,12,07,00,000,,08,00,000,,09,00,000,,10,00,000,*7D
$GPRMC,235950.010,V,,,,,,,070810,,,N*4A
И SAS отрабатывает правильно.

Возможно SASPlanet не нравится, что приёмник выдаёт 00,0000.0000,N,00000.0000,E,0,,,-18.0,M вместо пустых полей или всё же она не распознаёт флаги V и 0 в GPRMC и GPGGA?
Tagsgpx, nmea
Attached Files
1.png (67,450 bytes)   
1.png (67,450 bytes)   
2.png (70,514 bytes)   
2.png (70,514 bytes)   
3175.patch (1,449 bytes)   
diff -r 6e42d94add55 Src/GPS/u_GPSModuleByVSAGPS.pas
--- a/Src/GPS/u_GPSModuleByVSAGPS.pas	Fri Jan 13 21:02:47 2017 +0300
+++ b/Src/GPS/u_GPSModuleByVSAGPS.pas	Wed Feb 08 17:26:50 2017 +0300
@@ -33,6 +33,7 @@
   i_GPSConfig,
   i_SystemTimeProvider,
   i_Listener,
+  u_GeoFunc,
   u_GPSModuleAbstract,
 {$if defined(VSAGPS_AS_DLL)}
   vsagps_public_dll,
@@ -960,8 +961,12 @@
     Exit;
   LockGPSData;
   try
-    VPositionOK := Nmea_Coord_To_Double(@(pRMC^.lon), VPoint.X) and
-                 Nmea_Coord_To_Double(@(pRMC^.lat), VPoint.Y);
+    VPoint := DoublePoint(0, 0);
+
+    VPositionOK :=
+      (pRMC^.status = AnsiChar('A')) and
+      Nmea_Coord_To_Double(@(pRMC^.lon), VPoint.X) and
+      Nmea_Coord_To_Double(@(pRMC^.lat), VPoint.Y);
 
     VUTCDateOK := Nmea_Date_To_DateTime(@(pRMC^.date), VUTCDate);
     VUTCTimeOK := Nmea_Time_To_DateTime(@(pRMC^.time), VUTCTime);
@@ -1619,8 +1624,12 @@
     // b) for GN (GP+GL) shows number of all sats
     //_UpdateSatsInView(pGGA^.sats_in_view);
 
-    VPositionOK := Nmea_Coord_To_Double(@(pGGA^.lon), VPoint.X) and
-                 Nmea_Coord_To_Double(@(pGGA^.lat), VPoint.Y);
+    VPoint := DoublePoint(0, 0);
+
+    VPositionOK :=
+      (pGGA^.quality > 0) and
+      Nmea_Coord_To_Double(@(pGGA^.lon), VPoint.X) and
+      Nmea_Coord_To_Double(@(pGGA^.lat), VPoint.Y);
 
     VUTCTimeOK := Nmea_Time_To_DateTime(@(pGGA^.time), VUTCTime);
 
3175.patch (1,449 bytes)   

Activities

netsky

08-02-2017 12:49

reporter   ~0017809

P.S. Трек пройденного пути тоже рисуется, но при создании скринов забыл включить его отображение.

zed

08-02-2017 14:33

manager   ~0017810

Да, эти параметры не учитывались. Поправил, но не уверен что все правильно. Потестируйте вот этот бинарник: https://yadi.sk/d/5AuL8qVS3DXs6g

netsky

08-02-2017 19:10

reporter   ~0017811

Не гуру в коде, но вроде похоже на правду!
Да и само тестирование подтвердило правильность решения - всё работает как часики!
Старые приёмники так же были протестированы - замечаний в работе не выявлено.

P.S. А для справки какие вообще сообщения распознаёт SAS?
Я так понял RMC, GGA, GSV, GSA точно, а есть ещё какие?

zed

09-02-2017 19:29

manager   ~0017812

Раз заработало, то ок, будет в ночнушке.

>RMC, GGA, GSV, GSA точно, а есть ещё какие
Ещё GLL только я в тестовом билде не добавил проверку флага для этого типа сообщений. В ночнушке будет и там проверяться.

Issue History

Date Modified Username Field Change
08-02-2017 12:46 netsky New Issue
08-02-2017 12:46 netsky File Added: 1.png
08-02-2017 12:47 netsky File Added: 2.png
08-02-2017 12:49 netsky Note Added: 0017809
08-02-2017 14:33 zed Note Added: 0017810
08-02-2017 14:34 zed File Added: 3175.patch
08-02-2017 19:10 netsky Note Added: 0017811
09-02-2017 19:29 zed Note Added: 0017812
09-02-2017 19:30 zed Status new => resolved
09-02-2017 19:30 zed Fixed in Version => 181221
09-02-2017 19:30 zed Resolution open => fixed
09-02-2017 19:30 zed Assigned To => zed
09-02-2017 19:32 zed Target Version => 181221
09-02-2017 19:32 zed Summary Игнорирование статуса V в RMC и Position Fix Flag 0 в GGA => NMEA: Игнорируется статус "V" в RMC и GLL, и Position Fix Flag "0" в GGA
09-02-2017 19:33 zed Tag Attached: gpx
09-02-2017 19:33 zed Tag Attached: nmea
08-08-2025 13:22 zed Category Баг => Баг / Bug