linux下基于q的雷达信息显示技术_第1页
linux下基于q的雷达信息显示技术_第2页
linux下基于q的雷达信息显示技术_第3页
linux下基于q的雷达信息显示技术_第4页
linux下基于q的雷达信息显示技术_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

linux下基于q的雷达信息显示技术

0linux下开发图形用户界面的常用工具雷达信息显示接口是雷达系统操作员的接口。鉴于Windows下图形用户界面(GUI)开发的便利性,目前雷达信息显示基本上都是在Windows操作系统下基于C++而开发的。但由于微软公司对Windows源代码的保留、军品对保密的需求以及外贸对知识产权的要求,目前,开放源代码的、免费的、具有自主版权的Linux操作系统越来越受到用户的欢迎。因此在Linux下进行雷达信息显示界面开发不仅是一种时尚,更是一种技术发展的需求。Linux下开发图形用户界面的主流工具主要有:GTK+,Kdevelop,Kylix以及Qt等。Qt由于自身的优势和特点,特别是Nokia对于Qt新版本的支持,使得Qt成为Linux下开发图形用户界面的常用工具。Qt是Trolltech公司的标志性产品,是Linux操作系统流行的KDE桌面环境的基础,具有如下特点:Qt是面向对象的C++开发包;具有signal-slot连接的事件驱动机制;Qt是一种源代码级跨平台的开发工具,一次编写,随处编译;Qt便于程序开发,提供QtDesigner工具开发界面。雷达信息显示一般包括点迹、航迹、雷达视频、矢量图形、背景地图、操作界面等信息。对于雷达视频显示,一般不采用软件方式绘制,而借助于硬件手段实现。若确需采用软件方式绘制,要达到实时显示的效果,则对硬件平台的性能有一定的要求,通常采用帧缓冲(FrameBuffer)的方法将视频直接写入显示内存。在本文中不考虑雷达视频显示。对于点迹、航迹等实时更新的信息显示,采用Qt图形化视图框架中GraphicsView/Item机制进行处理并将其绘制在图元层,而对于矢量图形、背景地图等无需频繁更新的信息,可以将其绘制在背景层或前景层。对于操作界面,可以利用QtDesigner进行设计并借助于stylesheet对其美化。1qt显示基本原则1.1图形化显示平台图形化视图框架包含视图、场景和图元三个组成部分。视图为用户定制的二维图元进行管理与交互提供一个平台,同时为图元的可视化提供视图窗口。场景为图元提供显示平台。图元是图形显示的单元,可以将基本图形如线、矩形、圆周等作为一个图元,也可以将多个基本图形组合成一个复杂图形作为一个图元。图形化视图框架采用事件传递机制从而可以与场景中的图元进行双浮点精度的交互。图形化视图采用二元空间分割(BSP)树方式提供图元快速搜索,因此可以使包含高达上百万个图元的大场景能够实时可视化。图形化视图提供一种基于图元的方式进行模型/视图编程。在设计中可以采用多个视图对同一个场景进行不同角度的观测。1.1.1不变形渲染功能场景类QGraphicsScene提供图形化视图框架的场景。场景具备如下功能:提供管理大量图元的快速接口;传递事件到每个图元;管理图元状态,包括选择状态和焦点状态;提供不变形渲染功能。场景充当QGraphicsItem对象的容器,可以通过调用QGraphicsScene::addItem()函数将图元添加至场景中。QGraphicsScene::items()和其重载函数可以获取鼠标选择范围内的图元。QGraphicsScene的事件传递机制编排场景事件传递到相应图元,并管理图元之间的事件传递。若在场景某位置捕获到鼠标按下事件,场景将该事件传递给该位置的图元。1.1.2多视角显示视图类QGraphicsView为场景中内容的可视化提供窗口,可以将多个视图关联到同一个场景,从而为同一个数据集提供多视角显示。视图为一个可滚动区域,在大场景导航时提供滚动条。为获取OpenGL支持,可以通过调用QGraphicsView::setViewport()将QGLWidget作为场景视图。视图捕获键盘输入、鼠标事件并在该事件发送到场景前将其转换为场景事件。1.1.3qg5.1qg改图元类QGraphicsItem是场景中所有图元类的基类。图形化视图框架提供几类基本形状的标准图元类,如矩形图元类(QGraphicsRectItem),椭圆图元类(QGraphicsEllipseItem)和文本图元类(QGraphicsTextItem)。若需有效利用QGraphicsItem图元类的特点,则用户需要定制图元以实现其功能特点。QGraphicsItem具有如下特征:支持鼠标按下、移动、释放、双击事件以及鼠标滑动、滚动和上下文菜单事件;支持键盘输入焦点和按键事件;支持拖放事件;支持组合功能,包括图元父子关系或采用QGraphicsItemGroup类;支持碰撞检测。1.2前景层qghashcs场景层分为图元层、前景层和背景层。图元层显示场景中所有图元,QGraphicsScene通过调用drawItems()函数将所有图元绘制于该层,该层在前景层之前背景层之后绘制。前景层显示场景中前景,QGraphicsScene通过调用drawForeground()函数将场景的前景绘制于该层,该层在所有图层中最后绘制。背景层显示场景背景信息,QGraphicsScene通过调用drawBackground()函数将场景的背景绘制于该层,该层在所有图层中最先绘制。在实际设计中,为节约系统资源,将频繁变化并需要实时更新的信息与固定或者不经常改变的信息分层显示。如将频繁变化并需要实时更新的信息作为图元处理并绘制于图元层,而将固定或者不经常改变的信息绘制于前景层或背景层。1.3生成环境文件QtDesigner是Trolltech公司为构建图形用户界面(GUI)而提供的一个工具。它允许用户在屏幕表格上设计并构造窗口和对话框。由QtDesigner设计的对话框可以使用Qt的signal-slot机制并提供预览功能。用QtDesigner设计的界面通常保存为扩展名.ui的文件。若需要在C++程序中使用*.ui文件,则需要通过调用uic(userinterfacecompiler)将*.ui文件转换为C++程序可用的头文件。若采用qmake命令编译程序工程文件,则自动调用uic生成头文件。在使用QtDesigner设计GUI时,可以使用样式表定制窗口或控件的外观。2图元层和背景层雷达信息显示主要考虑点迹、航迹、矢量图形、背景地图以及操作界面等信息显示。对于点迹、航迹,由于其信息实时更新,因此作为图元绘制在图元层;而对于矢量图形和背景地图等不经常改变的信息,绘制于前景层或背景层。同时为节约系统资源,一般需将视图类QGraphicsView的成员变量ViewportUpdateMode设置为SmartViewportUpdate,即只更新视图需要重绘的区域。2.1定制点迹操作对于点迹显示,从基类QGraphicsItem中派生一个用户定制的图元类QGraphicsPlotItem表示雷达点迹对象。用QGraphicsPlotItem成员变量表征点迹属性,用QGraphicsPlotItem成员函数定制点迹操作。每个点迹用一个QGraphicsPlotItem对象来表示,然后建立一个点迹链QPlotLink保存所有点迹信息。当收到一个新点迹时,在点迹链QPlotLink前插入一个QGraphicsPlotItem对象表示该点迹,并调用setPos()函数设置其场景位置,然后调用addItem()函数将QGraphicsPlotItem对象添加到场景中并在视图显示。若点迹小时,此时需要将QPlotLink链表中最后一个单元删除,并调用QGraphicsScene的函数removeItem()将该对象从场景中移除。2.2航迹历史点与航迹指引线航迹显示包括航迹当前点、历史点、标牌和指引线的显示。对于航迹当前点,从基类QGraphicsItem中派生一个用户定制的图元类QGraphicsTrackItem表示。用QGraphicsPlotItem成员变量表征航迹参数,设计QGraphicsTrackItem成员函数定制对航迹的操作。同时从QGraphicsItem中派生一个用户定制的图元类QGraphicsHtTrackItem来表示航迹历史点,从QGraphicsTextItem中派生一个用户定制的图元类QGraphicsLabelItem表示航迹标牌,从QGraphicsLineItem中派生一个用户定制的图元类QGraphicsDirLineItem来表示航迹指引线。由航迹历史点组成的航迹历史点链QHtTrackLink,以及航迹标牌QGraphicsLabelItem,航迹指引线QGraphicsDirLineItem均作为QGraphicsTrackItem的成员变量。场景中每个航迹用一个QGraphicsTrackItem图元对象来表示,然后建立一个航迹链QTrackLink保存所有航迹信息。当产生一个新航迹时,在航迹链QTrackLink前插入一个QGraphicsTrackItem对象来表示该航迹,并调用addItem()函数将QGraphicsTrackItem对象添加到场景中并在视图显示。若为已有航迹,则只需更新QTrackLink中相应图元对象的参数。若航迹消失,则需将QTrackLink中相应单元删除,同时调用QGraphicsScene的removeItem()函数将该对象从场景中移除。在航迹显示时需要注意航迹参数更新时航迹当前点与历史点参数的交换。2.3基于背景信息的信息2.3.1绘制复杂图形在雷达信息显示中,常需绘制刻度线辅助目标测量,如距离刻度线、方位刻度线,有时也需绘制具有特定功能的区域,如航迹起始区、上报区、干扰区等。Qt提供底层的绘图类QPainter,该类既可以绘制简单的直线,也可以绘制复杂的图形。如提供drawLine()函数绘制直线,drawPie()绘制扇形,drawText()绘制文本,drawPath()绘制复杂图形。对于距离刻度线,通过调用drawLine()即可实现,对于方位刻度线,在P显时可以调用drawEllipse()函数绘制圆形。对于航迹起始区、干扰区等用户绘制图形,简单规则图形可以调用QPainter标准绘制函数,复杂图形先构造QPainterPath对象后调用drawPath()函数实现。矢量图形既可以绘制在前景层,也可以绘制在背景层。2.3.2ggad/ogr及g背景地图显示关键在于地图数据的解译。如果掌握一个地图数据文件的格式,可以通过将地图数据转换成为由直线、折线、地标、文本等基本元素组成的链表,然后采用动态加载、分层显示的方式,通过如2.3.1节所 述的绘制方式绘制并显示背景地图。GDAL/OGR库是开源GIS领域最为著名的代码库之一,以强大的数据格式支持和处理能力著称,并对于其所支持的各类数据格式提供一个统一的数据抽象模型作为编程接口。OGR提供对矢量数据格式的读写支持,所支持文件格式包括ESRIShapefiles,S-57,Mapinfomid/mif以及MapinfoTAB等。文献研究了采用GDAL/OGR库进行雷达终端显示系统图形开发的方法。2.4息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论