50 • 电子技术与软件工程 Electronic Technology & Software Engineering
软件开发 • Software Development
【关键词】QT 集成化 插件
电子战显示控制主要完成了电子对抗装
备的综合显示和控制功能,通过控制各电子对
抗相关设备工作状态、工作模式,调度电子对
抗各设备功能,接收各设备状态和处理结果信
息,形成电磁环境态势图,进行显示和综合决
策,完成对空和对海进攻、友邻舰艇支援干扰,
舰艇自卫干扰、电子情报获取、硬武器系统信
息支援等任务。
随着QT 插件技术在跨平台方面的拓展和
应用,越来越多地应用于电子战装备的显示,
本文介绍了一种实现电子战各个功能模块隔离
和重构的显示技术。
1 功能特性
电子战是冲突双方为了探测和电子攻击
敌方部队和武器控制系统,包括高精度武器及
保护己方电子系统和其它目标免于被技术侦察
(电子情报行动、ELENT)、人为干扰和自
然干扰,而采取的一系列措施和行动。免于被
自然干扰含有确保电磁兼容性(EMC)。所
以这一系列的行为操作包含了较为复杂的显示
控制。
电子战显示功能繁多,主要包括了无源
侦察和情报分析,对舷外干扰设备、毫米波干
扰设备、激光告警设备的目标引导和发射控制、
通信侦察干扰显示控制、
X 波段和有源干扰显示控制。同时还要完
成系统任务状态监控、系统资源监视、电子对
抗任务规划、对抗设备管理控制、综合电磁态
势和对抗态势显示等功能。各个功能都需要一
套对应操作界面来进行操作和反馈。本文介绍
了一种基于QT 插件技术的集成框架,利用插
件技术把电子战的所有功能进行划分,并灵活
地配置。
2 插件简述
文/凌旺 刘德龙 张名明
随着现代战争中电子战的作
用越发重要,电子战显示软件作
为控制的终端,需要针对各种任
务需求快速、灵活地下发命令并
反馈作战信息。基于这种作战需
求,本文提出了一种以QT 语言为
开发平台,基于插件集成技术的
电子战显示控制软件设计。该设
计介绍了插件技术、集成化方式
和具体设计方法,并且该软件设
计技术已成功应用。
摘 要
遵循综合显示控制软件架构设计,采用
开放式的软件体系结构,基于统一的态势集成
框架和插件技术进行软件开发,可根据作战任
务进行各台位功能重构,灵活配置。
软件设计主要分为核心层、中间层和应
用层,如图1 所示。
核心层主要包括操作系统、多功能台设
备驱动等模块,提供屏蔽硬件平台差异的服务。
中间层主要包括综合态势显示框架和共
性插件,在核心层的支持下,为应用层的功能
插件开发和台位应用软件集成提供统一的共性
平台。
应用层功能插件基于综合态势显示框架
和共性插件开发,按照统一标准和接口,完成
各设备相关的显示操控等功能。台位应用软件
完成框架和共性插件、各功能插件等的功能集
成,实现应用软件的相关功能。
3 软件设计
QT 插件集成框架技术已经在某项目中得
到应用,本次软件设计主要包括三部分,分别
为综合态势软件框架、共性插件和功能插件。
如图2 所示。
3.1 软件框架
首先定义一个数据通信接口:用于插件
和框架、插件和插件之间通信。
功能包括:
(1)增加读写内存总线的函数接口;
(2)增加数据输出的函数接口;
(3)确定插件的通知机制:使用挂接函
数进行控制传递;
(4) 优化为仅仅通过核心插件设置
IDataBus 接口指针来对数据总线进行访问。
通用插件必须实现的接口:
c l a s s IDa t aCommu { p u b l i c : v i r t u a l
~IDataCommu() {}; 调用插件后,初始化插
图1
图2
Software Development • 软件开发
Electronic Technology & Software Engineering 电子技术与软件工程• 51
件库virtual void Initialize( ) = 0; 插件退出
时, 释放资源virtual void Release() = 0; 每
个插件实现此函数,表示此插件的名称,和
uID 配对virtual QString GetName() =0; 更改
插件的状态:state 指向状态数据缓冲 virtual
void SetStateData(QByteArray &state) = 0; 清
空所有的历史数据、状态virtual void Clear()
= 0;protected: 派生类获取此指针读写数据
总线,挂接数据更新通知函数IDataBus *
pBusInterface;public: 插件间通信使用的接口相
关定义void SetBusInterface(IDataBus * pFace)
{pBusInterface = pFace;};};。
此框架类主要实现了各个功能插件和共
性插件的通信接口标准定义。
显示界面功能接口:
class IDisplay{public:~IDisplay(){}; 获得显
示的窗口指针Qt::DockWidgetArea;widgetList
停靠的窗口列表;dockList 停靠属性列表:
NoDockWidgetArea 是正常显示窗口, 否则是停
靠窗口,返回窗口的数量virtual const quint32
GetWidget(QList<QWidget* >&widgetList,
QList<QString>&nameList, QList<Qt::DockW
idgetArea>&dockList) = 0; 增加一个接口:
输出QAction 列表virtual QList<QAction*>
GetActList() = 0; 增加一个接口:输出菜单
项strMenuName 菜单栏的名称, 避免产生
过多的菜单栏核心插件按照strMenuName
设置菜单栏项目virtual QList<QMenu*>
GetMenuList(QString * strMenuName) = 0; 增加
一个接口:输出label virtual QList<QLabel*>
GetLabelList() = 0; 增加一个接口:输出菜单项,
窗口的显示名称,显示为标题virtual QString
GetName() =0;}。
此框架类主要实现了各个功能插件和共
性插件的显示接口标准定义。
3.2 共性插件
共性插件是“CorePLugIn”插件,继承于
IEwCore 共性插件类。
class IEwCore{public:virtual ~IEwCore()
{}; 调用插件后, 初始化插件库virtual void
Initialize( ) = 0; 启动显示窗口,设定主标
题virtual void Start(bool bShow,const char
* title)=0; 插件退出时, 释放资源virtual
void Release() = 0; 处理各个插件的输出数
据, 实现各个插件的数据交互virtual void
ProcessPlugData(const DataOut_Descrip_
Info&) = 0; 限制只能是此名称,主程序首先
加载插件virtual QString GetName(){ return
QString("%1").arg("ewcore");};};
此类主要定义一个框架的共性插件:负
责整个系统的插件的加载、管理、数据通信交
互;负责显示界面的布局。
在主函数int main(int argc, char *argv[]) 里
直接调用共性插件,在void LoadCorePlugIn(){}
函数里实现。
3.3 功能插件
功能插件主要实现了电子战显控的具体
功能,包含网络、存储、态势图形、导航大气
等功能都能在功能插件里得到实现。
各种功能插件在共性插件void
QCorePlugIn::Initialize( ){} 的函数里调用。通
过配置文件读取函数ReadConfig() 读取配置文
件“sysconfig.xml”来动态加载和卸载各个功
能插间。
4 应用实例
如图3,这是在QT 插件集成化框架体系
结构下的具体应用实例。图上3 个功能插件可