一种基于Qt的被动雷达显控软件设计
2014-09-08练学辉
练学辉
(海军驻南京地区雷达系统军事代表室, 南京 210003)
一种基于Qt的被动雷达显控软件设计
练学辉
(海军驻南京地区雷达系统军事代表室, 南京 210003)
提出了一种基于Qt的图形视图框架下的被动雷达信息显示的方法。图形用户界面能够实时刷新显示被动雷达信息。采用Qt Designer工具和Qt的样式表使得图形界面风格设计简单,界面友好。
Qt;被动雷达信息显示;图形视图框架;Qt Designer;样式表
0 引 言
雷达信息显示在雷达中占有重要的地位。雷达探测到目标后,通过数据处理将信息传送到终端上,终端将获取的目标信息以有效、直观的方式呈现给观察者,同时通过指令精准地控制雷达[1-2]。
近年来,随着微电子技术和软件技术的发展,人们开始大量采用通用微型计算机来完成雷达显控终端的设计。本文设计的雷达终端的雷达信息显示软件也在通用微型计算机上实现。鉴于Qt跨平台以及良好的图形界面设计优势[3-4],本设计采用Qt软件工具包,在windows平台下实现被动模式下的雷达信息图像显示。被动模式下雷达获取的信息主要是脉冲描述字(PDW)统计信息、目标信息等。采用Qt的图形视图框架下的GraphicsView/Item机制将该信息绘制到图元上并实时更新。对于操作界面,可以利用Qt Designer进行设计并利用Qt Style sheet进行美化。
1 Qt图形视图框架
Qt的图形视图框架提供了一种基于图像对象的方式来实现 model-view的编程模式。这一点很像例程 InterView中的辅助类 QTableView、 QTreeView和QListView。不同的视图可以显示一个场景,场景则包含了不同的几何形状的对象[3]。
图形视图(Graphics View)提供了支持大量自定义的二维图形对象(Item,译为“对象”)交互(Interaction)的管理器,以及一个支持缩放和旋转操作的视图widget用于显示这些元素。
该框架包含了事件(Event,在Windows下可以理解为“消息”)传播的框架,支持场景管理器中精确的交互能力,以双精度浮点数表示对象位置、大小等属性的变化。图形元素还能处理键盘事件、鼠标按下/移动/释放和双击的时间,同时也能跟踪鼠标移动。
图形视图使用BSP树(Binary Space Partitioning,二叉空间分割)提供对图形对象的快速查找。可以想像,即使是包含数以百万计对象的超大场景也能够进行实时显示。
1.1 场景
QGraphicsScene提供了图形视图的场景管理器。场景管理器有如下职责:提供一个用于管理大量对象的快速接口;将事件传递到每个对象上;管理对象的状态;提供未进行坐标变换的渲染功能,主要用于打印。
场景管理器是图形对象 QGraphicsItem的容器。调用QGraphicsScene::addItem()将对象添加到场景中后,用户可以通过调用场景管理器中不同的查找函数来查找其中的图形对象。QGraphicsScene::items()函数及其重载函数可以返回所有通过点、矩形多边形或路径等不同方式选中的所有对象。QGraphicsScene::itemAt()返回在指定点位置上最上面的对象。
1.2 视图
QGraphicsView提供了视图widget,将场景中的内容显示出来。可以用几个不同的视图来观察同一个场景,从而实现对于同一数据集的不同viewport。该Widget同时也是scroll area,为大场景提供滚动条。如果要启用OpenGL支持,可调用QGraphicsView::setViewport。QGLWidget设置为其viewport。视图接受键盘和鼠标消息,并将这些消息转换成场景事件(同时将视图坐标转换为场景坐标),然后将事件发送给可见视图。
1.3 对象
QGraphicsItem 是场景中所有图形独享的基类。图形视图提供了几种标准的对象:矩形(QGraphicsRectItem)、椭圆(QGraphicsEllipseItem)和文本对象(QGraphicsTextItem)。但是,QGraphicsItem最强大的功能是支持定制的图形对象。
QGraphicsItem支持如下特征:鼠标按下、移动、释放和双击事件,同时还支持鼠标悬浮事件、滚轮事件和上下文菜单事件;键盘输入焦点和键盘事件;拖放;组合(通过父对象--子对象进行组合,或者通过QGraphicsItemGroup组合);碰撞检测。
1.4 Qt Designer
Qt Designer是一个GUI工具,可以帮助加快Qt程式的开发速度。利用Qt Designer这种所见即所得的方式来产生Qt程式的GUI介面的程式码。通过增加一些功能就可以完成一个程式。利用Qt Designer可以非常快捷、简便地设计出显示界面。
对于窗口或者是控件的效果,可以使用style sheet来进行设计和控制。
2 雷达信息显示设计
本雷达的信息显示主要包括主显示区、开窗放大显示区、操作控制区和状态信息显示区,如图1所示。
图1 被动雷达信息显示界面
主显示区主要是显示基于前端处理得到的PDW统计信息量化得到的频率-方位能量图以及重点目标的信息。开窗放大区主要是对主显示区中的用户感兴趣的方位范围和频率范围进行放大,便于用户获取该范围的相关信息。操作控制区主要是为用户控制开窗放大参数提供良好的人机接口。状态显示区主要是显示当前的雷达工作模式信息以及系统时间等信息。
2.1 PDW频率分布统计信息及重点目标显示
对于PDW频率分布统计信息显示,从基类QGraphicsItem继承生成的一个PDWShownItem类,基于对外接口获取PDW频率分布统计信息数据,将其存储至开辟的一段内存缓冲区中。PDWShownItem类读取该内存缓冲区,将内存缓冲区的内存存储值基于颜色映射表映射成对应的颜色值,同时根据内存缓冲区的地址相对值映射成为对应的频率和方位,最终生成能量图。QT提供了底层的绘制类QPainter,绘制出该能量图像在屏幕上显示出来。该过程流程如图2。
图2 能量图显示流程
通过重写QGraphicsItem::paint函数,在该函数中调用绘制函数类QPainter就能够在所需要的位置上绘制出需要显示的频率-方位能量图,对于坐标轴等也通过此类绘制。图3中给出了能量图的生成与显示的过程。该过程涉及到两组映射,一是内存缓冲区的图像数据首先通过映射和转换生成一个QImage对象,然后调用QPainter类对象的drawImage函数就能在显示区域的指定区域绘制能量图。该过程关键是通过一定的函数关系将内存中的数据映射到数值为[0,255]区间的数值,然后基于颜色映射表将内存的数值转换成为一幅伪彩色图像。
图3 内存图像数据显示到屏幕的映射
另外一组映射是将实际的数据范围与显示的范围形成一定映射关系。假定显示的频率范围为[RFMin,RFMax],显示的方位范围为[AziMin,AziMax],显示区域宽为ScrX,显示区域高为ScrY。由于显示区域的物理坐标是以屏幕的左顶点为原点,向右和向下为正方向。若以显示区域的左底点P0(x,y)为原点,显示区域宽为方位映射,显示区域高为频率映射。对于实际属于该频率与方位的一点(RF1,Azi1),映射到显示区域的坐标点P1(x1,y1)为
(1)
(2)
通过式(1)、(2)就能够得到实际的数值与显示的值的映射关系。
对于重点目标显示,从基类QGraphicsItem中继承生成一个类。该类的成员变量用于存储目标的相关信息,通过重写QGraphicsItem::paint可以将需要显示的信息显示出来。由于目标类是需要在频率-方位能量图上显示,需要设置目标类的父类为PDWShownItem。通过 QGraphicsItem::setPos函数,基于式(1)和(2),可以将目标类在显示区域的正确位置上显示出来。
2.2 开窗放大显示
对于开窗放大显示,图4给出了其显示的一个简单的过程。其显示的过程同1.2节的显示频率-方位能量图类似,区别在于实际的数据范围的映射是基于输入的开窗参数得到的。目标类的显示也与主显示区的实现过程一致。
图4 开窗放大内存图像数据显示到屏幕的映射
2.3 操作控制区显示和状态信息显示
对于操作控制区显示和状态信息显示,采样的是基本的窗口部件QWidget和QPushButton等。点击操作控制区的频率分布显示控制,通过QLineEdit::text函数和QString::toDouble获取QLineEdit中输入的放大参数,通过函数映射将参数映射到显示缓冲区的内存区域,开窗放大显示获取对应的内存区域值,最终得到频率-方位能量图。对于状态信息显示区的鼠标信息,重写QGraphicsItem::hoverMoveEvent获取鼠标的位置信息。利用Qt特有的信号与槽方式,状态信息显示区得到鼠标的位置信息并显示。
3 应用实例
在某项目上采用Qt4.7.0进行雷达信息显示,其界面如图5所示。图中,主显示区域的虚线框表示为开窗区域,右上角的开窗显示区域显示的为开窗区域的图像信息。整体显示画面逼真,运行速度快,操作简便。
图5 基于Qt的被动雷达信息显示示例
4 结束语
本文所给出的基于Qt的被动雷达信息显示设计已经在某型设计中进行了测试。试验的结果表明,基于Qt 的雷达界面设计,界面设计与美化简单快捷,雷达信息的显示与实时刷新能够满足雷达信息显示的要求。
[1] 陈丽娟. Qt和OpenGL在雷达显示控制终端设计中的应用[J].电子工程师, 2006,32(10):5-7.
[2] 安良,刘扬,莫红飞.基于Qt的雷达信息显示设计[J].现代电子技术,2011,34(11):26-28.
[3] 郑阿奇,陈超.Qt4开发实践[M].北京:电子工业出版社,2011.
[4] Jasmin Blanchette,Mark Summerfiled. C++ GUI Qt4编程[M].闫锋欣,曾泉人,等译.北京:电子工业出版, 2008 .
Design of display and control software of passive radar based on Qt
LIAN Xue-hui
(Military Representatives Office of Radar System of the PLA Navy in Nanjing, Nanjing 210003)
A method of displaying information of passive radars is proposed under the graphics view framework based on the Qt. Graphic user interface (GUI) can refresh and display the information of passive radars in real-time. The adoption of the Qt Designer and the Qt style sheet makes the GUI simple and friendly.
Qt; information display of passive radar; graphics view framework; Qt Designer; style sheet
2014-04-15
练学辉(1965-),男,高级工程师,研究方向:雷达总体技术。
TN957.522
A
1009-0401(2014)03-0061-04