基于Linux Qt的列车显示器表盘控件设计与实现

来源 :内燃机与配件 | 被引量 : 0次 | 上传用户:TIGERKING2009
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:为提高开发效率,降低列车显示器软件开发成本,本文设计了一种基于Linux Qt平台的显示器表盘控件。在Qt4开发环境下,通过继承QWidget类,将QLinearGradient类、QPainter类、QLabel类等结合,经过坐标变换及旋转函数,重新实现paintEvent函数,实现此表盘控件。经过实际项目验证,该控件类设计友好、个性化程度较高,丰富了传统列车显示界面。
  Abstract: In order to improve the development efficiency and reduce the development cost of train display software, this paper designs a display dial control based on Linux Qt platform. In the Qt4 development environment, the QWidget class is inherited to combine the QLinearGradient class, QPainter class, QLabel class, etc. After coordinate transformation and rotation function, the paintEvent function is re-implemented to realize the dial control. Through the actual project verification, the control class is friendly in design, highly personalized, and enriches the traditional train display interface.
  关键词:Qt框架;表盘控件类;C++;Linux系统;人机界面
  0  引言
  列车人机界面(Human Machine Interface,HMI)在列车运行过程中向司机及维护人员提供列车的运行信息、列车各系统设备状态信息及故障信息等,是列車网络控制及监控系统的重要组成部分[1]。伴随着信息技术的飞速发展及轨道交通设备性能的提升,带有触摸屏控制的显示器逐步取代了传统的仪表显示方式,其种类及功能也变得更加多样化和丰富,操作上的方便灵活、显示直观的优势日益凸显。
  HMI系统以微机技术为核心,与数据处理技术、GUI等技术相结合,软件开发复杂,专用性强,扩展性不强。本文设计的一种基于Linux Qt平台的显示器表盘控件,以嵌入式Linux内核2.6.x系统为软件平台,在此基础上采用开源图形界面库Qt4.8.5、开发工具QtCreator2.8.0开发HMI界面控件类。该表盘控件类、引用方便,可靠性高、使显示器界面程序开发模块化,降低了系统开发复杂度及开发成本。
  1  Qt框架介绍
  Qt框架结构如图1所示。
   1.1 GUI库
  Qt本身是一个跨平台的C++图形用户界面库,为诺基亚旗下的编程语言工具[2]。随着用户的增加及发展,已经成为一种独立的软件开发平台,包括Qt、基于Frame—Buffer的Qtopia Core、快速开发工具Qt Designer和国际化工具Qt Linguist等部分。Qt支持的系统有:Unix系统、Linux系统、WinNT/Win2k、Windows 95/98、Mac OS等平台。Qt的C++类库同Windows平台上的MFC、OWL、VCL是同类型的。但Qt还具有下列优点:
  ①支持跨平台运行。
  Qt支持下列操作系统:Windows NT、Linux、Unix、Mac OS、HP—UX、FreeBSD等。
  ②丰富的API。
  Qt包括多达250个以上的C++类,还提供了基于模板的collections、serialization、file、device、di—rectory management和date/time类,甚至还包括正则表达式的处理功能。
  ③面向对象的程序设计。
  Qt具有良好封装机制,这使得Qt的模块化程度非常高,可重用性好,对于用户开发方便、快捷。Qt使用一种信号/槽一(signals/slots)的机制,使得各个对象之间的协同工作变得十分简单。
  ④支持2D/3D图形渲染,支持OpenGL。
  ⑤大量的开发文档。
  1.2 Qt的信号槽机制
  嵌入式Linux操作系统沿袭了Unix系统的架构,具有成熟、可靠、稳定等特点;Linux是开源的操作系统,因此任何系统的设计者均可以根据实际需求对其进行二次开发,只保留相关操作系统功能,同时可根据实际应用的需要优化操作系统的代码,体系结构灵活,易于裁剪,免费使用等特点,使其成为嵌入式系统开发的重要工具[3]。
  创建自定义的窗口部件方法有:
  对一个已经存在的Qt窗口部件进行子类化;
  将QWidget类与现有窗口部件类进行组合,重新实现虚函数;
  子类化QWidget,并且通过重新实现一些用来绘制窗口部件及响应鼠标点击的事件处理器;
  由于Qt未提供表盘控件类,且无法通过Qt提供的控件组合实现,因此只能采用第三种方法即直接对QWidget进行子类化,然后通过QPainter在QWidget窗口部件上进行绘制此表盘控件,同时添加部件响应事件。另外,将自绘制好的表盘控件集成到Qt设计师中,这样就可以像使用内置的Qt窗口部件一样来使用了。
  通过此种方法创建的表盘控件可实现跨平台。   Qt的二维图形引擎是基于QPainter类。QPainter既可以绘制几何性状如点、线、矩形、椭圆、弧形、弦形、饼形等,也可以绘制像素映射、图像和文字。此外,QPainter还支持高级特性如反走样、像素混合、渐变填充、矢量路径等。
  QPainter可以在“绘图设备”上进行画图,如QWidget、QPixmap、QImage等。通过重新实现QWidget::paintEvent()函数,即可在窗口部件上随心所欲的控制所要绘制的部件的外观、形状等。
  1.3 坐标系介绍
  Qt中每一个窗口都有一个坐标系,默认窗口左上角为坐标原点,然后水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小。原点即为(0,0)点,然后以像素为单位增减。
  1.3.1 坐标系变换
  坐标系变换是利用变换矩阵来进行的,可以利用QTransform类来设置变换矩阵,因为一般不需要进行更改,所以这里就不再涉及。下面只是对坐标系的平移、缩放、旋转、扭曲等函数进行介绍。
  利用函数void QPainter::translate(qreal dx,qreal dy)实现平移。
  利用函数void QPainter::scale(qreal sx,qreal sy)实现缩放。
  利用函数void QPainter::rotate(qreal angle)实现旋转。
  1.3.2 坐标系统的保护
  平移函数、旋转函数已经将坐标系进行了变换,所以需要将变换的坐标系再恢复,要用到两个函数:
  Void QPainter::save() 保存坐标系现在的状态;
  Void QPainter::restore() 恢复以前的坐标系。
  可以利用save()函数保存坐标系现在的状态,然后进行变换操作,操作完之后,再用restore ()将以前的坐标系状态进行恢复,其实是一个入栈和出栈的操作。
  2  表盘控件类的设计与实现
  本设计将QWidget作为父对象,定义了用于有关表盘属性的相关变量如下:
  2.1 表盘头文件(adwidget.h)介绍
  头文件中需要加载如图2所示的类:
  在ADWidget类中使用Q_PROPERTY()宏声明了自定义属性:
  arcLineColor,每个属性都有一个数据类型、一个“读”函数和一个作为可选项的“写”函数。
  在Qt Designer工具中使用窗口部件时,在属性编辑器里的QWidget属性下会显示这些自定义的属性。这些属性可以是有QVariant所支持的任何类型。
  ADWidget.h包含其私有函数和私有变量。这些私有变量保存这“写”属性的值。颜色数据保存在私有变量中,可以通过setArcLineColor()和arcLineColor()函数对它们进行访问。
  2.2 表盘控件类的构造函数和类方法
  类的方法在ADWidget.h的文件中定义,ADWidget.cpp文件中实现其所有方法的定义。
  2.2.1 构造函数
  构造函数中初始化所有私有变量及赋初值。并定义QPainter的对象,设置其相关属性;定义画表盘的刻度的画笔并设置画笔的颜色、粗细等属性;同时定义设置画表盘指针相关属性和坐标,设置指针的颜色。
  2.2.2 重载paintEvent函数
  当表盘窗口发生变化或模拟量数值发生变化时,自动调用此函数重新实现画线、等相关操作。在paintEvent函数中调用QPainter的对象函数实现画线、画弧、画数字等操作。
  在设定的区域矩形区域内画圆弧,圆弧半径为m_circleRadius(default:140),以(150,150)为中心点画;
  painter.rotate(a);是以给定的角度(正 顺时针/ 负 逆时针)旋转坐标系;通过调用painter.save(),将坐标系进行保存;调用painter.restore()恢复之前的坐标系;
  计算-135°位置处的坐标起始点,根据角度关系,算出刻度的坐标终点;通過旋转可获得所有刻度。
  表盘的指针从-180°处计算,根据指针定义大小,确定指针起始坐标及中间坐标点,如图3所示。
  3  表盘实现效果
  表盘类在main函数定义对象,并运行后实现的效果如图4所示。
  4  结论
  本文设计了一种基于Linux Qt开发工具的列车表盘控件,此控件能够满足数据显示的需要,尤其是车辆速度的显示。此控件继承了Qt框架提供的QWidgt类,利用 QLinearGradient类、QPainter类、QLabel等类,通过坐标变换函数及旋转函数,实现指针的旋转操作;通过重新实载paintEvent函数,实现控件的实时显示。同时,可将此控件集成到QDesigner工具中,丰富了原有控件库。经过实际项目验证,该控件类设计友好、个性化程度较高,能满足客户需求。
  参考文献:
  [1]闫锋欣,曾泉人,张志强译.Jasmin Blanchette, Mark Summe
  dield.C++GUI Qt4编程(第2版)[M].北京:电子工业出版社,201l:2-4.
  [2]彭均键,史步海,刘洋.基于Qt的嵌入式GUI开发平台的搭建[J].微型电脑应用2010,26(02):1-3.
  [3]陈孝文,陈蜀宇,马同杰.基于Linux的嵌入式图形用户界面的研究与应用[J].计算机系统应用[J].2009:1-2.
