基于Linux操作系统的网络应用软件开发(共24页).docx
精选优质文档-倾情为你奉上封 面基于Linux操作系统的网络应用软件开发专心-专注-专业目录摘要数据采集系统被广泛应用于大型关键设备的运行状态监测。随着工业化的发展,大型关键设备的的地理分布更加分散,其运行状态监测更加困难,因而迫切需要基于无线互连网技术的远程数据采集系统。为此,论文基于嵌入式Linux平台对无线远程数据采集系统软件进行了设计,并在软件设计的过程中提出了一些数据采集系统的软件设计方法及框架。论文首先分析了无线远程数据采集系统的结构,并提出了无线远程数据采集系统软件设计的总体方案;然后,按照总体方案的要求,完成了嵌入式Linux无线远程数据采集终端操作系统层的软件设计。论文试探了一种嵌入式Linux系统级软件开发的通用方法。完成了对嵌入式Linux无线远程数据采集终端以及上位机应用软件的设计,该软件完成了无线远程数据采集系统应当具备的基本功能,并兼顾了软件的通用性,为无线远程数据采集系统的应用软件开发提供了一种设计模型。关键词:嵌入式;Linux;ARA9;数据采集系统;CPRS.一 绪论(一)课题研究背景 近几年我国工业的迅速发展对工业设备运行状况的监控提出了更高的要求。监控系统不仅需要运行于工况良好的环境下,更要对距离较远,运行环境恶劣,数据采集点较为分散以及无人值守的设备进行监控,如对风电,水利等领域的设备进行监控。 采用传统的方式对这些情况下设备运行状况进行监控,会导致人力及物力资源的极大消耗,并且很难取得好的效果。针对上述情况,目前国内外主要采用嵌入式系统结合无线通信的方式来构建无线远程数据采集系统1。这使得监测点只要在无线网络所能覆盖的范围之内,都可以实现数据的采集与传输。过去在无线数据采集方面采用的通信方式主要有广域网,无线电台,无线集群,GSM短信等,这些通信技术成熟,但也存在着一定的局限性。而目前采用的较新的无线通信方式包括CDMA, GPRS以及WIFI等,这些通信方式具有优良的数据传输速率,价格适中,已快速取代了传统的无线数据采集所采用的通信手段。 另外,除了基于某一种无线通信方式的数据采集系统外,随着嵌入式及物联网技术的不断发展,逐步出现了更加复杂的数据采集网络,在这种数据采集网络中,混合了广域网,GPRS, WIFI等多种通信方式,以实现数据的远程高速传输。在实际应用中,位于数据采集网络中的各数据采集终端利用最适宜其工况的通信方式接入Internet,并将数据上传给服务器,同时接受服务器的控制2。 本文围绕无线远程监测系统的软件设计而展开,试图找到能够满足多种通信方式的通用软件设计方法并搭建较为通用的软件平台,以满足多种具体应用环境的需要。二 系统总体方案设计 为了方便进行软件设计,首先应当从用户的角度分析软件所要具备的功能,从宏观上给出软件的整体架构,这样才能保证软件设计工作有序进行,同时可以方便对软件进行维护和升级。(一)系统硬件组成本文的嵌入式Linux无线远程数据采集系统硬件结构如图2-1所示。图2-1 系统结构图嵌入式Linux数据采集终端使用天嵌科技的TQ2440开发板,这个开发板具备了丰富的外围设备,使用三星的S3C2440 ARM9芯片作为CPU,该芯片是现在嵌入式系统采用的主流芯片之一。数据传输通道通过GPRS接入Internet实现3。(二)系统软件总体方案设计本节详细说明系统各部分的软件组成。总体来看,软件的设计主要是为了更好的控制硬件并完成用户的需要,图2-2给出了硬件,内核和应用程序之间的关系。图2-2 硬件,内核和应用程序的关系1. 嵌入式Linux数据采集终端软件方案设计 嵌入式Linux数据采集终端的软件根据其与硬件相关的程度由深到浅主要分为引导加载程序,Linux内核及应用软件。 引导加载程序是CPU上电后开始运行的第一段代码,这段代码初始化硬件设备,建立内存映射表,为操作系统内核运行提供合适的软硬件环境。ARM平台上常用的引导加载程序有vivi和u-boot等,由于引导加载程序与硬件相关,目前硬件开发商一般都会提供相应的应到加载程序,本文采用天嵌科技提供的已移植好的u-boot作为引导加载程序4。 Linux系统内核构建的是否成功直接关系到嵌入式Linux系统能否正常运行,因此,内核的构建在软件设计中占据着重要的地位。内核的构建主要包括Linux内核移植,文件系统构建和Linux设备驱动程序移植及开发。Linux内核移植应当着重考虑系统要求提供哪些功能,加入全部的内核功能,虽然可以保证系统更好的运行,适应各种应用场合的需要,但是它将使得内核变大,运行时占用内存空间增大,运行速度减慢;而加入的内核功能不全,很显然系统将无法满足需要。因此,对内核进行移植,必须清楚自己的系统需要哪些功能,并配置内核提供相应的功能。最好的方法是全面浏览内核配置单,针对每一项内核提供的功能考虑系统是否需要,从而进行取舍5。 设备驱动程序关系到系统的硬件能否正常工作,它是内核的重要组成部分。如果对于某个硬件资源,内核已经提供了它的驱动程序,直接对该驱动程序进行移植即可。对于其他一些硬件资源,若内核并未提供驱动程序,则需要自行编写。对设备驱动程序的移植与编写都应该遵循Linux驱动程序接口以及设备模型的规定,只有这样才能被内核识别。 2. 数据传输通道软件方案设计 所谓数据传输通道软件功能,指的是如何使数据传输通道两端的软件实现数据传输。针对本文使用的GPRS网络,就是软件如何使嵌入式终端通过PPP拨号连入GPRS网络。由于刚构建的Linux操作系统只能完成操作系统最基本的功能,而其它功能的实现还需要移植相应的应用程序到嵌入式Linux操作系统当中6。对于PPP拨号,需要将ppp拨号程序移植到操作系统当中。3. 上位机软件方案设计 上位机软件相比嵌入式数据采集终端要简单很多。上位机安装Windows XP操作系统,已经具备了所有运行条件,只要为其编写相应的服务器程序即可。由于本文旨在设计一个方便多种应用环境使用的软件模型,应当考虑所设计的程序的通用性。上位机被设计为一个并发服务器。服务器应用程序的主要功能有:接受客户端的连接,获取客户端传来的数据并写入文件,分析数据并显示出错数据,向客户端发送命令,查询客户端运行状态等。除了接受客户端连接是属于主线程的任务,其他工作则都是隶属于某个客户端对应的线程的7。因此,有多少客户端连接在服务器上,服务器程序就有多少个线程在运行。三 应用程序设计(一) Qt简介本节则重点介绍Qt的图形界面设计方法以及Qt所采用的通信机制,这些设计方法以及通信机制将伴随应用程序开发的整个过程。1 Qt图形界面设计方法Qt图形界面的设计方法主要有两种:利用Qt Creator通过代码设计及利用Qt Designe:进行可视化设计。两种方法各有利弊,Qt Creator使图形界面设计具有更强的可控性,使用户更方便的完成相应的设计;而Qt Designer为用户提供了更加快捷的图形界面设计方法,但无法对控件的全部特性进行操控。由于两种方式各有利弊,却又互相包含,本文采用两种方法相结合的方式进行设计,首先采用Qt Designer对图形界面做出设计,然后利用代码对其详细特性进行设定。2 Qt通信机制Qt的通信机制常用的主要有两种43:信一号和槽以及事件。下面对两种机制进行说明。信号和槽机制是Qt编程的基础,可以说只要使用Qt进行编程,就不可避免的要使用信号和槽机制。它可以把互不相关的对象联系起来,实现了面向对象设计中对消息传递及响应的要求。槽是一个普通的函数,可以对其直接调用,也可将其与一个信号连接起来,用于对信号进行响应。通过下面的方式,将一个槽和信号关联起来: connect(sender, SIGNAL(signal), receiver, SLOT(slot);其中的信号signal和槽slots在代码中由Qt的伪关键字signals和slots来标识。事件是由Qt窗口系统或者Qt自身产生的。一般情况下利用Qt进行编程不需要关注事件,因为Qt库中自带的控件已经将其转化为了信号,但当我们需要自定义控件,事件就变得非常有用了。在Qt中所有事件类都是 QEevent 类的子类,而事件就是对应事件类的一个实例。当一个事件发生时如图3-1所示,Qt首先调用QApplication:notify()发送一个事件,该事件被发送给qApp对象,该对象是一个应用程序中唯一一个QApplication类的对象,如果在该对象中注册了对应事件的事件过滤器,则事件一首先被发送到qApp对象的eventFilter()函数,如果该函数对事件进行了处理,事件将不再传递,否则,事件被传到该事件对应的对象的事件过滤器并执行该对象的eventFilter() ICI数,同样,如果该事件被处理,则不再下传,否则事件被传递到QObject:event()函数进行处理,如果该事件被处理,则不再下传,否则事件不得不被传递到专门的事件处理器进行处理,而这里也将是应用程序对事件进行处理的最后机会,否则事件将采用默认的方式被处理8。图3-1 Qt事件处理基于上面的描述,我们有以下五种方式对事件进行处理:(1)重新实现特殊的事件处理器;(2)重新实现QObject : event();(3)在QObject 中安装事件过滤器;(4)在QApplication对象中安装事件过滤器;(5)子类化QApplication并且重新实现notify().本文设计软键盘采用了事件处理机制,而其他部分则采用了信号和槽机制。(二) 嵌入式Linux数据采集终端应用软件设计 1. Qt库及tslib移植为了使用Qt开发ARM平台下的应用程序,需要对Qt库进行移植。同时,为了更好的使用触摸屏,需要移植tslib,它可以完成对触摸屏的滤波、去抖、校准等功能。移植Qt库前先要移植tslib。下载源码并解压源码,进入tslib目录,配置参数,命令如下: ./configure -host=arm - linux -disable-hp3600 -disable-arctic2 -disable-mk712-disable- collie -disable-corgi -disable-ucb1x00 -disable-linear-h2200 -with- gnu- ld-prefix=/opt/tslib- installac_ cv func_ malloc_ 0_ nonnull=yes 具体参数含义在源码配套的文本中有很好的说明,这里不再赘述。值得注意的是配置参数中指明使用arm-linux作为交叉编译器,安装目录是/opt/tslib_instal。 执行make,编译源码,完成后再执行make install。进行安装,安装目录在前面配置参数时已经指定。安装后,安装目录中包含有bin, etc, include, lib四个目录,其中的内容是复制到构建的文件系统对应目录的一些文件,按照用户需求可以有选择的进行复制,这里我们复制了安装目录下bin目录的ts_calibrate和ts_print可执行文件到文件系统的bin目录,并将安装目录下lib目录的库文件复制到文件系统的lib目录下,最后将安装目录下etc目录的ts.conf文件复制到了文件系统的lib目录下。至于安装目录下include目录在后面Qt库移植时将会用到。 完成以上工作后,执行ts-print程序,并点击触摸屏的四个端点进行测试,ts_print程序会打印我们点下的点的坐标,由于目标板的触摸屏尺寸为320*240,因此测试数据证明触摸屏运行正常。 完成tslib的移植之后,就可以进行Qt库的移植了。本文采用 Qt for Embedded Linux。下载源代码并解压,解压得到qt-everywhere-opensource-src-4.8.0目录,进入该目录,在终端输入以下配置参数: . /configure -release - opensource -silent -qt - libjpeg -qt-libmng -qt-libpng -qt-libtiff-no-multimedia -make libs -nomake tools -nomake examples -nomake dote -nomake demos-embedded arm -xplatform qws/linux-arm-g+ -little-Indian -qt-freetype -depths 16,18-no-qt3support -no-nis -no-cups -no-iconv -no-dbus -no-openssl -no -fast -no-accessibility-no -scripttools -no-mma -no -multimedia -no-svg -no-webkit -no-3dnow -no-sse no-sse2 该配置参数包含的内容较多,最好是按照自己的需求进行选择,否则编译出的库太大或者包含太多自己不需要的内容都将会影响嵌入式Linux系统的性能,并占用太多的Flash空间,了解配置参数详情可用命令:./configure help 值得注意的是最后几行,指定了库的目录前缀以及tslib的头文件所在的目录,这些在编译Qt库时都需要指明。特别注意目录前缀,一定要与所要复制到的文件系统的放置Qt库的位置相同,否则在目标板文件系统中,在本文中,执行了如下命令: cp fr lib/opt/qt-4.8-arm/ cp fr plugins/opt/qt-4.8-arm 最后修改目标板文件系统的/etc/profile文件,添加新的环境变量: #Qt所在目录 export set QTDIR=/opt/qt-4.8-arm #显示设备缓冲区设备文件是/dev/fb0 export set QWS_DISPLAY=”LinuxFB:/dev/fb0” #最小尺寸export set QWS_ DISPLAY="LinuxFB:mmWidthl 30:mmHeight 100:0"#键盘使用的ttyexport set QWS_ KEYBOARD="TTY:/dev/ttyl”#触摸屏设备文件/dev/event0export set TSLIB-SDEVI CE=/dev/event0#用于保存触摸屏校正数据的文件export set TSLIB-ALI BFILE=/etc/pointercal#触摸屏校正程序配置文件export set TSLIB_ CONFFILE=/etc/ts.conf#触摸屏插件目录export set TSLIB_ PLUGINDIR=/lib/ts#Qt的鼠标/dev/event0,也就是触摸屏export set QWS_ MOUSE_ PROTO="TSLIB:/dev/event0"#Qt插件所在目录export set QT_PLUGIN_ PATH=$QTDIR/plugins/#字体库的位置export set QT_QWS_ FONTDIR=$QTDIR/lib/fonts/# Qt库的位置export set LD LIBRARY_ PATH=$QTDIR/lib:$LD_ LIBRARY PATH编译好的库文件在PC机上也要保留一份,用于交叉编译,在PC机上编写的Qt程序,在编译时如果选择该库,则编译得到的可执行文件就可运行于ARM平台上。这体现了Qt“一次编写,随处编译”的特点,即只要有编写好的程序代码,使用不同的库进行编译,就可以得到可在对应目标平台上运行的可执行文件9。 2. 嵌入式Linux数据采集终端软件设计嵌入式Linux数据采集终端软件设计包括用户界面及功能两方面的设计。界面设计主要使用Qt已有的控件完成。另外,Qt的菜单项由 QAction实现,本文称一个菜单项是一个动作。设计好的嵌入式Linux数据采集终端界面如图3-2所示。图3-2 数据采集终端界面 主菜单中只有两个动作,设置和关闭,设置可以完成对要连接的服务器IP地址及端口号的设置,还能设置数据采集终端的采样周期和警报上限。关于菜单是有关该程序的介绍。数据采集终端包括的功能有拨号建立GPRS连接,与服务器建立连接,数据采集,数据处理,传送处理后的数据以及接受服务器的远程指令控制。由于本文的主要目的是设计一个通用的软件平台,而拨号建立连接GPRS相当于是平台运用的是个实例。在对功能进行说明前,首先说明应用层协议。为了实现客户端与上位机的通信,两者之间应当具有应用层协议。本文设计的应用程序客户端与上位机之间的应用层协议结构如图3-3所示。图3-3 应用层协议格式在对功能进行说明前,首先说明应用层协议。为了实现客户端与上位机的通信,两者之间应当具有应用层协议。数据块大小是命令类型与数据所占的字节数。数据类型标识了所包含的数据的类型,本文的应用程序支持三种类型:(1) I为信息类型,其后的内容是数据采集终端与上位机之间的交换信息,主要在连接建立初期传送这类信息,用于上位机获取并登记数据采集终端的信息,该类型的数据包括F和R两种,F是在建立连接时,又数据采集终端向上位机发送终端信息,而上位机接到信息并登记后,以R数据回复。(2) C为命令类型,其后的数据是预定义的一些命令,该类数据一般由上位机首先发起,然后接收数据采集终端的反馈信息。(3) D为数据类型,其后的数据就是数据采集终端发往上位机的数据处理结果。建立连接是完成其他功能的前提,数据采集终端只有在连接建立的情况下才能完成与上位机的通信。因此首先要说明连接建立的过程。连接建立过程经历了以下步骤:(1)服务器首先要处于运行状态,然后客户端点击连接按钮,此时,客户端使用套接字执行QTcpSocket:connectToHost()函数请求与服务器连接;(2)服务器监听到有连接请求,创建新的线程,并在新线程内创建套接字,当建立起与服务器的连接后,客户端的套接字会发出QTcpSocket:connected()信号,客户端接收到该信号后,向服务器发送本客户端的信息;(3)服务器接收到客户端信息,进行登记并回复客户端;(4)客户端收到服务器回复再次回复服务器,以证明自己身份;(5)客户端与服务器均更新自己的状态,完成连接的建立。 上面的步骤提到的客户端信息,主要包含了服务器从套接字获得的客户端的IP地址和端口号,以及客户端发送来的客户端的设置,包括采样周期和报警上限等。服务器将客户信息保存在一个动态分配的ClientDataConnectionInfo结构中,然后,服务器以IP地址:端口号的形式作为键,将其保存在一个全局的QMap对象中,便于以后使用。由于使用的是全局对象,同时服务器采用了多线程,因此需要使用QMutex实现互斥访问10。连接建立以后,就可以设计其他功能了,数据采集与数据处理是一对生产者与消费者线程,只有数据采集线程采集到一定量的数据后,数据处理线程才会开始运行并处理数据。这点使用QSemaphore信号量实现,本文设计了一个双缓冲结构,即虽然采集1024个数据点,但缓冲区设定为2048,空闲空间信号量被初始化为2048,而己用空间信号量被初始化为0,数据采集线程每次获取1024个空闲空间信号量,然后释放1024个已用空间信号量,而实际上还有1024个缓冲空间可用;而数据处理线程每次获取1024个己用空间信号量,然后释放1024个可用空间信一号量。这样做的目的是当采样周期时间比数据处理耗时短时,可以保证数据采集线程不会因为等待数据处理线程执行后清空缓冲区而使数据采集延时。当连接已建立且服务器端发送采集命令时,两个线程开始运行。两个线程的区别主要体现在两点:数据采集线程中间会休眠,而数据处理线程不休眠;数据采集线程获得的数据放入缓冲区供数据处理线程使用,而数据处理线程处理后得到的结果要通过网络发送给上位机。另外,需要说明的是,本文由于实际条件所限,并没有进行实际的数据采集,而是通过产生1024个随机数来模拟数据采集,而数据处理则通过对1024个数求平均值进行模拟。剩下的最后一个数据采集终端功能是执行上位机的命令。这类似于建立连接时上位机与数据采集终端交换信息的过程,只不过传递的命令是C类型,数据是相应的命令,这里不再赘述,其他命令的执行与此类似。(三)上位机应用软件设计上位机应用软件不需要进行Qt库移植,Qt有支持Windows的版本,直接安装使用即可。操作菜单包括运行服务器,控制数据采集终端开始或停止采集,远程关闭数据采集终端。设置菜单包括两个设置,一个是对上位机的设置,另一个是当与某个数据采集终端连接时,若处一于未采集状态,则一可以进行远程参数设置。查询菜单是查看当前选中的客户端的运行状态和信息。关于菜单.是对软件的介绍。中间的表格用来显示超限的数据,可以清除记录。选择客户端列表示当前与服务器连接着的数据采集终端的键,即数据采集终端IP地址:端口号,没有连接时则显示无,这样,用户可以选择想要控制或者查看的客户端。图3-4中的状态下有一个客户端与服务器相连,且出现了错误数据。图3-4 上位机界面四 系统集成及调试(一)PPP,GPRS及WIFI简介本文设计的应用软件可以运行于多种基于TCP/IP协议栈的网络当中,本文将数据采集终端的应用软件分别运行于GPRS, WIFI以及有线网络之上,并测试了软件的性能。由于开发板上没有无线网卡,因此,并未采用开发板接入WIFI,而是使用笔记本接入校园WIFI,另外,有线网络使用虚拟机进行测试。这两种网络接入比较方便,本文不再赘述,只在最后测试时给出数据,而GPRS网络在嵌入式数据采集终端的配置比较复杂,这里进行详细的说明。 本文采用PPP拨号的方式接入GPRS网络,PPP是数据链路层协议,它提供了一种互联网接入的方式,PPP包含了三个协议:LCP链路控制协议,NCP网络控制协议以及认证协议。Linux已经包含了PPP协议,用户只需要在内核中进行配置即可。本文不会直接接触LCP和NCP,但会配置认证协议,以方便通过GPRS网络的认证。GPRS现今已相对成熟,是移动设备接入网络的主要手段,它能够进行分组数据发送和接收。WIFI基于IEEE802.11标准,是用于短途无线数据传输。它具有传输速率高,带宽可调整的特点,根据使用区域不同,通信距离最大可达1 000m左右。WIFI组网成本较低,可以很方便的接入Internet,而且可通过加入无线接入点扩大WIFI的覆盖范围,因此,近几年WIFI也被广泛运用于各类数据采集系统当中。(二)软件系统集成上位机的软件不存在集成的问题,直接在上位机运行即可,而对于嵌入式Linux数据采集终端,需要完成相应的系统集成。首先,需要实现Linux下的PPP拨号接入GPRS网络,配置内核并编译,使其以支持PPP协议,配置单如下: Device Drivers -à Network device support-à PPP (point-to-point protocol) support PPP support for async serial ports PPP Deflate compression PPP BSD-Compress compression这样只是在内核中加入了PPP协议支持,而进行PPP拨号,还需要在Linux系统上移植PPP拨号程序,下载源码ppp-2.4.5并解压,进入解压后的源码目录,执行 . / cofigure 经过配置,生成了Makefile文件,这时再执行 make CC=arm-linux-gcc用arm-linux-gcc编译源代码,完成后,会在源码目录的/chat, /pppd, /pppdump三个目录下分别生成chat, pppd, pppdump, pppstats四个可执行文件。将这三个可执行文件拷贝到开发板的/usr/sbin/下。之后需要编写配置文件,可参考源码目录中的SETUP, README.linux和script/README。(三)软件性能测试将上节提到的三种客户端与服务器连接,以一系列采样周期采样100组数据,由于写入数据文件事给出了数据到达时间,因此可以查看是否发生了丢包,分别计算在不同采样周期下的丢包率,用以查看这种数据采集系统方案是否可行。理论上使用TCP不会出现丢包,但这是针对网络拥塞而导致的丢包而言的,实际中由于其他因素而导致的丢包还是存在的,尤其在无线传输时,由于无线信道本身的特点,网络拥塞已经不是造成丢包的唯一原因了,因此还是会出现丢包。测试后的结论如下:(1)硬件差异只影响数据采集与处理的速度,不会对丢包率造成影响,因此,丢包率只反映了网络本身的特性。可以看出,有线网络的丢包率大体上就是0%,主要归功于TCP协议的传输可靠性。(2)随着采样周期缩短,三种接入方式都出现了丢包率上升的情况,这是不可避免的,因为随着采样周期的缩短,数据发送的频率增大,数据量就随着增大,出现拥塞,误码等问题的概率增大。一种可行的解决办法是当采样周期较短时,可以先将处理后的数据在终端缓存,当数据量到达一定程度时一次发送,这样就可以减轻网络上的负担,但同时带来数据报告的延迟,使得数据的实时性受到影响。(3)WIFI与有线接入方式的丢包率基本一致,主要原因在于WIFI最终都会将基站接入有线网络,而由于WIFI的覆盖范围有限,这就使得使用WI FI接入的终端离基站的距离也比较近,这样,无线链路的长度并不大,因此,除了终端与基站一段采用了无线网络,其他网络部分仍然是有线网络,所以丢包率不会很大。(4)GPRS接入方式的丢包率变化很大,主要因为GPRS无线传输距离较远,不可避免的会受更多外界因素的影响以及网络传输的数据量人小的影响。但所设计的软件在800ms的采样周期下运行还是可以的,虽然有将近50%的丢包率,但由于远程数据采集主要是为了周期性的获取设备的运行状态,因此,如果设备出现故障,以后的数据肯定还是问题数据,只要有问题数据出现,上位机就可以采取措施。因此,虽然有50%丢包率,但能够保证错误数据的送达也是可以的。结论 数据采集系统在工业上有着极其重要的地位,随着工业信息化的发展,数据采集系统也发生着突飞猛进的变化,数据采集系统数据传输的手段逐渐多元化,结合无线互联网技术的数据采集系统正在逐步形成。本文立足于数据采集系统的变化,给出新型数据采集系统软件设计的通用框架和方法,并在此基础上给出了一个通用的应用软件平台,以方便今后数据采集系统应用软件的开发,也为今后进一步的应用开发与研究提供了良好的基础。参考文献1向细波.基于嵌入式Linux和GPRS的无线远程监控系统研究与应用D.上海:同济大学电子与信息工程 学院,2007.2 Chin E. Lin, Ying-Shing shiao, Chih-Chi Li, Sung-Huan Yang, Shun-Hua Lin, and Chun-Yi Lin. Real-Time Remote Onboard Diagnostics Using Embedded GPRS Surveillance TechnologyJ.IEEE Transactions on Vehicular Technology, 2007, 56(3):1108-1118.3 Zhao Ji-chum Sun su-fen, Yu Feng, Luan Ru-peng Zhang fei. The Design and Realization of Embedded Wireless Video monitoring System Based on GPRSC.Wireless Communications, Networking and Mobile Computing, 2008:1-4.4杨阳.基于ARM的无线监控终端的研究与实现D.西安:国科学院国家授时中心,2011.5黄德强.采用嵌入式LINUX技术与GPRS网络实现无线数据采集与传输J.电了器件,2003, 26(2):226-228.6齐凤莲,张帼英,潘伟志.基于工控机的汽车助力器监测系统设计J.工具技术,2009, 43 (12):53-55.7熊茂华,杨震伦. ARMS嵌入式系统设计与开发应用M.北京:清华大学出版社,2007. 12.8李亚锋,欧文盛等.ARM嵌入式Linux系统开发从入门到精通M.北京:清华大学出版社.2007. 8.9 William Stallings. Operating System:Internals and Design Principles, Six EditionM.Upper Saddle River, New Jersey:Prentice Hall, 2008.10陈小红.基于嵌入式Linux和GPRS的远程监控系统的研究D.北京:北京邮电大学,2007.