消息格式为
!AIVDM,2,1,,B,177KQJ5000G?tO`K>RA1wUbN0TKH,0*5C第二个字段(在这种情况下是2)指定了AIS消息中的部分的数量,而第三个字段(在这种情况下是1)指示了部分或片段序列。
如果消息没有按顺序到达,是否有一种故障保护方法来链接消息片段?据我所知,有几个片段可能会随机到达。
发布于 2016-02-10 19:17:34
消息部分必须遵循order.If它们不是连续的你不应该考虑消息。IEC 61162文档是一个标准,它定义了包括AIS消息在内的NMEA语句的结构,规定多部分消息必须是order.If格式的。你面临的消息顺序是随机的。这是一个硬件故障,因为制造商必须遵守IEC 61162标准中定义的规则。
发布于 2016-02-23 07:03:39
AIS有效负载封装在NMEA消息格式中-- NMEA仅将其视为黑盒--因此您不应期望NMEA解析器对编码的AIS内容敏感。
如果您迫不及待,您可以尝试按照每种AIS有效负载消息类型的预期长度匹配多部分消息,但您会遇到以下问题:
在实践中,您可以做的最好的是假设多部分消息可能只在两个消息具有不同的NMEA消息类型(例如,一个消息是AIVDM,另一个是SAVDM)的情况下才会交错到达。这是在NMEA parsing library I wrote, under each_complete_message中采用的方法。
您可以更进一步,使用消息部分的总数作为区分消息的方法,但在实践中,3部分消息似乎非常罕见。
TL;DR
不,没有故障安全的链接片段的方法。
发布于 2016-07-18 17:45:41
也许你可以检查为什么第三个字段是空的,以及它是否可以被激活。
ShineMicro以以下方式使用它:!AIVDM,X1,X2,X3,A,S--S,X4*CRC其中X1 -传输一条AIS消息所需的句子(部分)总数X2 -句子号(1到9) X3 -顺序消息标识符(0-9),顺序分配并为每个新的多句子消息递增
https://stackoverflow.com/questions/33952265
复制相似问题