其他文献
摘要:近年来,随着我国社会发展进程逐步加快,国内科学技术得到了良好发展契机,这也为特种设备物联网技术的发展提供良好环境。特种设备在现代人们生产生活中扮演着重要角色,特种设备运行的安全性对于人们生活水平以及稳定社会的构建都具有重大影响,随着社会对特种设备重视程度的逐步提升,对于现阶段特种设备检验检测技术的要求也日益提升。因此,务必要对特种设备检验检测技术予以高度重视,加大对这一领域新技术、新手段的研
期刊
摘要:在社会经济持续快速发展的今天,职业院校在快速发展的过程中,应该充分全面的明确自身的人才培养定位,积极为社会岗位输送高质量的应用型人才。在人才培养的实践过程中,职业院校有必要充分全面的整合社会优势资源,积极实现科学的人才共育模式。新能源汽车技术专业本身就是紧密贴合社会发展的时髦专业,对专业学生实践素养的要求非常高。在教学实践中,职业院校应该高效推动校企合作的开展,依托于“1+3”的人才培养模式
期刊
摘要:本文以船舶内燃机专业的《机械制图》课程为例,在分析对比传统教学不足之处的基础上,论述了在当前的“互联网+教育”背景下,基于超星学习通软件的专业学习平台的在线开放课程的开发过程、线上线下混合式教学授课实践应用和对应的混合式教学取得的教学效果评价,为进一步完善在线课程的建设和线上线下混合教学模式的改革提供了实践和探索。  关键词:学习通;机械制图;改革   中图分类号:G712
期刊
摘要:现代汽车结构复杂,往往涉及机械、电子、控制等多个领域,导致汽车发生故障的原因繁多而且不易确定。本文基于FTA的原理,并以迈腾B8制动灯控制系统为例,将汽车故障与导致故障发生的原因进行分析、分类、归纳总结,并由此制定出故障的诊断流程(故障树),证明了FTA有利于归纳与继承诊断知识,能提高汽车故障诊断的工作效率。  关键词:故障树;FTA;汽车故障诊断   中图分类号:TP24
期刊
摘要:为实现油底壳轻量化,本文设计了一款质轻、低成本的油底壳。首先通过Pro/E对油底壳进行有限元建模,再利用Abaqus对油底壳模型进行飞石冲击分析,根据飞石冲击分析结果,提出增加加强筋高度的优化方案。优化后的油底壳结构满足飞石冲击测试要求,且相比冲压钢板油底壳,本文设计的油底壳整体质量减轻59%,实现了轻量化设计。  Abstract: In order to realize the ligh
期刊
摘要:通过试验得到45Cr9Si3材料回火温度和硬度对应曲线,通过排气阀温度场试验,可以确定排气阀在实际工作中的最高温度以及排气阀各部分工作温度分布情况。为制造排气阀选用正确材料和排气阀的研发、设计提供数据参考。  Abstract: In this study, 45Cr9Si3 valve steel samples were first quenched and then tempered
期刊
摘要:《节能与新能源汽车路线图2.0》发布,国家鼓励节能车大力发展。串联混动HEV具有油耗低、结构简单等优点。本文以公司开发的某后驱串联混动HEV样车为基础,对动力系统进行了参数选型,对WLTC工况下汽车的整车性能进行了仿真分析,并与燃油版进行了对比。结果表明:该串联混动HEV动力系统参数选型合理,满足设定的整车性能目标,与燃油版车型的对比中油耗优势明显。  Abstract: Energy sa
期刊
摘要:随着非道路移动工程机械发动机机功率的不断增加,为满足柴油机的动力性和经济性指标,对增压空的气冷却提出了越来越高的设计要求。本文通过场地试验的方法对比研究了水冷中冷器与空冷中冷器对某款装载机柴油机工作特性的影响。试验结果表明,水冷中冷器相比于传统的风冷中冷器能更有效的降低柴油发动机的进气温度:水冷中冷器在铲装作业和高速跑工况下增压空气平均出温分别比空冷中冷器低27.6%和10.5%,柴油机扭矩
期刊
摘要:分析了精确控制天然气发动机过量空气系数控制策略,进行了过量空气系数对发动机经济性、动力性和排放性影响的试验,标定出发动机理想过量空气系数控制Map。对开、闭环进行了对比试验,试验结果表明,闭环控制精度和稳定性优于开环控制;过量空气系数对于发动机经济性的影响非常明显,经济性最好时的过量空气系数大于NOx排放量最大时对应的过量空气系数,HC排放随着过量空气系数增大而增大。通过优化,该发动机综合性
期刊
摘要:探索放电电压对经液相等离子体电解渗氮(Plasma electrolytic nitriding,PEN)技术对处理过的活塞环改性层硬度和摩擦学性能的影响,测定经不同放电电压处理的PEN活塞环渗层微观硬度。研究表明:通过提高处理电压可以获得更好的处理效果,但是工作电压过高易导致活塞环表面粗糙度过大,使摩擦副的磨损率升高;工作电压过低会造成摩擦副的磨损率因PEN活塞环改性层的表面硬度降低而升高
期刊