微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于嵌入式Linux与QT的汽车虚拟仪表设计

基于嵌入式Linux与QT的汽车虚拟仪表设计

时间:10-19 来源:互联网 点击:

屏库,为虚拟仪表系统添加触摸屏支持;在Fedora13系统中安装QT Creator软件,用于完成虚拟仪表系统应用程序的开发;移植嵌入式设备的系统引导程序U-boot;编写硬件平台相关驱动,然后裁剪编译Linux2.6.10内核并在其中加载已编译的相关驱动;制作硬件平台需要的根文件系统,在其中移植已配置、编译过的tslib库和QT/Embedded库。

3.2 应用程序开发

本虚拟仪表系统的的应用程序基于QT/Embedded平台,使用QT的轻量级集成开发环境QT Creator完成开发,最后在已搭建的开发环境中编译生成可执行二进制文件,并将其移植到硬件平台中的文件系统中进行测试。

虚拟仪表系统应用程序的主要工作流程如图4所示,在系统上电后,应用程序开始运行,要实现汽车虚拟仪表系统的功能,应用程序需要完成虚拟仪表面板和后台处理程序的开发:

  图4 系统软件工作流程图

3.2.1 虚拟仪表面板的绘制

虚拟仪表面板主要将汽车的一些基本状态在LCD上通过表盘和数字直观、动态的显示出来,本设计中采用速度、油量、电池电量、时间日期、安全带、安全气囊、行驶里程等状态。

为了提高本虚拟仪表的可扩展性和可维护性,在本设计中,为每种具体的虚拟仪表对象定义一个抽象类。

下面即以仪表盘类(QMeter)为例介绍本系统中虚拟仪器面板的绘制。

在需要显示的各种状态中,速度和油量通常以仪表盘形式显示,虚拟仪表模块中的虚拟仪表盘采用QT的二维图形引擎的基础类QPainter开发。QPainter具有丰富的图形图像绘制函数,并支持反走样、渐变填充、像素混合、线性变换等特性,利用这些函数完成仪表盘的绘制。

QMeter类的定义如下:

3.2.2 后台处理程序

后台处理程序主要将系统下层采集的数据进行分析处理,将有用的数据传送至虚拟仪表面板显示,实现虚拟仪表的动态显示,同时以多线程的方式不断检测汽车各项状态,当某项状态出现异常或存在危险时驱动LCD和语音芯片向驾驶员报警,其中异常状态有超速、存油量过低、电池电量过低等。下面以报警子程序为例讲解后台处理子程序。

报警子程序在后台处理程序中新建一个线程,通过多线程的方式以轮询的方式查询各个传感器的状态,当发现某个状态存在危险时,驱动语音芯片发出相应的报警信息。其定义如下:

QT特有的信号与槽(signal/slots)机制实现方式如下:

通过调用QObject对象的connect函数,将报警线程的sendData信号与主线程的槽函数Deal()关联,当报警侦听线程发射信号时,主线程槽函数及时被调用,驱动报警。

4 应用程序示例

将裁剪、编译过的内核与制作的带QT库的文件系统烧写到开发板。在开发环境内交叉编译编写的应用程序,得到可执行二进制文件,将此文件移植到开发板,即可实现应用程序的发布。重新开机,运行应用程序即显示虚拟仪表界面,如图5所示。

  图5 基于嵌入式Linux与QT的汽车虚拟仪表主界面

通过汽车上的各种传感器采集数据,通过控制器和高速CAN总线传送到S3C6410硬件平台解析,应用程序得到解析后的数据后,即可动态的显示当前车辆的各种状态及报警情况。

5 结 语

本文设计的汽车虚拟仪表,具有优良的跨平台性能;该设计方案使得仪表信息量增大,操作简单,易于维护,界面友好;采用开放源码设计,使得本系统开发成本降低;使用双缓冲技术消除了仪表显示页面的闪烁;采用多线程技术,使处理、显示与报警同时进行,提高了系统的实时性与灵敏度;将具体的虚拟仪表对象定义为抽象类,增强了虚拟仪表的扩展性。经实验测试,本虚拟仪表系统的所有功能模块均能正常运行,该系统的应用将对降低汽车的成本,缩短汽车仪表系统的研发周期,提供高友好度的人机界面具有重要的意义。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top