我正在从发送时间戳而没有毫秒的设备解析NMEA GPS数据.据我听说,这些设备将使用的时候就会把句子与.000戳在一个特定的触发点 - AFAIK在GGA句子$.
所以我解析GGA句话,走在收到$时,(我补偿使用串口波特率在同一操作中读取任何进一步的字符)的时间戳.
从这个信息,我计算修正系统时间偏移,但是当我比较设置一些NTP服务器的时候,我会得到的250毫秒的恒定差 - 当我手动纠正这一点,我是20ms的偏差,其内我的申请还可以.
但当然我不确定这个偏移的来源,以及它是否特定于我正在使用的GPS鼠标或我的系统.我使用了错误的$字符,还是有人知道应该如何处理?我知道这个问题是很模糊的,但什么可能会导致任何提示这个偏移量将是非常有益!
下面是我的一些设备的样本数据,以$字符我会随着时间偏移标注:
$GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31
$GPRMC,003538.000,A,5046.8555,N,00606.2913,E,0.00,22.37,160209,,,A*58
-> $ <- GPGGA,003539.000,5046.8549,N,00606.2922,E,1,07,1.5,249.9,M,47.6,M,,0000*5C
$GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31
$GPGSV,3,1,10,09,77,107,17,12,63,243,30,05,51,249,16,14,26,315,20*7E
$GPGSV,3,2,10,30,24,246,25,17,23,045,22,15,15,170,16,22,14,274,24*7E
$GPGSV,3,3,10,04,08,092,22,18,07,243,22*74
$GPRMC,003539.000,A,5046.8549,N,00606.2922,E,0.00,22.37,160209,,,A*56
-> $ <- GPGGA,003540.000,5046.8536,N,00606.2935,E,1,07,1.5,249.0,M,47.6,M,,0000*55
$GPGSA,A,3,17,12,22,18,09,30,14,,,,,,2.1,1.5,1.6*31
$GPRMC,003540.000,A,5046.8536,N,00606.2935,E,0.00,22.37,160209,,,A*56
-> $ <- GPGGA,003541.000,5046.8521,N,00606.2948,E,1,07,1.5,247.8,M,47.6,M,,0000*5E
Run Code Online (Sandbox Code Playgroud)
您必须考虑 GPS 设备中发生的事情:
GPS 设备的 CPU 相对较慢(与现代计算机相比),因此您观察到的延迟是设备在生成位置和开始传输数据之间必须执行的处理的结果。
以下是对 2005 年消费级 GPS 接收器延迟的一项分析。您可以在其中找到特定 NMEA 语句的延迟测量。
| 归档时间: |
|
| 查看次数: |
2347 次 |
| 最近记录: |