李璐
四川九洲空管科技有限责任公司 四川 绵阳 621000
二次雷达通过询问与应答方式获取飞机位置、代码、高度等信息,是航空飞行安全的重要保障。二次雷达态势显示软件(以下简称“显示软件”)是雷达人机交互接口,展示雷达能力主要手段。
依照军民航规范,二次雷达态势显示软件应满足通用化、模块化、跨平台需求,具备标准数据接口,实时处理雷达视频、点航迹信息,提供基于地图的目标态势显示,提供目标位置、高度、代码等多元信息,辅助操作员掌握周围空情[1]。
目前,二次雷达态势显示软件已采用通用计算机硬件,显示信息丰富多样,但大多仍以视窗(Windows)操作系统为主,但随着美国对高新技术封锁和操作系统后门威胁,我国自主研发了基于Linux的国产操作系统,为匹配该需求,通用化、跨平台显示软件需求迫切,据此开展跨平台的二次雷达态势显示软件设计开发。
Qt 是一款跨平台C++图形界面应用程序开发框架,提供强大面向对象的原生C++类库,可实现开发一套代码,多场景(桌面、嵌入式、移动端,支持Linux/X11、MAC、Windows、WinCE、Android系统)编译部署,可减少开发人员的配置,提高产品开发效率,更利于维护代码维护[2]。
显示软件采用模块化架构开发,主要实现消息服务、数据收发、雷达数据处理和雷达显示四个软件部件。
如图1所示,消息服务部件采用C/S架构,基于回环地址数据交互。后台服务对所有消息交换参与者分配身份,参考IP协议报文格式对共享消息体进行封装,将消息号与用户映射,实现按需分发。
图1 消息服务原理示意图
数据收发部件实现雷达数据网络接收与预处理,软件启动时创建消息客户端并载入配置文件(地址、端口、消息号等信息),创建QUdpScoket接收网络数据,并处理后经由服务器端推送各模块。
雷达数据处理部件接收消息服务推送的雷达点迹、航迹、扇区信息,解析后格式化为内部标准格式,经由服务器端推送各模块[3]。
雷达显示部件主要实现雷达扇区、点迹航迹、用户图形、背景地图的动态显示。基于Qt的Graphics View框架实现,定义QGLwidget窗体承载显示场景的所有图元显示要求,将图元按类归集分层管理,如图2所示,每个图层具有公共属性和私有属性,每个图形的显示样式参照规范的设计[4];每个图元实例化后仅需要将paintEvent()、mouseEvent()等事件实现,加入到场景中,即可由系统自动组织和调度图形绘制。
图2 雷达显示框架
目标(点航迹信息)显示是软件实现重点,采用Qt Model/View编程模式,即单个目标由基类QGraphicsItemGroup派生一个自定义的目标图元PlaneObject,同时定义一个基于QAbstractTableModel类的FlightDateCenter类存储所有的目标,并关联到一个QTableView列表,以列表方式有序的呈现;PlaneObject可调用AddPlaneToScene()将目标添加进Scene中,实现界面、数据、列表同步[5-7]。
如图3所示,某型二次雷达态势显示软件在两种系统平台应用效果对比,左图为Windows7操作系统下利用Qt5结合MSVC2010开发,右图为同一套代码Linux环境采用Qt Creator和gcc编译后运行效果[8]。从实际运行效果可以看出,在两个平台下雷达显示风格和效率相近,除了主界面因系统主题风格不同存在细微不同。
图3 软件跨平台显示效果对比
Qt作为一款跨平台的GUI开发框架,目前在军工、汽车、航天、医疗、家电、智能家居等多个行业中均有使用,特别其启动速度快、运行效率高、资源要求低以及跨平台性能强的特性,满足二次雷达态势显示软件开发的需求。本文充分利用Qt优势特点,实现了通用化、跨平台的二次雷达态势显示软件设计方案,该方案构架灵活,扩展性强,具有模块化、标准化、通用化特点,满足新一代二次雷达应用需求。