首页 > 范文大全 > 正文

基于LinuxQt的地铁人机界面的设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于LinuxQt的地铁人机界面的设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘 要】设计一种基于Linux Qt平台的国内某型地铁人机界面方案,综合考虑列车运行的环境,系统采用性能优越的X86架构作为硬件平台、稳定性强的Linux系统作为软件平台,在此基础上利用开源的图形界面库Qt开发界面程序。通过在硬件平台上的实际应用,验证了方案的可靠性与稳定性。

【关键词】人机界面,Qt,x86架构,Linux系统

一、引言

车辆人机界面(Human Machine Interface,HMI)是列车网络控制与监控系统的一个重要组成部分,是列车驾驶员和维护人员操作列车的窗口。它不同于传统司机室以模拟仪表和指示灯为主的显示方式[1],这种基于平板显示器和微机结合构成的智能终端,具有信息显示、参数设定、功能测试和数据转存等功能,它为驾驶人员实现对车辆各子系统状态的实时监测与控制,提供了一个更加友好、简洁、标准化的界面。

基于上述原因,本文提出了一种城市地铁车辆的人机界面设计方案,方案采用Intel X86处理器作为硬件平台,以嵌入式Linux系统作为软件平台,在此基础上采用开源的图形界面库Qt开发HMI应用程序。通过在硬件平台上的实际应用,验证了方案的可靠性与稳定性。

二、系统方案

(一)硬件平台的选择

当下的硬件平台主要有x86架构和ARM架构两种选择。ARM架构的硬件平台相较于x86架构,具有功耗低的特点,但在硬件资源方面,x86架构具有明显的优势[2],列车对功耗的要求并不像手机等移动设备那么苛刻,反而在人机界面的性能方面要求比较高,因此X86架构的硬件平台更适合做车载人机界面的开发。另外,行车过程中复杂的电磁环境和强烈的机械振动,要求显示器硬件有很好的电磁兼容性和抗振能力,有比较大的存储能力。综合上述因素,选择了基于Intel X86平台的PIXY INC90系列显示屏作为硬件平台。

(二)软件平台的选择

Linux操作系统完全沿袭了Unix系统的架构,在网络通信方面的效率和功能都很突出[3];Linux是开源的操作系统,设计者可以根据自己的开发需求在此系统上进行二次开发,且免费使用;列车人机界面可使用的硬件资源相对较少并且要求上电时间短,综合上述因素此处操作系统选择了嵌人式Linux。

(三)编程语言的选择

Qt是一个跨平台的C++图形用户界面库,由挪威TroUTeeh公司出品,它支持绝大部分类Unix系统和Windows平台,拥有良好的跨平台特性[4]。Qt/Embedded Linux,为嵌入式系统的开发人员搭建了一套完善的窗口系统和开发平台。 Qt还提供了一种称为signal/slot(信号/槽)的机制替代了一般Gui库中所使用的回调函数机制。

三、开发环境搭建

硬件平台选择PIXY INC-90显示器,显示器搭载Linux操作系统,以Oracle VM VirtualBox和Qt creater作为软件仿真、编译和开发平台,开发的应用程序经过交叉编译生成可执行文件后,通过Win Scp软件导入显示器,再用SSH服务软件远程控制显示屏,执行目标程序[5]。

四、人机界面设计

(一)设计流程

控制电源DC110V接通后,两个司机室的HMI同时开启。激活端司机室的HMI正常显示,非激活端司机室的HMI显示黑屏,主显示界面根据用户操作需求分为运行模式与检修模式,运行模式主要面对司机,检修模式主要面对检修技术人员,运行模式切换至检修模式需输入密码。设计流程如图1所示。

(二) 界面绘制实现

总程序采取顺序执行的方式,在参数初始化之前,首先执行MVB通讯模块、亮度传感器检测,以及判断串口配置文件是否读取成功程序,若成功,则进行参数初始化,若失败,则弹出故障提示界面,提示驾驶员或维护人员按故障提示进行操作。部分检测程序代码如下:

if (engine->init(0x12, 5) != PIXYMVB_OK) //判断MVB通讯模块是否正常

{ FaultReason = 1; //故障原因为1

showFaultHintScreen(JudgeFaultReason); //失败,根据故障原因,显示故障提示界面

}

QFileInfo fileInfo(“/dev/ttyUSB_SC”); //读取显示器亮度硬件配置文件

if (!fileInfo.exists()) //判断硬件是否存在

{ FaultReason =2; //故障原因为2

showFaultHintScreen(JudgeFaultReason); //失败,显示故障提示界面

}

图1 设计流程图

1.信号/槽(signal/slot)机制

本文提出的人机界面设计方案采用多级界面呈现的形式,界面之间的切换通过信号/槽机制实现,切换功能实现部分代码如下:

Class QPushButton; //定义按键类

QPushButton* Button; //声明一个按键指针

Button C>setGeometry(x,y,width,height); //定义按键的坐标、长宽参数

Button->setText(QString); //设置按键显示文本

Private signals:

Void SwitchScreen(); //声明切换界面的信号

Private slots:

Void JumpToTargetScreen(); //声明跳转槽函数