摘要:为完结温湿度会集实时显现和长途办理,规划了依据SQLITE数据库和嵌入式web服务器的分布式长途监控体系。该体系经过QT技能完结温湿度的会集实时显现,选用CG1程序完结嵌入式web服务器对SQLITE数据库的长途拜访。体系的试验成果表明,该体系安稳、牢靠,能够满意现场温湿度实时显现和长途办理的要求。
关键词:SOLITE数据库;QT界面;嵌入式Web服务器;CGI
跟着SMT出产工艺技能的进步,出产车间对环境的温湿度提出了温度25±3℃。湿度45%RH~65%RH的要求。为了到达这样的温湿度要求,就不只需求进步温湿度传感器的精度,而且要求现场的办理人员能够实时的检查现场的环境数据,一起要求长途的上级办理人员能够查询和办理各个监测点的温湿度数据。
为了处理现场温湿度实时显现的问题,张晨吴等人在依据485总线的数字化温湿度测控体系的规划一文中,提出为485温湿度变送器扩展LCD显现模块来完结温湿度实时显现的计划。这种独立实时显现计划需求为每个监测节点装备LCD模块,存在本钱投入高、不便利实时检查的缺陷。文中针对这一缺陷,提出了运用QT技能完结现场温湿度会集实时显现的计划,这个计划只需一个LCD模块即可完结各监测点温湿度实时检查,不只本钱低,而且便利办理。为了处理温湿度的长途办理问题,肖鸿威在依据modbus协议的空间分布式温湿度测控体系规划一文中,提出了选用工控机和SQLserver的计划来完结温湿度的长途收集和办理,这种计划需求装备高性能的工业PC,本钱贵重。针对这一缺乏,本文提出了选用嵌入式ARM渠道和SQLITE数据库计划,这种计划不只本钱低,而且设备细巧,装置保护灵敏便利。
依据SMT车间温湿度数据收集、监控的要求,本文规划了依据SQLITE数据库的分布式温湿度长途监控体系。本体系充沛运用了QT技能和SQ LITE数据库的长处,树立依据ARM微处理器和Linux操作体系的嵌入式Web服务器,然后完结现场数据的会集实时显现和长途办理。
1 体系的硬件渠道和软件渠道
本体系以嵌入式Linux体系为中心,包含硬件渠道和软件渠道。首要在以S3C2440微处理器为中心的硬件渠道上树立嵌入式Linux环境,然后在Linux环境下移植Qtopia、SQLITE数据库和Boa服务器,终究经过Qtopia开发环境完结QT实时显现界面的规划,运用CG1技能完结Web服务器对SQLITE数据库的长途数据查询。而且经过485总线树立温湿度的底层收集网络。体系的渠道示意图如图1所示。
1.1 体系的硬件渠道
传统的以单片机为中心的涣散式外表监控方式,明显现已不能满意当时监控体系对长途拜访和会集办理的要求。选用主机-终端的监控方式,尽管能够对现场的温湿度进行实时办理,可是这种监控方式布线相对杂乱,传输的间隔受到限制,很难对不同地址的温湿度进行监控。
为了对不同地址的温湿度进行实时的长途办理,需求树立一个依据以太网的分布式监控体系。依据以太网的监控体系能够选用PC、PLC或许ARM为中心,选用PLC为中心的以太网监控体系一般需求装备以太网模块,选用PC为中心的监控体系一般需求装备高性能的工业PC,这样与以ARM为中心的监控体系比较,价格要贵重的多。因而,本文选用以ARM为中心的以太网温湿度长途监控体系。
1.2 体系的软件渠道
本体系的软件渠道首要包含宿主机和方针机。宿主机是VMware8.0虚拟机下Fedora9.0的Linux操作体系+PC机,方针机为ARM9电路板。其间在宿主机上需求完结Bootloader的编译,裁剪内核,制造内核映像文件和根文件体系映像文件,然后将其下载到ARM板的Flash,然后完结嵌入式Linux操作体系的树立。
本体系的软件规划是树立在已树立好的嵌入式Linux操作体系的基础上。要规划QT实时显现界面需求在宿主机上树立起QT开发环境,需求在ARM板上经过移植Qtopia2.2.0树立起QT运转环境,终究将在宿主机编译的履行文件下载到ARM板上。要完结收集数据的长途web查询,需求在ARM板上移植SQLITE数据库和Boa服务器,然后经过CGI程序完结对SQLITE数据库的拜访。
2 QT实时显现界面的规划
Qtopia是一个依据Ote的相似桌面体系的运用环境,它能够为依据嵌入式Linux的消费电子产品供给和创立图形用户界面,运用Qtopia开发的运用程序界面明晰漂亮、操作便利,多用于PDA产品的界面开发中。
2.1 QT开发环境和运转环境的树立
QT开发是在宿主机上完结,而QT程序的运转是在ARM板上完结的,因为宿主机是X86体系,而ARM板一般是ARM体系,所以有必要在宿主机上既要树立合适X86的开发环境,又要树立合适ARM体系的开发环境。本体系经过编译X86版别的Qtopia-2.2.0和ARM版别的Qtopia-2.2.0恰当的完结了QT开发环境的树立。
QT程序的运转环境是在ARM板上,因而需求将Qtopia移植到ARM板上,行将Qtopia增加到文件体系中,为了让Qtopia能够在ARM板上运转起来,需求制造一个Qtopia运转脚本,然后将其权限设置为可履行文件,一起修正文件体系的“etc/init.d/rc.S”文件,在其间增加“qtopia &”的句子。
2.2 QT界面程序的规划
在QT的程序规划中会用到信号和槽,信号和槽是QT用于方针间通讯的一种机制,它是QT的中心特征,也是QT与其他东西包最不同的部分。而且信号和槽的机制是安全的:一个信号的签名有必要与它的接纳槽的签名相匹配。因而,信号和槽的机制能够确保一旦一个信号和一个槽衔接起来,槽会在正确的时刻运用信号的参数而被调用。
在本体系的QT程序中,运用主函数调用初始化函数,进行硬件的初始化,并翻开传感器设备;然后调用读取函数,读一次底层数据后发送一个信号,在QT程序中该信号衔接一个槽,每发送一个信号,就会履行一次数据的显现。程序流程如图2所示。
本体系中完结QT界面实时显现的两个重要函数:
信号和槽的衔接是经过衔接句子完结的。下面介绍QT程序中用到的2个connect句子:
因而,当按下ok后,界面中将有数据显现。
2.3 穿插编译QT程序及实践运转成果
在编译好的ARM版别的Qtopia-2.2.0开发环境下,运用progen东西生成.pro文件,指令行为progen-o xianshi.pro;运用tmake东西生成Makefile文件,指令行为tmake-oMakefile xianshi.pro。然后经过make指令生成可履行文件,并将生成的履行文件xianshi下载到ARM板的/opt/Qtopia/bin/目录下,将桌面图标文件xianshi.png下载到ARM板的/opt/Qtopia/pics/目录下,将桌面启动器文件xiansh i.desktop下载到ARM板的/opt/Qtopia/Apps/Applicationst目录下。终究重启ARM板,在触摸屏上点击xiansh test文件图标,翻开QT界面,再点击Initialization按钮和Ok按钮即可得到相关测验数据。终究的运转成果如图3所示。
该运转成果充沛证明了QT程序已成功在ARM板上运转。将QT程序设置为每1秒改写一次温湿度数据,让ARM板长时刻运转,QT界面的温湿度显现依然坚持流通,因而,阐明该规划满意实时显现的要求。
3 CGI拜访SQLITE数据库的完结
嵌入式体系在数据的收集和处理进程中有很多的动态数据,而对数据的存取首要有两种办法:一种是依据文件的办法,一种是依据数据库的办法。关于文件办法,运用程序一般独占数据文件的读写操作,数据同享性差;关于数据库办法,数据和运用程序彼此独立,经过业务进行调度和并发操控,可有用的完结对数据进行存取、查询等同享操作,而且运转时需求较少的内存。因而,本体系选用了依据SQLITE数据库的办法。
嵌入式web服务器对SQLITE数据库的拜访是经过CGI技能完结的。本体系在宿主机上经过编译SQLITE数据库东西包树立起SQLITE数据库开发环境,在ARM板上经过移植Boa服务器和SQLITE数据库树立起CGI程序运转环境,然后在宿主机环境下编译CGI程序并将生成的履行文件下载到ARM板相关目录下,然后完结CGI对SQLITE数据库的拜访。图4为嵌入式Web服务器对SQLITE数据库进行拜访的结构图。
3.1 CGI对嵌入式Boa服务器的拜访
CGI(Common Gateway Interface)是一个web服务器与外部运用程序交互的规范接口,它答应将其输出成果经web服务器传送给web浏览器。web服务器将web浏览器发来的音讯,传递给CGI程序,由CGI程序进行处理,处理完结后把呼应的成果再回送给web服务器,web服务器再把音讯发送给web浏览器。CGI程序能够用多种言语来完结,如Perl、C、Unix shell等,因为C言语有较强的渠道无关性,占用的资源少,效率高,本体系选取C言语来编写CGI程序。
CGI程序有GET和POST两种提交数据的办法。其间,GET办法提交数据,是将数据保存在QUERY_STRING环境变量中,经过调用函数getenv(“QUERY_STRING”)来读取数据;POST办法提交数据,则程序先从CONTENT-LENGTH环境变量中得到数据的字长,然后从规范输入中读取相应长度的字符串。一般,假如仅仅为取得和显现数据多选用GET办法提交数据,一旦触及数据的保存和更新,多选用POST的办法提交数据,本体系选用的是GET办法来提交数据。
CGI是树立在Boa服务器的基础上的,关于Boa服务器的移植在此不再赘述。
3.2 嵌入式SQLITE数据库的完结
3.2.1 嵌入式SQLITE数据库简介
SQLITE是D.Richard Hipp开发的开源性嵌入式数据库引擎,悉数源代码大约3万行左右,编译后的程序巨细250 kB,乃至能够缩小至150 kB左右。它具有体积小、数据容量大、处理速度快、占用内存少的特色。而且它用一个小型的C库来完结嵌入式联系数据库办理体制,供给了对SQL92的大多数支撑,包含:多表和索引、业务、视图、触发和一系列的用户驱动及其接口。
3.2.2 SQLITE常用的API函数
1)翻开数据库:int sqlite3_open(const char*filename,SOLITE3**db);//*filename是数据库的文件名,**db是数据库句柄。
2)运转函数:int sqlite3_exec (sqlite3*,const char**sql,sqlite3_callback,void*,char**errmsg);callback是回调函数,用户能够依据需求自己编写callback函数取得操作数据库的成果。
3)查询数据:int sqlite3_get_table(sqlite3*,const char*sql,char***result,int *nrow,int *ncolumn,char **errmsg);//参数result以数组的方式寄存查询的数据,参数nrow和ncolumn分别为查询句子回来的成果集的行数和列数。
4)封闭数据库:int sqlite3_close(sqlite3*)。
3.2.3 嵌入式SQLITE数据库在ARM—LINUX上的移植
本体系是将嵌入式SQLITE数据库运用到S3C2440+
Linux环境中,首要需求在宿主机的穿插编译环境下,编译生成SQLITE的可履行文件,然后将其下载到ARM板的相关目录下。移植SQLITE的首要过程如下:
1)解压sqlite-3.5.6.tar.gz东西包,指令为tar-zxvf sqlite-3.5.6.tar.gz;
2)解压完结之后进入sqlite-3.5.6目录下新建一个文件夹build。
3)进入build文件夹,履行./configure–host=arm-linux-prefiX=/opt/sqlite-3.5.6/build,其间host是指定进行编译的穿插编译器.prefix是编译后方针寄存的途径。
4)履行make和make install指令,在新建的build目录下生成bin、lib、include、share 4个文件夹。
5)将build/bin目录下的文件拷贝到ARM板的/usr/bin中,将build/lib目录下的文件拷贝到ARM板的lib文件夹下。
6)修正ARM板/usr/bin/sqlite3的权限,指令为chmod 755sqlite3。
完结上述6步后,能够在ARM板的终端输入:sqlite3test.db来验证SQLITE数据库是否移植成功。
3.3 嵌入式Web服务器对SQLITE数据库的长途查询
要完结嵌入式Web服务器对SQLITE数据库的长途数据查询,需求完结数据的查询和网页显现。针对出产车间温湿度数据的当时值、最大值和最小值,本体系规划了对最近五次的温湿度和一切温湿度的最大值、最小值进行查询的CGI程序。在CGI程序中,运用sqlite3_get_table(db,“selectmax(temperature)from dhtll;”,&result,&nrow,neolumn,errmsg)来完结对温度数据最大值的查询,其它数据的查询相似。要完结温湿度的网页显现需求在CGI程序中指定输出一个文本的html网页,经过printf(“Content-type:text/html\n\n”)程序句子即可完结。
编写好的CGI程序需求在特定的穿插编译环境下才干编译成功。这儿运用arm-linux-gcc-I/opt/build/include-L/opt/build/lib-o main.cgi main.c-lsqlite3编译生成main.cgi(其间-I和-L后边指定的是头文件和链接文件),然后将其下载到ARM板的www目录下,并将该文件设置为可履行文件权限。终究在客户端的IE浏览器上输入http://192.168.58.230/main.html即可进入温湿度实时查询界面,其间下图5显现的是温湿度的历史数据页面。
该运转成果阐明Boa服务器和SQLITE数据库已成功移植到了规划的ARM电路板上,而且编写的CGI程序完结了对SQLITE数据库的长途拜访功用。经屡次试验运转,本体系的嵌入式web服务器作业安稳,履行速度快而且安全、牢靠。
4 结束语
文中规划了依据SQLITE数据库的嵌入式Web服务器,引进QT技能来规划温湿度实时显现界面,运用SQLITE数据库和Boa服务器完结温湿度的长途办理。本体系是嵌入式技验测验安稳牢靠,可运用到其他相关范畴,为完结现场数据的会集实时显现和长途数据拜访供给了一种切实可行的计划。