Android系统下空情仿真软件的设计与实现

2016-12-15 02:47杨泽华
软件 2016年11期
关键词:飞行物报文机场

杨泽华

(北京邮电大学网络技术研究院,北京市 100876)

Android系统下空情仿真软件的设计与实现

杨泽华

(北京邮电大学网络技术研究院,北京市 100876)

传统的雷达监视手段采用询问/应答方式对目标探测。从长远来看,雷达系统自身具有很多局限性。因此,需要发展新的监视手段。广播式自动相关监视ADS-B即航空器自动广播由机载星基导航和定位系统生成的精确定位信息,地面设备和其他航空器通过航空数据链接收此信息,卫星系统、飞机以及地基系统通过高速数据链进行空天地一体化协同监视,是未来监视系统的重要组成部份和发展方向。本文实现的空情仿真系统是通过一定规律模拟飞行物信息,将这些信息根据ASTERIX CAT021协议将其封装到报文中,之后发送给指定的ADS-B站。与此同时本系统将获取的报文信息解析出相应的飞行物信息呈现在用户界面上。用户通过本系统可以监视到指定区域上飞机的运行轨迹和即时的飞行信息。

计算机科学与技术;ADS-B;Android;ASTERIX CAT021;报文

本文著录格式:杨泽华. Android系统下空情仿真软件的设计与实现[J]. 软件,2016,37(11):55-59

0 引言

ADS-B全称是“广播式自动相关监视系统”,它是一种全新科技,主要依靠机载电子设备和地面设施,来精确监视飞机的位置、高度、速度等数据[1]。

近年来国际上一些公司己经研制出机场场面监视系统,比如场面监视雷达,但是由于系统价格昂贵,后期的维护也需要投入大量的资金,所以这些监视系统并未在我国机场进行广泛的推广,因此我国很大一部分机场塔台还使用目视的方法对场面进行管制避免产生场面冲突,所以当前研究设计出一套适用于我国广大机场的空情监视系统显得尤为迫切[2-3]。

本文介绍的基于android系统下的空情仿真软件就是在此背景下设计和实现的。通过设计基于ADS-B监视数据的空情仿真软件可增强管制员对场面监视能力,保障机场安全,提高机场的运行效率和吞吐量。

1 空情仿真软件系统设计

据系统需求分析以及系统的功能,整个空情模

拟系统可以分成七个大模块:ADS-B报文构造模块,ADS-B报文解析模块,监测界面模块、系统配置模块、添加航线模块、报文接收模块和报文发送模块。ADS-B报文构造模块通过一定规律计算模拟出飞行物信息并遵循ADS-B标准监视电文数据格式ASTERIX CAT021构造报文。该模块使用了多线程技术,为每一个飞行物单独创建了一个线程。ADS-B的信息包含了飞机的经度、纬度、高度和时间的四维信息以及其他一些附加识别信息。由于本文是模拟空情信息,所以报文中只包含了一些必选项。ADS-B报文解析模块是根据ADS-B标准监视电文数据格式ASTERIX CAT021将获取的报文内容解析出来并将其中的飞行物信息显示在监测界面上。监测界面模块负责显示模拟监测动画图层,在地图中央显示一个雷达扫描样式,并加载离线地图等多项利用百度地图SDK实现的界面效果。系统配置模块主要功能是控制模拟空情的开始和配置目标ADS站的地址。如图1所示,用户在“监测界面”选择开始模拟功能时,会启动相应的“ADS-B报文构造”模块,构造完成的报文通过“报文发送”模块发送至目标ADS站与本机。在本系统的“报文接收”模块接收到ADS报文后,报文经过“ADS-B报文解析”模块的解析,利用百度地图的SDK将飞行物信息显示在“监测界面”上。

图1 系统数据流图Fig.1 system data flow diagram

当用户在“监测界面”选择配置目标ADS站功能后,系统会进入“系统配置”页面,用户确定改变目标ADS站地址后,“报文发送”模块的ADS站地址就此改变。当用户选择添加航线功能后,系统进入“添加航线”界面,用户选择起始和到达城市完毕后,启动相应的“ADS-B报文构造”模块,之后与用户选择模拟功能启动ADS-B报文构造模块功能后的流程一致。

2 空情仿真软件详细设计

2.1 ADS-B报文构造模块

从1999年12月至2010年12月,Asterix Category021协议总共经过了30次版本修改。该标准协议属于欧管有关标准文件的一个组成部分,主要描述了ADS-B报文传输的架构,定义了Asterix Category021数据的输出,同时也说明了该标准与其它协议标准(如ICAO ANNEX 10,Vol. IV.,RTCA 260/260A等)的引用、参考关系[4]。

ADS-B报文构造模块的功能就是根据需求与Asterix Category021协议构造所需报文,提供给相应的模块使用。其中client_thread_circle类主要功能是根据Asterix Category 021协议构造报文并发送给指定的ADS站和本地显示界面上。client_thread_ circle类具体工作流程如下。首先,获取系统配置好的ADS站地址。将地址中的端口作为参数实例化一个DatagramSocket类,用于本系统与ADS站之间的通讯。然后在计算经纬度的时候以之前的航迹点为中心用函数得出。最后将当前时间信息,经纬度信息,飞行物标识等信息封装至报文中。本文使用

