APP下载

基于组件技术的船舶导航系统设计与实现

2019-11-30薛雯吴瑞祥祁青青

电子技术与软件工程 2019年1期
关键词:海图右键导航系统

文/薛雯 吴瑞祥 祁青青

1 引言

船舶导航系统作为船舶航行信息的获取和指导模块,对船舶的航行安全有着重要意义。随着导航、计算机、网络、信息融合及地理信息系统等多学科的技术发展,船舶导航系统也出现了多种类型,如惯性导航系统、全球定位系统(GPS和北斗)、多普勒测速系统、无线电导航系统、数字导航雷达以及电子海图显示系统等。

本文基于组件技术构建了一个可扩展的船舶综合导航系统,可以接入多种信息源数据,同时可以对功能进行模块化开发,如海图量算、海图标绘、航线设计、历史航迹回放、信息查询等,根据用户需求开发多样化的定制功能,并做到软件功能的灵活配置。

2 船舶导航系统的体系架构

基于组件的船舶导航系统主要由基础平台层、数据支撑层、中间层和应用层组成,基础平台层为系统提供必要的平台支撑,包括操作系统、地理信息系统和数据库管理系统等,数据支撑层提供接入的多种信息源数据。应用层包括主界面、海图量算、海图标绘、历史航迹、航线设计、水文气象等业务功能组件。中间层包括三个模块,其中主控模块是组件的管理器,动态加载功能组件,同时对组件进行注册和管理。中间层接口负责封装与基础平台层交互的接口,由此减少由平台变更导致的业务功能代码重构,提高代码的可扩展性、可维护性和稳定性。数据管理模块负责管理船舶导航指挥所需的各种数据,其中实时目标数据包括雷达探测的实时目标数据、北斗AIS船载一体机获取的船舶信息等,静态数据包括码头、锚地、航道、浮灯、警戒区、禁渔区、IPO点以及用户标绘数据等。

3 基于组件技术的船舶导航系统

3.1 动态组件工作原理

框架是在基础平台层上开发的可独立运行的程序,提供以电子海图为基础的二三维一体化显示平台。框架通过主控模块实现组件的加载和管理,为组件的功能实现提供图形化显示、数据支持和人机交互。

组件是系统功能实现的载体,包含一个工厂类组件及一个或多个功能组件,组件的工厂类组件为组件提供与框架交互的接口,是组件实例化的入口。工厂类组件接口包括初始化、释放、获取组件ID、获取组件描述信息、获取组件接口列表、获取组件接口指针等。

功能组件包括命令组件、消息组件、工具组件、菜单组件等。命令组件的命令标识是唯一的,收到调用命令时,主控将根据命令标识发送给注册该命令的组件进行处理。消息组件采用的是广播机制,即发送消息时,所有组件都会收到消息。工具组件用于图上操作管理,图上操作具有排他性,组件A进行图上操作时,其他组件将结束之前的图上操作。菜单组件用于系统右键菜单的组合。

3.2 通信机制

在保证组件间松耦合的前提下,系统提供了三种通信方式:

(1)组件间通过调用主控接口进行通信,组件A调用主控模块的执行命令接口intExecu teCommand(constQStringstrCommand,intiInput,QStringstrInput, void* pInput, void** pOutParam = 0),其中strCommand为命令ID,iInput、strInput和pInput为输入参数,pOutParam为输出参数,组件B接收到组件A发送的命令后,将执行结果填入pOutParam,则组件A可获取到执行结果。

(2)组件间可以通过共享内存来实现数据交换,即多个组件通过访问同一块内存实现数据交换。系统的数据管理模块可实现数据交换,数据管理模块提供订阅-发布机制,当某个组件修改数据后,发布数据变更事件,其他组件可以通过订阅数据变更事件获取数据变更消息,从而进行相应处理。

(3)组件间可通过接口调用进行数据交换。A组件将导出接口指针存入主控模块,B组件通过接口ID获取接口指针,通过接口调用实现数据交换。

3.3 右键菜单

系统的右键菜单只有一个,菜单功能可能来自一个组件也可能涉及多个组件。右键菜单项的生成首先需要指明操作对象,操作对象包括海图、实时目标和标绘图元等,不同组件针对相同操作对象的菜单才需要组合。

在配置文件中定义所有操作对象,当用户按下右键后,主控模块通过调用菜单组件的接口QListOnGetMenuItem(QSt ringsOper, QPointpt)遍历组件,获取组件的右键菜单状态,其中sOper为操作对象类型,MenuItem为结构体,定义了名称、命令、快捷方式、子菜单等。功能组件根据当前的操作对象返回菜单项。主控模块遍历所有的菜单组件后生成右键菜单,为了使菜单项的加载顺序不受组件加载顺序影响,保证组件配置的灵活性,系统中增加了一个菜单项配置文件来决定菜单项的配置顺序。

4 结束语

船舶导航系统对于海上交通安全有着重要意义,相较于传统船舶导航系统功能模块不易维护和替换,基于组件技术的船舶综合导航系统,因其体系架构的独立性,能够快速响应需求的变化,缩短研发周期,在软件发布后还可以灵活配置和完善已有功能。目前,该系统已在百余艘船舶上安装试用,实践证明,基于组件集成技术开发的船舶导航系统极大地提高了系统的可扩展性和可维护性。

猜你喜欢

海图右键导航系统
轻松整理Win10右键菜单
少林功夫拳(三)
一种GNSS/SINS容错深组合导航系统设计
解读全球第四大导航系统
点亮兵书——《筹海图编》《海防图论》