VxWorks环境下基于Qt的声纳信息显示设计*

2016-10-25 06:57范新刚胡海燕
舰船电子工程 2016年9期
关键词:图形用户界面声纳控件

范新刚 姚 新 胡海燕

(上海船舶电子设备研究所 上海 201108)



VxWorks环境下基于Qt的声纳信息显示设计*

范新刚姚新胡海燕

(上海船舶电子设备研究所上海201108)

文章提出了一种在嵌入式VxWorks环境下,基于Qt图形化视图框架的声纳信息显示的新方法。实现基于Qt图形化视图框架的声纳信息显示,使得图形用户界面具有信息显示实时和程序架构简单的优点。VxWorks下利用Qt进行窗口图形界面开发的方法,成功地解决了嵌入式系统下图形界面开发困难的问题。

VxWorks;Qt;声纳信息显示

Class NumberTB556

1 引言

VxWorks操作系统是美国风河公司(Wind River Systems Inc)设计开发的一种嵌入式实时操作系统,良好的持续发展能力、高性能的内核以及友好的用户开发环境,使VxWorks在嵌入式实时操作系统领域占据一席之地,广泛应用在通信、数字图像设备军事、航空和航天等高精尖及实时性要求极高的领域中[4]。

但是VxWorks下使用WindML开发复杂的图形界面,需要程序员编写大量的代码,对控件的实现都需要调用底层的作图函数进行绘制,造成了开发周期长的问题。而Qt具有优良的跨平台特性,可以一次编写,随处编译;良好封装机制;Signal—Slot连接的事件驱动机制;提供Qt Designer工具开发界面,便于程序开发等。在图元层,而对于背景地图等无需频繁更新的图层本文中使用Qt进行窗口图形界面开发的方法,实现基于Qt图形化视图框架的声纳信息显示,使得图形用户界面具有信息显示实时,程序架构更加简单[1]。

本文不考虑声纳图像显示。对于点迹、航迹等实时更新的信息显示,采用Qt图形化视图框架中Graphics View / Item机制进行处理并将其绘制信息,可以将其绘制在背景层或前景层。对于操作界面,可以利用Qt Designer进行设计并借助于Style Sheet属性对其美化[3]。

本文重点讨论在VxWorks6.6下用Qt 4.5.0进行窗口图形界面开发的方法。

2 VxWorks下的Qt的基本原理

Qt是一个多平台的C++图形用户界面应用程序框架,它提供给开发者建立艺术级的图形用户界面所需的所用功能,以下是在VxWorks中使用Qt实现图形化工程的基本原理。

2.1Qt图形界面应用程序的配置与编译

WindML是一个适用于VxWorks下开发图形用户界面的媒体库,WindML通过提供一系列的图形API函数,以及鼠标、键盘、字体和显示芯片的驱动,使得用户可以在嵌入式系统设备上实现图形用户界面[5]。在使用Qt之前必须先根据目标机配置情况及应用需求来对WindML的处理器类型、图形设备、输出设备等进行配置,配置完成后编译WindML生成相应的目标文件[2]。

完成WindML的配置和编译后,根据工程应用需求对VxWorks进行配置,将C++ Components、POSIX Message Queues、POSIX Semaphores选择包含进VxWorks工程中,编译生成VxWorks映像。基于Qt图像应用开发,需要将WindML的相关组件2D graphics和complete 2D library选择包含进VxWorks工程中[6]。

利用Qt进行图形界面应用程序的开发,需要对WindML进行相应的配置、编译和连接,并完成VxWorks操作系统配置[8]。首先用户使用Qt提供的可视化设计工具来构建相应的图形操作界面,生成.pro工程文件,在用make等Qt相关操作生成.cpp和.h文件;然后在WorkBench3.0编译环境下将进行编译和链接生成最终的应用程序目标码。编译界面如下图1所示。

图1 Qt图形界面应用程序编译示意图

2.2图形界面应用程序开发

图形界面的开发主要通过Qt Designer来实现,Qt提供了大量的图形控件,用户以拖放的方式从控件面板添加相应的控件对象,通过双击控件的方式打开控件属性编辑框,通过控件属性编辑框,用户可以设定控件的标题、位置、颜色、图片、字体、BOX类型、事件响应方式等属性[7]。界面设计完成之后,用户可以进行界面效果的预览。利用Qt可视化界面设计工具设计好图形界面后,接下来就是在此基础上进行图形界面应用程序的编写。

3 声纳信息显示设计

声纳信息显示主要包括点迹、航迹、声纳图像、背景地图以及矢量图形等信息显示。本文中的声纳图像实时显示功能借助于硬件手段实现,故不再描述。对于点迹、航迹,由于其信息实时更新,因此可以使用作为图元绘制在图元层[12];而对于背景地图等不经常改变的信息,绘制于背景层。

3.1点迹和航迹显示

由于点迹和航迹显示方法类似,故以点迹显示为例[9],从基类QGraphicsItem中派生一个用户定制的图元类QGraphicsPlotItem表示声纳点迹对象。用QGraphicsPlotItem成员变量表征点迹属性,用QGraphicsPlotItem成员函数定制点迹操作。每个点迹用一个QGraphicsPlotltem对象来表示,然后建立一个点迹链QPlotLink保存所有点迹信息。当收到一个新点迹时,在点迹链QPlotLink前插入一个QGraphicsPlotItem对象表示该点迹,并调用setPos()函数设置其场景位置,然后调用addItem()函数将QGraphicsPlotItem对象添加到场景中并在视图显示。若点迹消失,此时需要将QPlotLink链表中最后一个单元删除,并调用QGraphicsScene的函数removeItem()将该对象从场景中删除。