的GIS组件是百度地图Android SDK。在百度地图中显示的点用的是GeoPoint类,GeoPoint类中包含了经纬度信息,在地图控件上绘制点对象就是以这个GeoPoint类中的信息为基础完成绘制。client_ threa d_circle类最终模拟了两个以天安门为中心的轨迹。

用于存放报文的数据结构是一个byte类型的数组,由于各个信息原本存放的数据类型不一致,需要统一转换为byte类型。datagramAnalyse类就是用于这些数据类型之间的转换。例如:latitudeTobyte (byte[] b,int latitude,int offset)就是将int类型的纬度转换为byte类型的数据。threebytesToInt(byte b[],int offset)就是讲三个字节的数据转换为十进制的数字存入一个int类型的数据中。

2.2 监测界面模块

2.2.1 模块功能设计实现

空情监视界面不仅显示百度地图提供的地图控件,还在其上模拟一个雷达扫描样式[5]。绘制是通过Android提供的Canvas类和Paint类实现的。Canvas类相当于一个画布,Paint类相当于一个画笔。雷达扫描样式中的圆是通过Canvas的drawcircle方法绘制的。使用drawArc方法填充一个指定扇区,将多个扇区使用不同的透明度绘制后,就可以实现扫描时的阴影效果[6-7]。

2.2.2 系统流程图

如图2所示,首先在程序根据编写好的布局文件设置完成加载初始界面后,使用在百度地图开发社区申请的key初始化地图控件。随后通过调用百度地图的API将之前下载至设备中的离线地图包载入到地图控件中,此时地图控件上就显示了全国概要的一些地理信息。

在监测界面上还有一个菜单按钮,其中有模拟,配置,添加航线三个选项。点击模拟选项则会让系统开始模拟两个预先设计好轨迹的飞行物。点击配置选项则会让系统转入配置页面,可以在这个界面对ADS-B站的ip地址进行配置。点击添加航线选项则会让系统转入添加航线页面,通过界面用户可以设置航线的起始点信息,设置完成后会在地图上显示出航迹。

2.3 系统配置模块

sendTo类继承于activity类,可以在此activity中设置目的ADS站的地址。在布局文件中添加两个输入文本框和一个按键,文本框用于输入ip地址和端口。按键用于确认地址输入完成。在主activity中按配置键转入sendTo activity,在确认配置好地址信息后,sendTo activity将信息传回主activity。

图2 监测模块系统流程图Fig.2 monitering module workflow diagram

当用户点击了配置选项进入配置界面后,会有两个文本框供用户输入ip地址和端口号。文本框内会提示当前配置的ip地址和端口号。当用户点击确认键后,系统会将ip地址和端口号返回给主activity以便配置。如果在用户没点击确认键之前,用户点击了返回键,则不会改变原先配置好的ip地址和端口号,界面跳转回主activity。

2.4 添加航线模块

addLine类继承于activity类,在多选栏中选择始发机场与到达机场完毕后,addLine类将始发机场及到达机场返回给主activity类。

关于多选栏的实现,首先新建ArrayAdapter 对象将可选的内容与ArrayAdapter连接起来。再使用setDropDownViewResource()方法设置下拉列表风格,将ArrayAdapter添加到spinner类中。最后添加spinner监听事件,在点击下拉列表其中某个项目后,监听事件就会启动,保存始发机场或者到达机场。

主activity类收到后,新建一个子线程,利用百度地图提供的地址编码方法得到机场的经纬度,并将始发机场与到达机场连线,通过公式计算经纬度再让飞机匀速在两点间运动。在计算得到经纬度信

息后,调用报文构造模块将飞行物信息封装到报文中发送给指定的ADS站并且在空情监视界面中显示出来。

当系统跳转至添加航线界面时,会有两个下拉菜单让用户选择始发城市与到达城市,在每个下拉菜单的上方还会以文本的形式显示当前选择的选项。当用户点击确认按钮时,如果始发城市和到达城市是同一个城市,系统会弹出提示,提示用户输入有误并且让用户重新选择。成功确认后,系统会跳转回主activity,之后新建线程,使用百度地图的API将城市机场进行地址编码,使用构造报文模块构造报文,然后将报文发送出去。如果是通过点击返回键回到主activity的,系统将只是将页面跳转回去而已。

2.5 报文接收模块

由于在Android系统的版本更新后,主UI线程是不可以阻塞的。于是接收报文的功能只能在子线程中实现,而在子线程中是不可以更新主线程的UI的。所以当接收到报文时,启动一个Handler对象进行报文的解析工作。

