2024年3月30日发(作者:阿尔法罗密欧修不起)

龙源期刊网

基于QT的嵌入式Linux智能加油站信息发

布系统的设计与实现

作者:陶文寅 陈强 刘正

来源:《软件导刊》2012年第10期

摘要:在国内外油价跌宕起伏的大环境下,利用嵌入式软件开发技术能够实时地掌握各加

油站的信息进行研究,对帮助人们在这个信息异常丰富的时代快速有效地获取有用信息起到重

要的意义。为各加油站如何提高各自的运营效率以及经济利益提供了一种解决问题的思路。

关键词:Linux;嵌入式;QT;信息发布;智能加油站

中图分类号:TP319文献标识码:A文章编号:1672-7800(2012)010-0089-03

基金项目:苏州工业园区服务外包职业学院重点课题(ky-xjz101)

作者简介:陶文寅(1986-),男,硕士,苏州工业园区服务外包职业学院信息技术系工

程师,研究方向为嵌入式系统开发。

0引言

本系统利用部署在加油站进口和出口的红外传感器记录该加油站当前车辆的等待数量,并

通过油站管理员的操作和GPS模块记录下当前加油站各种汽油的价格和该加油站的地理位

置,最终把这些信息进过特殊的组合与拼接,发送至服务器为后续的应用厂商提供数据支持。

下面就对本系统的设计与实现进行详细的阐述。

1加油站终端的环境配置

本系统的硬件架构采用三星公司基于ARM11内核的S3C6410X作为核心芯片,同时配备

一个128MB的NANDFlash和2个USB接口用于帮助存储操作系统和数据,以及连接无线网

卡,另外还配有2个E18-D50NK红外传感器,用于响应加油站车辆数目的修改,如图1。此

外,基于此硬件的操作系统采用嵌入式Linux2.6.21操作系统,文件系统使用适用于NandFlash

的Cramfs+Yaffs2,因此,本设计的主要工作是在此硬件架构上利用QT完成整个系统的设

计,本节主要介绍QT/Embedded是如何移植到本系统中。

1.1QT/Embedded简介

QT是由挪威Trolltech公司开发的一款跨平台的图形库,通过QT开发的应用程序特点是

可以移植到任意的平台上,不论是Windows、Linux,甚至Mac都只需要重新编译即可使用,

而不需要修改任何代码。而QT/Embedded是QT的嵌入式版本,它拥有和QT完全一样的

龙源期刊网

API,开发人员只需要在PC上完成大部分开发和调试工作后,重新编译为嵌入版本即可在嵌

入式设备中展现出和PC上完全一样的效果。

1.2QT/Embedded的移植

本系统采用触摸屏的方式进行交互,因此,在移植QT/Embedded之前需要先编译触摸屏

的库文件,使后续的QT/Embedded能够支持触摸屏设备,本系统的触摸屏库采用tslib-

,当编译完成后会在指定的安装目录下生成lib、bin以及etc3个文件夹。

当编译完触摸屏后,接下来就是移植QT/Embedded到嵌入式终端上,QT的移植采用

QT/Embedded源码中提供的Configure工具,该工具能够帮助我们配置出适合当前硬件的图形

库。Configure的参数有很多,-qt-mouse-tslib参数制定了本系统支持的触摸屏设备,在配置完

成后,通过make和makeinstall即可编译和安装。

在QT/Embedded安装完成后,就可以把前面触摸屏编译出的文件全部拷贝到QT的对应目

录中,最后通过NFS目录把修图形库复制到嵌入式终端并配置环境变量就完成了移植。

2加油站终端的系统设计

本系统设计的目的主要有两点:第一,当油站管理员修改油价信息时可以实时发送至服务

器;第二,当有汽车进入和离开加油站时,系统会自动为当前汽车数量增加或者减少,使用用

例图来描述这一问题,如图2。从中可以看出本系统共分为3个模块:

(1)加油站的信息模块。供顾客在加油站时查看各种油价的信息,以及油站管理员修改

油价。

(2)加油站的车辆计数模块。实时响应车辆进出,并把结果通过计算得到当前加油站的

车辆等待数目,并反映在油价信息模块上。

(3)加油站信息发送模块。该模块是本系统的核心模块,利用本模块可以把加油站信息

中的当前油价,以及当前车辆的等待数这些数据打包,然后通过网络发送至服务器,供后端的

应用程序使用。

通过对图2的分析可知,用户所有的操作都是在信息模块上进行操作,同时通过多线程技

术完成与服务器的实时沟通和实时响应车辆数目的变化。最终本系统类图设计如图3。

其中,最为重要的类有5个,说明如下:

(1)CMyPlanGUI。加油站终端的核心,在该类中通过CPostThread线程类完成加油站信

息的发送,此外,通过CXmlAnalysis类完成对加油站数据的读取和保存,最后通过CInfoCar

类来响应车辆进出加油站时的车辆数目。

龙源期刊网

