基于MFC的AIS解析服务器软件程序设计

2022-10-20 03:40张亚宁刘春光吴诗帆
现代信息科技 2022年13期
关键词:报文软件测试舰船

张亚宁,刘春光,吴诗帆

(92124 部队,辽宁 大连 116023)

0 引 言

在海上靶场进行武器试验的过程中,舰船自动识别系统(AIS)可以协助安控人员进行海上目标识别,尤其是对目标飞行器雷达锁定渔船、商船等非靶目标进行及时有效的安控尤为重要。AIS 报文一般采取可见字符的方式进行传输,接收机收到报文后需按照ITU-1371-4 协议进行解析,解析之后的数据才能供作业人员使用。目前市面上商用的AIS 解析软件较多,可以实现报文解析、舰船信息显示等功能,但此类软件一般不具备直接兼容安控显示软件的功能。本文基于MFC 平台设计了AIS 报文解析软件,实现了将AIS信息融入安控显示软件的功能。

1 设计流程

AIS 报文解析软件的信号流程如图1所示,首先启动AIS 报文接收线程,实时接收报文数据;然后进行报文内容的判定,对其中的AIS 报文进行解析(对非AIS 报文不做处理);最后将解析之后的报文结果以安控显示软件的格式进行打包发送,使AIS 信息在安控显示软件上实时显示。

图1 AIS 报文解析软件信号流程

2 功能实现

本文基于MFC 平台设计AIS 解析软件,程序界面如图2所示,界面分为数据接收区、监视区、接收设置区、记录区、发送区五个区域。“数据接收区”用于实时显示接收的AIS 原始报文和解析之后的舰船信息;“监视区”对解析软件的工作情况进行监视,主要显示解析报文状态、数量等内容;“接收设置区”设置本地接收AIS 报文的IP地址、端口信息、组播地址等信息;“记录区”以新建文本的方式保存接收到的AIS 原始报文和解析之后的结果,可以通过按键的方式选择是否保存;“发送区”设置发送目的端的IP 地址和端口,进而将解析之后的结果实时发送至安控显示工作站。

图2 AIS 解析软件程序界面

2.1 AIS 报文接收

为了实现AIS 报文接收功能,需要正确加载套接字库,创建套接字,绑定接收端口,启动接收线程等步骤,关键代码为:

WSAStartup(MAKEWORD(2,2),&wsaData);// 加载套接字库

m_RecvSocket=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,0);//创建套接字

bind(m_RecvSocket,(SOCKADDR*)&addrSock,sizeof(SO CKADDR));//绑定端口

WSARecvFrom(m_RecvSocket,&wsabufRcev,1,&dwread,&dwflag,(SOCKADDR*)&addr_from,&len0,NULL,NULL));//实时接收

考虑到不同计算机的IP 地址不同,利用本软件绑定地址信息时支持配置文件读取和手动更改两种方式,软件启动后直接从配置文件读取IP、端口、组播信息至“接收设置区”并进行显示,如果绑定端口情况临时有变可以在“接收设置区”手动更改,然后点击“绑定”按键进行最终绑定。

2.2 AIS 报文判定和解析

AIS 报文共有27 类(ID 号为1~27),不同类别的报文可以提供舰船标识码MMSI、经度L、纬度B、航向COG、航速SOG、船名NAME、呼号CALL、舰船尺寸等信息。鉴于安控显示软件只需显示舰船标识码、位置和航行状态,故仅需解析包含识别码MMSI、经度L、纬度B、航向COG、航速SOG 等信息的5 类报文,分别为:1 类、2 类、3 类、18 类、19 类,对于其他类型的报文不做解析,减少了数据处理量,提高了报文解析效率。

在有效性的判定上,AIS 报文采取帧头识别的方式进行判定,即收到的报文以“!AIVDM”“!AIVDO”“!AIVDM”等字符开头;在报文类别(ID 号)的判定上,采取提取报文数据段首字符的方式进行判定,仅解析上面提到的5 类报文。

筛选出需要解析的报文后,按照ITU-1371-4 协议对数据段内容进行解析,有关报文解析的方法参考本文作者曾发表的文献——一种AIS 报文解析方法,此文献中论述了AIS 报文解析的详细过程。在本文中,将此解析方法封装成函数使用,代码为:

bool OnDecodeAIS(char *p,int len,AisData &AisResult);

在此函数中p 为AIS 报文数据段的字符串指针,len 为数据段字符串长度,AisResult 为解析之后的结果,是此函数的输出变量,其类型为自定义AisData 结构类型,AisData结构定义为:

2.3 信息打包

AIS 报文解码成功后,需要按照安控显示软件所提供的数据接口类型进行打包封装,此数据接口类型为AIS_MAdd结构,要求连续方式对齐。具体代码为:

在AIS_MAdd 结构变量中,除了5 类舰船信息,还包含包头、包尾和操作类别3 个变量,所以还需要对以上变量进行赋值,具体代码为:

通过以上方式完成解析结果的数据封包。

2.4 信息发送

发送目的端的地址信息通过读取配置文件在“发送区”窗口显示。数据打包结束之后,构造发送结构变量并进行数据发送,具体代码为:

2.5 信息保存和监视

本程序界面的“数据接收区”实时显示最新一条AIS 报文和解析结果,为了实现对整个解析过程数据的监视,在“记录区”增加“按键”实现记录报文信息和解析结果,文件以时间命名,以文本方式保存。

此外,本程序还设计了“监测区”,用于对程序运行状态、解析报文数量、记录开启情况等进行实时监视,极大地方便了程序操管。

3 实验测试

本程序设计完成后,通过在机房实时接收大连旅顺某海域的AIS 信息进行了软件测试,测试过程中首先通过“绑定”按键正确设置接收端口,然后通过“运行”按键启动解析程序,程序运行过程中依次启动数据记录功能,测试结果如图3、图4、图5所示。从这三个图中可以看出,本程序不仅可以实时显示接收报文信息、报文解析结果,还可以对解析情况进行实时监视。程序运行结束后,生成了AIS 报文记录文件和解析结果记录文件,文件信息如图6、图7所示。最后对本软件的转发功能进行了测试,测试结果如图8所示,由安控显示软件可知本程序可实时将AIS 解析结果发送至安控显示软件进行显示,实现了与安控软件的融合,可以实时为安控显示软件提供海面舰船信息。

图3 AIS 解析软件测试结果

图4 AIS 解析软件测试结果“显示区”放大图

图5 AIS 解析软件测试结果“监视区”放大图

图6 AIS 解析软件原始报文记录

图7 AIS 解析软件解析结果记录

图8 解析结果在安控显示软件上的显示效果

4 结 论

本文基于安控显示软件实时显示海上舰船信息的需求,利用MFC 平台从界面设计、报文接收、报文判定、报文解析、报文记录、解析结果发送等环节详细论述了本文AIS 服务器软件的设计流程,最后通过实际环境中的测试得出本文软件实现了上述功能,可以实时为安控显示软件提供AIS 信息,为安控人员顺利完成海上目标飞行器安控任务提供了参考,具有一定的工程应用价值。

猜你喜欢
报文软件测试舰船
海法新港一期自动化集装箱码头电子数据交换报文系统设计与实现
软件测试方向人才培养“1+X”融合研究
大数据背景下软件测试技术的发展
基于报文类型的限速值动态调整
关于 Web 应用系统的软件测试的研究
用户设备进行组播路径追踪的方法及系统
国产3000吨级护卫舰正式交付
软件测试发展现状及前景的探讨
台日舰船对峙内幕曝光