版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
版权
技术总结专栏收录该内容
44 篇文章0 订阅
订阅专栏
想必大家在刚接触AIS时,对AIS数据的解码感到困惑,其是采用6位ASCII压缩码传输的,所以对AIS数据的正确解析,就是完成任务的关键所在。通过最近的一个项目,了解了AIS数据的解码分析过程,现将其流程和相关代码列出,此参表可以参见快乐鹦鹉的AIS解码算法一文http://blog.csdn.net/happyparrot/archive/2007/04/26/1585185.aspx。
结合自己在AIS项目中的理解,提出几点需要注意的方面:
1. AIS的数据校验采用的是异或校验,校验的数据时!和*之间的数据,比如原始数据位:!ABVDM,1,1,,B,169G?I0P007k`vT;BwhP7gv4@d0e,0*0A
则校验的数据应该是:ABVDM,1,1,,B,169G?I0P007k`vT;BwhP7gv4@d0e,0。下面列出异或算法的代码:
2、关于AIS数据各个数据段的具体含义
!aaccc,x,y,z,u,c-c,v*hh
aaccc为标识符,指明本条句子封装的背景信息;
x为传输该条消息所需的表达句数目(至多为9条);
y为本条句子在序列中的牌号;
z为同一序列的统一标识(0-9的循环);
u表示接收该条消息时对应的频道(A/B);
c-c为封装信息,需要映射6位ASCII码;
v表 示填充的字符,因为封装的字符需要是6的整数倍,若不满足,则需要填充0-5个字符;
hh表示的是检验和字段。
这里需要说明的是:关于填充字符,已经填充在封装信息,时期成为6的整数倍,在数据解码过程中无需在额外填充。
3、关于数据解析过程中,有些数据需要使用ASCII码,比如说船舶类型,这就涉及到将解码的二进制进行编码的问题,下面将实现程序列出:
此算法对应的参表请查看 GB-T20068-2006船载自动识别系统(AIS)技术要求
如果有问题及建议,欢迎关注微信公众号: