中国电子科技集团公司第二十研究所 陕西西安 710068
摘 要:军用软件通用化、系列化、模块化是军工企业软件发展的趋势。实时通用显控平台基于OSGi(Open Services Gateway initiative开放服务网关协议)标准实现了一套高实时、松耦合的插件化软件开发平台。该平台提供了以插件管理、插件通信、插件扩展等功能为核心的稳定内核,提供了以主界面、日志、多风格、多语言等功能为基础的系统插件、提供了开发向导、动态布局、ICD(Interface Control Document)工具、部署工具等辅助工具。该平台降低了插件之间的耦合性、提高了插件应用的灵活性和适应性、方便二次开发。通过对雷达显示业务的共性需求插件化设计,最终形成雷达显示相关的领域插件、并在系列产品中展开了应用,充分验证了基于OSGi的实时通用显控平台在雷达显示高效率、高可靠、高性能应用的可行性。
关键词:OSGi;实时通用显控平台;插件化机制;雷达显示
1 引言
我所桌面软件覆盖通信、导航、雷达等多个领域,种类繁多、功能多样,业务复杂,根据不同的项目需求,目前设计师存在重复开发,软件代码利用率不高,经常重复劳动陷入代码开发的“疲劳战”中,当前军用软件通用化、系列化、模块化是军工企业软件发展的趋势,所以使用统一公用开发平台是势在必行的。实时通用显控平台基于OSGi(Open Services Gateway initiative)[1]标准实现了一套高实时、松耦合的插件化软件开发平台,该平台提供了以插件管理、插件通信、插件扩展等功能为核心的稳定内核,提供了以主界面、日志、多风格、多语言等功能为基础的系统插件、提供了开发向导、动态布局、ICD(Interface Control Document)工具、部署工具等辅助工具。该平台降低了插件之间的耦合性、提高了插件应用的灵活性和适应性、方便二次开发。本文基于某雷达项目的实际需求,基于实时通用显控平台设计并实现了雷达显示相关的领域插件,并在系列项目中展开了应用,与传统实现方式相比极大地提高了开发效率。
2 实时通用显控平台介绍
实时通用显控平台基于OSGi标准,采用“平台/插件”[2]的微内核架构,该平台提供了以插件管理、插件通信、插件扩展等功能为核心的稳定内核,提供了以主界面、日志、多风格、多语言等功能为基础的系统插件、提供了开发向导、动态布局工具、部署工具等辅助工具,构建了一套具备快速开发、快速集成、高内聚、低耦合的国产化通用平台。
2.1 基于OSGi标准的插件化工作原理
OSGi技术是Java动态化模块化系统的一系列规范。该平台支持模块化与插件化,具有热插拔与动态特性,可支持SOA、支持插件扩展等。
OSGi的核心部分是一个框架,其中定义了应用程序的生命周期模式和服务注册。基于这个框架定义了大量的OSGi服务,包括日志、配置管理、偏好、用户管理、设备访问等。该框架实现了一个优雅、完整和动态的组建模型,支持模块化的动态部署和动态扩展;支持“即插即用、即删即无”的动态化设计;通过定义扩展点的方式支持可扩展的设计;采用微核机制保证稳定、高效的系统。
2.2 实时通用显控平台的稳定内核
实时通用显控平台内核框架以微内核为基础,提供核心的插件管理、服务机制、功能扩展机制,以此作为整个系统的运行支撑机制。
2.2.1 插件管理工作原理
系统基于插件化架构设计,是对OSGi协议规定的插件化架构C++实现,实现了系统模块的插件化、插件的热拔插功能。
基于插件化的特点,所有用户自身的业务代码完全被封装在独立的库文件中,最大程度上清晰地划分系统模块,减小模块的颗粒度,插件生命周期管理作为插件管理中最核心的部分,它实现了将所有插件实体进行实例化,并将所有插件的实例化对象进行统一管理,其结构如图2-1所示。
图2-1 插件生命周期管理逻辑图
2.2.2 插件通信工作原理
实时通用显控平台插件通信原理主要有服务机制和事件通信机制。服务机制用于管理插件提供的进程内接口对象(即服务)以及进程间的服务对象的代理器。其服务机制应定义一个动态的、简单的和一致的编程模型。该模型通过将接口定义和接口实现解耦来解决插件间的依赖,简化程序的开发和维护,如图2-2所示。事件通信机制为实时通用显控平台提供事件通信服务,包括事件主题进行事件的订阅和发布,使用事件主题解耦不同插件间的数据交换过程,
图2-2 服务机制工作模型
2.2.3 插件扩展工作原理
实时通用显控平台提供扩展点机制,提供功能和界面自由定制的能力。用户插件可通过该机制将系统功能构建为功能树,以树的形式设计整个系统的功能,通过配置文件灵活裁剪、配置系统功能模块。
插件通过定义扩展点声明需要扩展的功能点,并约定该扩展点的属性,其他插件遵守该约定并通过文本实现所约定的属性,及实现相应的接口类,完成插件的功能扩展。任意插件均可实现其他插件的扩展点,也可以自定义扩展点供其他插件功能扩展。
2.3 实时通用显控平台的系统插件
系统插件主要完成了主界面功能、日志插件、插件浏览功能、属性配置插件、多语言、多风格等插件,是实时通用显控平台运行的最小功能集。本章节重点介绍了主界面插件和日志插件。
2.3.1 主界面插件
主界面插件分为pad和desktop主界面,每个主界面的UI风格不一致,但实现机制都一致,都是内核解析每个界面插件的plugin.xml文件内的扩展实现数据,并将扩展实现数据显示在界面上。
2.3.2 日志插件
在平台设计、开发和实施过程中需要时刻记录、输出日志信息,方便日后对平台状态进行监控和异常问题进行分析。日志记录模块采用成熟的第三方开源日志记录库:Log4Qt,封装为日志动态库集成到平台中。
2.4 实时通用显控平台的辅助工具
辅助工具主要完成了开发向导功能、动态布局、组合打包功能和下载更新功能等,是实时通用显控平台快速开发、快速应用的基础。本节重点介绍开发向导工具和动态布局工具。
2.4.1 开发向导工具
插件开发向导工具将分别编写QtCreator插件无缝集成到QtCreator IDE,主要为框架二次开发者提供快速生成最小化插件工程的功能,可视化的配置插件信息、设置插件依赖、定义扩展点、实现扩展点定义等,快速生成一套最小化插件工程代码及其所需扩展配置数据,减少开发者不必要的代码编写调试工作,使开发人员专注于业务的开发。
2.4.2 动态布局工具
实时通用显控平台提供动态界面布局服务,为用户提供多个界面可视化组合布局的功能。
用户业务插件仅需编写单个业务界面即可,用户在使用了动态界面布局服务的界面可任意上下分割、左右分割窗体,并对分割出的窗体选择需要承载的业务界面。界面分割布局完成后程序会自动保存该配置信息。
3 实时通用显控平台在雷达显示的应用
雷达显示领域业务主要包括雷达视频、目标数据的A显、B显、P式显示功能以及雷达数据管理功能,其中B显和P显插件的数据量为8192*500,扫描的频率为60转/分钟,余晖的角度设置为0-360°,显示的目标批数最大支持500批。雷达显示领域插件实现利用实时通用显控平台“平台/插件”的设计思想,充分利用插件开发、服务机制等内核模块功能,并利用订阅通信机制以及动态布局、开发向导等辅助工具,构建雷达显示领域插件合集。
3.1雷达显示领域插件设计
3.1.1 建立插件模块
首先通过对雷达显示领域业务内功能的梳理总结,将领域业务划分为不同的模块,产生相互之间松耦合的多个插件,梳理出的插件如表3-1所示。之后利用开发向导工具快速建立各个插件统一的开发环境,可在各开发环境中进行相关功能模块的开发;各插件均可独立开发、测试和部署,一旦开发完成就可以由插件框架进行组合。
表3-1 雷达显示业务插件
序号 | 名称 | 功能 |
1 | 雷达A显 | 雷达视频A式显示及相关功能 |
2 | 雷达B显 | 雷达视频、目标B式显示及相关功能 |
3 | 雷达P显 | 雷达视频、目标P式显示及相关功能 |
4 | 雷达数据管理 | 雷达视频数据、目标数据的管理及更新功能 |
3.1.2 创建服务
整理插件模块的功能,提取出供外部调用的功能,利用实时通用显控平台的服务机制,分解归纳的功能创建为不同的服务,供其他插件使用。以雷达P显插件为例,将雷达P显插件具有的功能封装为如表3-2所示的服务。
表3-2 雷达P显插件服务
序号 | 服务名称 | 说明 |
1 | setIRadarShowData | 设置数据源 |
2 | setAfterglow | 设置余辉大小 |
3 | setCurrentRadarDistance | 通知雷达当前监测距离 |
4 | setScanLine | 设置扫描线颜色 |
5 | setNorthLine | 设置正北线颜色 |
6 | setBowLine | 设置舰艏线颜色 |
7 | setFanMode | 设置扇扫模式是否有效 |
8 | setFanAngle | 设置扇扫角度 |
9 | addSemiautomaticWave | 增加半自动波门 |
10 | addFullyAutomaticWave | 增加全自动波门 |
11 | delWave | 删除波门 |
12 | setNewCenter | 设置偏心中心使能 |
13 | restoreCenter | 恢复中心 |
14 | setDataCount | 设置数据总量 |
15 | setScanSpeed | 设置雷达转速 |
16 | setMeasureDistanceEnabled | 设置测距使能 |
3.1.3 创建消息通信
利用实时通用显控平台提供的消息通信机制,按照各插件功能的需要,建立不同类型的消息通信主题,在一定条件下向外发布消息,可供其他插件按需订阅,以完成插件之间的消息通信功能,以雷达P显波门设置功能为例,当创建、删除波门操作完成后,发送相关主题消息。创建的消息主题如表3-3所示。
表3-3 雷达P显消息通信主题
序号 | 主题名称 | 说明 |
1 | addSemiautomaticWave | 增加半自动波门完成后发送该消息 |
2 | addFullyAutomaticWave | 增加全自动波门完成后发送该消息 |
3 | delWave | 删除波门完成后发送该消息 |
3.2雷达显示应用实例
以某重点搜索雷达项目显控软件为例,进行基于实时通用显控平台的雷达显示应用开发。
3.2.1 建立项目特定插件
根据项目本身特定需求,建立一个项目特有功能插件,该插件解析项目本身特定的外部接口,以获取雷达视频数据和雷达目标数据。同时获取雷达领域插件中的服务对象,在一定的条件下向各雷达领域插件请求服务,包括视频数据实时更新和显示,以及各项参数的设置功能等。并按照项目本身需要,对相关主题消息事件进行订阅接收。
3.2.2 应用实现
利用实时通用显控平台提供的动态布局工具,经过可视化插件界面部署,形成项目需要的雷达显示功能,最后需要用户使用雷达领域插件提供的雷达数据管理功能实现项目的需求,最终雷达显示应用实际运行图如图3-1所示。
图3-1 雷达显控界面
本文主要介绍了实时通用显控平台的插件化工作原理、稳定内核、系统插件以及辅助工具。本文基于OSGi的实时通用显控平台,应用“平台/插件”的设计思想实现雷达显示领域插件,在某系列搜索雷达、某系列火控雷达及某系列跟踪雷达项目中应用结果显示,运行稳定可靠,可支持雷达扫描的频率为60转/分钟,可满足500批目标实时刷新的性能要求。
参考文献:
[1]李俊娥,周洞汝.“平台/插件”软件体系结构风格[J].小型微型计算机系统.2007(5):876-881.
[2]张鑫.雷达图像显示处理[D],大连:大连海事大学硕士学位论文. 2011.