首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何链接多部分AIS消息?

如何链接多部分AIS消息?
EN

Stack Overflow用户
提问于 2015-11-27 15:28:16
回答 4查看 1.2K关注 0票数 1

消息格式为

代码语言:javascript
复制
!AIVDM,2,1,,B,177KQJ5000G?tO`K>RA1wUbN0TKH,0*5C

第二个字段(在这种情况下是2)指定了AIS消息中的部分的数量,而第三个字段(在这种情况下是1)指示了部分或片段序列。

如果消息没有按顺序到达,是否有一种故障保护方法来链接消息片段?据我所知,有几个片段可能会随机到达。

EN

回答 4

Stack Overflow用户

发布于 2016-02-10 19:17:34

消息部分必须遵循order.If它们不是连续的你不应该考虑消息。IEC 61162文档是一个标准,它定义了包括AIS消息在内的NMEA语句的结构,规定多部分消息必须是order.If格式的。你面临的消息顺序是随机的。这是一个硬件故障,因为制造商必须遵守IEC 61162标准中定义的规则。

票数 1
EN

Stack Overflow用户

发布于 2016-02-23 07:03:39

AIS有效负载封装在NMEA消息格式中-- NMEA仅将其视为黑盒--因此您不应期望NMEA解析器对编码的AIS内容敏感。

如果您迫不及待,您可以尝试按照每种AIS有效负载消息类型的预期长度匹配多部分消息,但您会遇到以下问题:

  1. 某些消息类型(例如,类型8:二进制广播消息)具有可变长度
  2. 有一些在字节边界上对齐消息的约定,但这些约定并不总是被遵循,因此即使是固定长度的消息也可以以不同的长度接收(例如,类型15)。

在实践中,您可以做的最好的是假设多部分消息可能只在两个消息具有不同的NMEA消息类型(例如,一个消息是AIVDM,另一个是SAVDM)的情况下才会交错到达。这是在NMEA parsing library I wrote, under each_complete_message中采用的方法。

您可以更进一步,使用消息部分的总数作为区分消息的方法,但在实践中,3部分消息似乎非常罕见。

TL;DR

不,没有故障安全的链接片段的方法。

票数 1
EN

Stack Overflow用户

发布于 2016-07-18 17:45:41

也许你可以检查为什么第三个字段是空的,以及它是否可以被激活。

ShineMicro以以下方式使用它:!AIVDM,X1,X2,X3,A,S--S,X4*CRC其中X1 -传输一条AIS消息所需的句子(部分)总数X2 -句子号(1到9) X3 -顺序消息标识符(0-9),顺序分配并为每个新的多句子消息递增

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33952265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档