3.2背景信息显示

本应用实例中,背景信息为电子海图,不需要经常改变的。故使用QPixmap类进行背景显示,创建一个QPixmap类的对象指针pPixmap,然后将背景路径信息进行设置[11],例如QPixmap(QObject::tr ("/Dos/icon.bmp")),然后在调用setPixmap()函数将背景添加到场景中并显示。

3.3矢量图形显示

在声纳信息显示中,常需绘制刻度线辅助目标测量,如距离刻度线、方位刻度线,具有特定功能的区域,如参数区、目标区等。Qt提供底层的绘图类QPainter。该类既可以绘制简单的直线,也可以绘制复杂的图形。如提供drawline()函数绘制直线,drawPic()绘制扇形,drawText()绘制文本,drawPath()绘制复杂图形。对于距离刻度线,通过调用drawLine()即可实现,对于方位刻度线,在PPI显时可以调用drawEIlipse()函数绘制圆形[10]。并将以上绘制函数放入QPaintEvent事件中来调用即可。

3.4应用程序实例

本实例为一个窗口应用,采用Qt4.5.0进行声纳信息显示软件开发,其显示界面如图2所示。通过实际应用可以发现其信息显示和战术操作完全满足声纳信息显示的需要。本实例界面中包含有一个菜单条控件、一个表格控件以及六个按钮控件。通过点击显示目标信息按钮可以在表格控件中实时显示目标的相关信息,表格控件的内容是动态更新的。通过点击显示按钮可以实时显示设备的参数信息。通过相应的菜单选项可以进行目标信息的查看等。

图2 声纳应用实例窗口界面

4 结语

Qt为用户提供了一套完整的嵌入式人机界面解决方案,其简洁高效的程序界面设计方式,大大减轻了程序设计人员进行界面设计的劳动强度,提高了程序开发效率。本文介绍了Qt图形界面开发工具,分析了利用该工具进行用户界面设计以及相应的应用程序的开发过程。通过实际工程应用表明,Qt在功能和性能方面能够满足基于VxWorks的实时系统窗口图形界面开发要求,在嵌入式系统图形开发方面有着广泛的应用前景。

[1]孔祥营,柏桂枝.嵌入式实时操作系统VxWorks及其开发环境[M].北京:中国电力出版社,2002:156-160.

[2]陈智育,温彦军,陈琪.VxWorks程序开发实践[M].北京:人民邮电出版社,2004:210-225.

[3]申成祎.基于VxWorks操作系统的WindML 2D显示方案[J].电脑开发与应用,2004,10(6):45-47.

[4]周晓光,翟尹羚.基于嵌入式Linux下的MiniGUI的应用[J].电脑知识与技术,2005,35(10):96-97.

[5]梁勇,孟桥.嵌入式操作系统VxWorks中的显控程序设计[J].电子工程师,2002,28(12):7-9.

[6]张娜欢,叶经方,严隽钰.MiniGUI在电力通信服务器中的应用[J].电子工程师,2007,33(12):50-52.

[7]张升,陶维青.嵌入式图形用户界面MiniGUI[J].仪器仪表用户,2004,11(6):82-84.

[8]蔡华,卞新高,史中权.基于VxWorks的WindML图形界面开发方法[J].工业控制计算机,2005,18(8):28-30.

[9]李海亮,石鹏程.VxWorks的WindML图形界面程序的框架分析[J].工业控制计算机,2007,20(1):46-47.

[10]曾虹,吴新华,张翔.基于MiniGUI的数据采集卡应用系统的开发[J].杭州电子科技大学学报,2007,27(1):54-58.

[11]汪丽云,徐晓苏.基于VxWorks的PCI设备驱动程序开发[J].舰船电子工程,2006,26(1):87-90.

[12]陈恩庆,王忠勇,宋豫冀.VxWorks下图形用户界面的开发[J].微计算机信息:测控仪表自动化,2003,19(3):48-49.

Design of Sonar Information Display Based on Qt in VxWorks

FAN XingangYAO XinHU Haiyan

(Shanghai Marine Electric Equipment Institute,Shanghai201108)

In order to find a solution to the difficulty about graphical interface development of embedded system,this article discusses the development ways of VxWorks graphical interface development based on Qt,analyzes the Qt’s principle of work and development flow,then presents an application example.Engineering application proves that Qt has powerful function and its usage is convenient.Also,it is a good solution of embedded system graphical interface development.

VxWorks,Qt,sonar information display

2016年3月16日,

2016年4月27日

范新刚,男,硕士,工程师,研究方向:嵌入式系统显控设计。姚新,男,高级工程师,研究方向:信号处理。胡海燕,女,硕士,高级工程师,研究方向:显控设计。

TB556DOI:10.3969/j.issn.1672-9730.2016.09.022

猜你喜欢
图形用户界面声纳控件
反潜巡逻机与无人艇应召反潜中协同声纳搜潜研究
基于.net的用户定义验证控件的应用分析
Daniel Kish
Java图形用户界面编程在文本格式化设置系统中的教学研究
关于.net控件数组的探讨
基于深度学习的声纳智能化显控设计方法∗
浅析我国GUI外观专利申请现况
城轨综合监控系统用户界面菜单层级结构设计与实现
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
MiniGUI在基于OMAP5912开发板上的移植