(2)CXmlAnalysis。在本系统中,由于数据量并不是很大,因此,设计时把所有的数据

保存在一个XML档案里面,通过封装QT提供的XML解析库形成一个新的CXmlAnalysis类

来完成对加油站信息和各种油价及对应时间的保存。

(3)CInfoCar。加油站的车辆统计信息栏,通过从QT提供的QWidget派生出一个自定

义控件,在该控件中利用CHALLThread线程完成对加油站进出车辆的统计。

(4)CPostThread。信息发送的线程类,在该类中通过一个定时器保证系统定时调用Http

协议中的Post方法把当前加油站的油价信息和车辆数发送至服务器。

(5)CInfoBar。加油站的油价信息栏,通过从QT提供的QWidget派生产生出一个自定

义控件,加油站的管理者可以利用该控件对油价进行修改,当修改完成后通过调用

CXmlAnalysis类把油价信息保存在XML档案中,为后续的油价走势系统提供良好的数据支

持。

3加油站终端的系统实现

本系统在具体实现时考虑到在实际应用中为防止普通用户随意地修改油价,因此,在系统

第一次启动时需要由加油站的管理人员进行密码注册,只有注册成功后才能进入系统界面并且

定时发送油站信息给服务器,否则始终保持在注册页面上,直到密码注册成功。下面将详细介

绍具体的实现过程。

3.1主界面的实现

在系统启动后首先进行注册信息的判断,只有当注册信息完整后才会真正的进入系统界

面,否则,会进入系统注册页面,当配置完成后再进入系统界面,如图4。

3.2加油站数据读取和保存的实现

本系统的数据全部保存在一个XML文档中,当加油站管理员修改油价后,系统会自动把

油价数据和修改日期保存在修改数据文件中,为数据走势图的显示提供完整的数据支持,因

此,对于数据的读写就可以简化为对XML文件的操作,而QT已经为我们提供一套完整的

XML的读写类,所以,本设计的目的就是封装一个适合本系统的加油站数据读写的类。

为实现这一目的,本设计采用由万维网协会所开发的XML文档标准应用程序编程接口,

即DOM树。采用这种方式可以在内存中把XML看成一棵树,然后通过操作对应的节点来修

改我们的数据,所以在二次分装QT提供的DOM类时主要定义了7个重要函数,分别为:

①openFile():用于打开文件,并且把整个DOM树放到QDomDocument类型的对象用,为

今后的操作做准备;②readFile():读取XML文件,并开始分析其中的节点;③saveFile

():当得到最终DOM后,通过QT提供的文本流QTextStream把新的数据重新写入,并覆

盖原文件;④parseStationindexElement():分析xml文件的起始节点,当找到节点entry时,

龙源期刊网

表示将要进入数据区域;⑤parseEntryElement():进入数据区域后,判断各个节点,是否为

所需要的汽油类型,如果和需求保持一致,那么则进入下一层,并得到最终的数据;

⑥parseTypeElement():当parseEntryElement验证成功后,通过该函数可以得到一个完整的

数据序列,其中包括油价数据和时间信息;⑦insertNode():当数据文件中的数据不满足数

据上限时,系统会调用该函数进行数据的插入,而当已经达到数据上限时只对数据进行修改。

3.3实时汽车统计的实现

CInfoCar类的功能主要是提供实时加油站当前等待车辆数的提示,该类最重要的是持有

CHALLThread这个线程类,在该线程类中提供一个While循环通过外接的红外传感器来侦测

当前加油站是否有车辆数的改变。

3.4加油站数据发送的实现

在本系统中加油站数据每隔10s中会发送至服务器,为实现这一功能本设计采用的是QT

提供的QNetworkAccessManager类,在该类中通过内建的post方法把所需要的数据提供给服

务器。当使用QNetworkAccessManager的Post方法时需要提供两个参数:一个是

httpRequest,其中主要存放的是服务器的地址,以及post的头信息;第二个参数就是所需要发

送的数据,并且在发送数据之前需要把这些数据通过toAscii方法转化为Byte格式才能进行传

输,该实现的流程如图5。

4试验结构及分析

通过以上设计原理的实现,以5组测试用例为例进行分析,测试的结果见表1。

通过以上测试结果分析,说明本设计能够正常统计车辆数目的变化,并且可以准确地将信

息发送给服务器端,能较好地实现本项目的预期功能。

参考文献:

[1]宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出版社,2012.

[2]JASMINBLANCHETTE,MARKSUMMERFIELD.C++GUIQt4编程[M].第2版.北京:电

子工业出版社,2011.

[3]ERICFREEMAN,rst设计模式:中文版[M].北京:中国

电力出版社,2007.

[4]赵炯.Linux内核完全剖析——基于Linux0.12内核[M].北京:机械工业出版社,2009.

[5]孙琼.嵌入式Linux应用程序开发详解[M].北京:清华大学出版社,2006.

龙源期刊网

(责任编辑:余晓)

更多推荐

系统,数据,信息,提供,车辆,油价,进行