来自GPS接收器的垃圾数据

来自GPS接收器的垃圾数据,gps,node-red,nmea,Gps,Node Red,Nmea,我正在尝试将GPS接收器安装到系统中,使用节点红色的数据。它大部分时间都能工作,但每隔一段时间,系统就会崩溃。我使用的是netvar接收器节点,数据似乎有效。然而,不知何故,有时我的输出中会丢失一些数据。然后,我将GPS接收器直接连接到一个串行端口,并惊讶地看到大量行(我读取了GPRMC数据),其中记录的数据中有奇怪的(=非字母数字)或缺少字符。我被串行连接到4800波特。 我的理论是这样的:当通过其他设备连接时,会有东西处理数据过滤,因此坏数据不会通过NR流进一步传递。 直接监控输出的示例:

我正在尝试将GPS接收器安装到系统中,使用节点红色的数据。它大部分时间都能工作,但每隔一段时间,系统就会崩溃。我使用的是netvar接收器节点,数据似乎有效。然而,不知何故,有时我的输出中会丢失一些数据。然后,我将GPS接收器直接连接到一个串行端口,并惊讶地看到大量行(我读取了GPRMC数据),其中记录的数据中有奇怪的(=非字母数字)或缺少字符。我被串行连接到4800波特。 我的理论是这样的:当通过其他设备连接时,会有东西处理数据过滤,因此坏数据不会通过NR流进一步传递。 直接监控输出的示例:
$GPRMC、114742.00、V、0000.00000、N、000“r”b*±0.000、061219、N*60
(请注意,这是无效的(“V”)数据,但标记为“A”的输出也会出现问题,许多带有“V”的行看起来也很好)。 另一个例子:
$GPRMC,115125.00,V,0000.00000,N,00000.00000,E,0.00006219,,,N*66
(有趣的事实:当键入此项时,其中一个十六进制框显示在编辑字段的正前方
061219
,但它不在输出字段中)

有人能确认GPS数据(NMEA 0183)能够因为垃圾字符而导致整个系统崩溃吗

有人能确认GPS数据(NMEA 0183)能够因为垃圾字符而导致整个系统崩溃吗

嗯,不,你的应用程序应该防御无效数据,不管它是如何进来的。如果该行无效,请拒绝它。如果一行太长,请拒绝它

然后,我将GPS接收器直接连接到一个串行端口,并惊讶地看到大量带有奇怪(=非字母数字)的线路(我读取了GPRMC数据)


您的GPS装置可能正在使用双协议。如今,除了NMEA之外,大多数设备还支持二进制协议。查看特定设备的文档,了解如何切换协议。

如果您所说的系统是指计算机,那么我认为答案是否定的,损坏的数据不会导致任何崩溃。但破坏数据的根本问题可能是。例如,如果您有强电磁噪声或通过接地回路输入硬件的外部电压,它们肯定能够完成计算机崩溃或重新启动。NEMEA数据应该只有ASCII字符,如果您收到这些奇怪的字符(非ASCII),您应该尝试找出它们存在的原因。通常情况下,这将是一个硬件问题(松动的电缆或GND级别的差异)。在这种情况下,系统本身不是一台计算机,而是一台与集成Linux并行运行的PLC。GPS连接到PLC的串行端口,数据在PLC中读取并传递给变量。接收到的数据(在我的电脑上进行测试时)包含各种字符,包括铃/铃,以及似乎远离ASCII表的字符,如“加号/减号”等。然而,我刚刚用同一个GPS接收器的旧版本进行了测试,使用它,一切似乎都很好,所以到目前为止,硬件缺陷似乎是最合理的原因。可处理输入的可用节点红色节点可能无法过滤所有错误数据,因此可能需要在系统的PLC部分处理。GPS接收机为该型号:并根据所需的标准通信参数进行设置。如上所述,问题似乎在于新型号与旧版本接收器(相同品牌和型号)相比存在缺陷。我有几个新型号的装置在附近,它们似乎都有故障(到目前为止测试了3个以上的装置):-(@KMBN出于好奇,它实际上是RS232吗?就像那个网站所说的那样?不是RS485吗?肯定是RS-232。旧版本工作得很好,唯一的缺点是坐标的小数点少了一个,这可能会使它的精确度稍低一些。