首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Linux与QT的汽车虚拟仪表 03

Linux与QT的汽车虚拟仪表 03

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()关联,当报警侦听线程发射信号时,主线程槽函数及时被调用,驱动报警。
返回列表