如图3所示,系统在初始界面加载完成后,新建一个监听线程,将设备的一个闲置端口用于创建datagramsocket。当该datagramsocket接受到报文时,发送一个message给handler,读取报文类型判断该报文的数据块是否含有ADS-B报文。如果报文类型值为21,即数据块包含ADS-B报文,则对报文内容进行解析并通过百度地图SDK展示在地图上。

图3 报文接收模块系统流程图Fig.3 packet received module workflow diagram

2.6 运行测试

如图4所示,打开模拟功能后,成功显示两个按照预定轨迹模拟的飞行物,使用一个红点代表飞行物所在位置,所在位置正上方成功显示飞行物信息标签,标签信息包括经度,纬度和时间。

图4 飞行物模拟Fig.4 flying object simulation

图5 描述了该系统接收到的一个内容150018d-980110000000aa4000071e88c014 bb98e78027a08的ADS-B报文实例。该报文是从地址为10.206.37.1 0的设备发送到地址10.206.37.15的10503号端口。以此报文为例,说明ADS-B数据服务器对此Category 021协议报文的内容的解析已验证本文构造报文和发送报文的功能。

3 总结和展望

本文的主要思想是在论述在Android手机操作系统上进行空情仿真软件的开发。在对这个应用的设计开发过程中,主要实现了构建空中飞行器显示平台功能,构造ADS-B报文、解析ADS-B报文内容功能,在空中飞行物显示平台上显示ADS-B报文数据,添加航线,并模拟飞机在始发城市和到达城市间飞行的功能。

ADS-B技术代表着航空监视技术的发展方向,其在航空飞行管理中的应用优越性是显而易见的,替代航管监视雷达是迟早的事情[8]。目前来说已知最早的ADS-B强制要求是在2010年11月的加拿大哈德森湾,在那里尾随间隔将从80海里缩小到5海里。另外澳大利亚在2013年12月开始强制实施ADS-B运行。欧洲计划2015年对进入欧洲空域的

飞机强制实施ADS-B OUT,且自2013年起对生产线上飞机强制要求满足ADS-B OUT运行。美国计划到2020年1月对所有飞机,包括商用飞机和通用航空,强制要求ADS-B OUT。随着需求的增长以及民航局给予了高度重视,研究发展力度不断加大,同时伴随着各种数据链技术不断创新进步,ADS-B技术在国内必将得到广泛的应用,并带动新一代空中交通管理体系的发展。

图5 wireshark软件抓到的报文Fig.5 packet captured by wireshark

[1] 张青竹, 张军, 刘伟, 朱衍波. 民航空管应用ADS-B的关键问题分析[J]. 电子技术应用, 2007, 33(9): 72-74.

[2] 张海腾, 李定主. 空情仿真系统的研究与开发[J]. 电脑开发与应用, 2003, 16(7): 8-10.

[3] 李敏, 王帮峰, 丁萌. ADS-B在机场场面监视中的应用研究[J]. 中国民航飞行学院学报, 2014, 25(1): 11-14.

[4] 杨珊, 时宏伟. Asterix Category 021协议的应用与分析[J].电讯技术, 2011, 51(10): 132-136.

[5] 周跃飞. 飞行训练中ADS-B系统设计与软件实现[D]. 成都: 电子科技大学, 2009年.

[6] 达尔塞, 康德. Android移动应用开发(卷Ⅰ)[M]. 北京: 人民邮电出版社, 2012.

[7] 达尔塞, 康德. Android移动应用开发(卷II)[M]. 北京: 人民邮电出版社, 2012.

[8] 陈惠锋. ADS-B技术在民航空管中的应用及前景展望[J].软件导刊, 2012, 11(3): 40-41.

Design and Implementation of Air Intelligence Simulation

YANG Ze-hua
(Institute of network technology, Beijing University of Posts and Telecommunications, Beijing 100876)

The traditional means of radar surveillance is using challenge/response mode to detect targets.In the long run, the radar system itself has many limitations. Therefore, it is time to develop new means of surveillance. ADS-B (Automatic, Dependent, Surveillance, Broad cast) is that aircraft automaticaly broadcasting the precise location data generated by the onboard satellite-based navigation and positioning system, ground equipment and other aircraft received this information by the Aviation data link. Satellite systems, aircraft and ground-based systems monitor space, sky and ground via high-speed data chain, and that is an important part of the composition of the future direction and deve-lopment of the monitoring system. Air intelligence simulation system is implemented in this article analog information by certain rules and in accordance with the ASTERIX CAT021 agreement encapsulates the packet, then sent the packet to the designated ADS-B station. At the same time this system will show the information of aircraft which obtained by analysing the messsage in the user interface presentation. Users of the system can monitor the designat-ed area of aircraft trajectory and instant flight information. Firstly, the ADS-B technologies were introduced.

Computer Science and Technology; ADS-B; Android; ASTERIX CAT021; Packet

TP311

A

10.3969/j.issn.1003-6970.2016.11.013

猜你喜欢
飞行物报文机场
机场罢工
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
如何避免GSM-R无线通信系统对机场电磁干扰
浅析反驳类报文要点
面部识别使机场安检提速
ATS与列车通信报文分析
最有创意的机场