www�ele169�com  |  57
软件开发
0 引言
对于无人直升机地面控制站来说,内部运行着多种类复
杂的设备,几乎所有设备都和外界进行数据交互,控制站的正常运行依赖于这些设备的正常工作,由于站内设备数目众多且软件异构多样化,为每一款设备预留专门的监控软件是不现实、没有必要的,因而需要集成管理软件对所有设备进行集中进行监控、管理。C++是强类型的面向对象开发语言,使用其开发的代码具有运行效率高、代码简洁、可直接操作硬件等优点。但是,C++并没有专门的UI 组件,也缺乏可靠的线程通信机制。QT 是一套跨平台的C++开发库,其封装了大量的工具库;界面源码与业务代码充分解耦合;QT 的信号槽机制十分适合UI 组件刷新。因而本文利用QT 开
发无人直升机地面站[1] 无人直升机地面站集成管理软件。1 软件架构
无人直升机地面站集成管理软件采用模块化设计,界面
件架构如图1所示,分为显示界面、管理界面、通信、后台管理四大模块。
底层的通信模块中网络通信部件基于
QUdpSocket 进行开发,串口通信部件基于QSerialPort 进行开发,其他界面显示、业
务逻辑部件均基于QT 库进行开发。
2 通信模块设计
软件中的通信模块主要功能室向界面提
供显示数据,对外界提供交互接口,QT 作为一款功能强大的C++类库,库内有丰富的通信组件。无人直升机地面控制站的主要功能是和无人直升机交互数据,该类数据通信具有数据量大、对时间敏感等特点,所以采用UDP 通信;同时,地面站内设有多套
冗余设备提高地面站的可靠性,冗余设备之间除了UDP 外,也使用串口通信,因而,从全站统一数据传输协议,提高系统集成效率的目的出发,集成管理软件与外界的通信接口基于UDP 和串口。通信模块以动态链接库形式被主程序调用。
通信模块设计流程如图2所示。
■2.1 网络通信
根据需求,集成管理软件与服务器之间要实现状态管
qt进程间通信
理、权限控制等功能。基于UDP 的无状态通信的特点,集成管理软件与服务器的交互数据格式分为两部分,第一部分
为通用请求类型数据,第二部分为通用反馈类型数据,反馈
类型数据是对请求数据的执行反馈。
通用请求类型数据格式如下:struct applyData {
char srcID;基于QT 的无人直升机地面站集成管理软件设计与实现
覃石昌
(中国直升机设计研究所无人机事业部, 江西景德镇,333001)
摘要:为保障无人直升机地面控制站正常运行,需要实时管控无人机地面控制站设备运行状态。本文首先从地面站操作人员的使用性出发,设计开发了一个集成管理软件。并依次介绍了集成管理软件架构、部分模块设计。然后通过在实际项目地面控制站运行集成管理软件的方式验证其主要功能。实践证明用本文方法开发的集成管理软件具有界面直观、操作使用方便等特点,为无人直升机地面站的正常运行提供了可靠的保障。
关键词:无人直升机;地面站;集成管理软件;QT
58  |  电子制作    2021年03月
char srcID;    char destID;
unsigned long actNum;    char actCode;
char actResult;    char replyText[128];
}
其中actResult 存放ID 为actNum 的请求的执行结果,
replyText 数组存放该请求的文本信息,一般存放请求执行失败的错误信息。
集成管理软件在服务器登录期间要保持状态信息,需要定时发送心跳信息,数据格式如下:
struct HBData {
char srcID;    char destID;
unsigned long actTime;
}
为了提高效率、避免占用主线程导致主界面出现卡滞,
网络通信需要运行在线程上,代码如下:
void NetCenter::initSocket(){
udpSocket=new QUdpSocket(this);udpSocket->bind(LocalHostAddr, 6080);connect(udpSocket,&QUdpSocket::
readyRead,this,&NetCenter::readPendingDatagrams);}网络通信线程接收到数据存放在缓冲区,等待数据解析
线程解析。
char endFlag[2];
};
因为串口通信的数据流传输特点,因而串口的数据格式
需要在网络数据格式基础上增加起始标识和结束标识,其中startFlag 数组内存放开始标志常量0xAA,0xAA;endFlag 数组内存放结束标志常量0xBB,0xBB。
为了提高效率、避免占用主线程导致主界面出现卡滞,
串口通信业同样需要运行在线程上,主要代码如下所示:
for (;;) {
numRead = ad(buffer,bufferSize);if (numRead == 0 && !serial.waitForReadyRead())
{  break;
}}串口通信线程初始化串口列表,监听串口数据,接收到串口流数据后,截获0xAA 标记作为数据帧的开始标记,截获0xBB 作为数据帧的结束标记,开始标志与结束标志之间
的数据作为完整数据帧发送到串口数据缓冲中,等待数据解析线程解析。 ■2.3 数据解析
通信模块接收到的数据还不能直接发送到界面模块显
示,因为数据还要经过协议解析、运算、以及业务逻辑处理数据解析由单独线程执行,如图3所示,首先读取协
www�ele169�com  |  59
软件开发
议文件内容,从缓冲区取出通信模块接收到的数据,根据协议解析数据目的地、数据格式、数据单位等,
通过信号槽发送到界面模块。
3 界面模块设计
主界面分为四大部分,左侧为时间显示部件,中间是状态显示部件与状态管理部件,右侧是菜单部件。
如图4所示,时间显示部件可显示本地时间与时统设
备时间,当显示时统设备时间时,通信模块定时通过UDP 接收时统设备发送的授时信息,经过数据解析,推送到时间
显示部件显示出来。
时间显示
图4    时间显示部件
如图5所示,状态显示部件主要显示全站设备的自检、
运行状态信息,点击状态图标,将会弹出地面站运行详细状
态子界面,通过UDP 组播定时接收服务器推送的信息,实现显示任务模式、主链、副链、服务器、控制器等设备的状态。
消息提示栏显示地面站内设备变动、重大状态更改的消
息,例如,某设备出现故障,链路冗余线路发生切换等消息都会及时推送到消息显示栏,从而为席位操作员提供恰当的
预警通知。
状态显示
图5    状态显示部件图
如图6所示,状态管理部件是全站设备的管理入口,
界面部署负责席位计算机软件的显示位置安排;虚拟键盘在席位计算机不能连接物理键盘的情况下提供键盘的作用,进程管理可以查看、关闭本席位或站内其他计算机的进程;记
录回放负责记录站内数据流,为无人直升机飞行任务过程的故障排查、训练仿真提供数据支撑;软件管理主要对席位和其他计算机的软件安装进行管理;系统管理主要对服务器的
运行进行管理,包括参数设置,冗余手动切换等。
状态管理
图6      状态管理部分图
如图7
所示,菜单部件是集成管理软件的管理入口,
主要功能有角切换、注销、密码修改等。
系统管理
图7    菜单部件图
4 应用实例
集成管理软件部署于无人直升机地面站人机交互席位
上。首次运行前,在软件配置文件配置本席位IP 地址、UDP 通信参数等配置参数,其他的应用软件有集成管理软件启动、关闭,进行集中管理。
经过在U-M 无人直升机项目的实际运行验证,集成管
理软件运行良好,能够实时显示控制站内各设备的状态,并能有效进行管理,为无人直升机控制站的稳定运行提供了必
要的帮助。
5 结束语
本文详细介绍了基于QT 的无人直升机地面站集成故那
里软件的开发过程。用本文方法开发的集成管理软件,经在实际无人机控制站运行验证,该集成管理软件能够实时监控站内设备动态并对其进行有效管理,具有界面直观、操作方便等特点,为无人直升机的飞行提供了一定的帮助。
参考文献
* [1]禹科, 方舟, 李平, 罗平波, 郑翰. 基于Matlab 和VC++混合编程的无人机地面控制站实现[J]. 计算机应用, 2011, 31(2):225-
227.
* [2]李大键,贾伟等. 无人机地面控制站设计与应用[J]. 计算机测量与控制, 2011, (6): 51-53.
* [3]谭怡清:基于QT 的雷达终端软件实现[J]. 电子技术与软件工程, 2018, (18):50-51.* [4]施菊,赵冰,张庆.QT 开发平台的搭建与应用[J].制导与引信,2012(2).* [5]周名阳,韩秀玲.基于Qt 的图像数据网络传输应用研究[J].计算机工程与设计,2011,(6).* [6]王小东.基于Qt 的内燃机车司机显示单元的研究[J].山东工业技术,2014,(3).

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。