View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0003175 | SAS.Планета | Баг / Bug | public | 08-02-2017 12:46 | 09-02-2017 19:33 |
| Reporter | netsky | Assigned To | zed | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Platform | Windows | OS | XP | OS Version | Professional SP3 |
| Product Version | 160707 | ||||
| Target Version | 181221 | Fixed in Version | 181221 | ||
| Summary | 0003175: 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? | ||||
| Tags | gpx, nmea | ||||
| Attached Files | 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);
| ||||
|
|
P.S. Трек пройденного пути тоже рисуется, но при создании скринов забыл включить его отображение. |
|
|
Да, эти параметры не учитывались. Поправил, но не уверен что все правильно. Потестируйте вот этот бинарник: https://yadi.sk/d/5AuL8qVS3DXs6g |
|
|
Не гуру в коде, но вроде похоже на правду! Да и само тестирование подтвердило правильность решения - всё работает как часики! Старые приёмники так же были протестированы - замечаний в работе не выявлено. P.S. А для справки какие вообще сообщения распознаёт SAS? Я так понял RMC, GGA, GSV, GSA точно, а есть ещё какие? |
|
|
Раз заработало, то ок, будет в ночнушке. >RMC, GGA, GSV, GSA точно, а есть ещё какие Ещё GLL только я в тестовом билде не добавил проверку флага для этого типа сообщений. В ночнушке будет и там проверяться. |
| 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 |