基于嵌入式Linux的Web远程测控系统的设计与实现.pdf
- 文档编号:3178526
- 上传时间:2022-11-19
- 格式:PDF
- 页数:3
- 大小:212.23KB
基于嵌入式Linux的Web远程测控系统的设计与实现.pdf
《基于嵌入式Linux的Web远程测控系统的设计与实现.pdf》由会员分享,可在线阅读,更多相关《基于嵌入式Linux的Web远程测控系统的设计与实现.pdf(3页珍藏版)》请在冰豆网上搜索。
基于嵌入式Linux的Web远程测控系统的设计与实现卞东进,顾昊琳,潘应云(南京师范大学物理系,江苏省南京市210097)摘要:
介绍了在嵌入式Linux平台下利用Boa作为Web服务器的远程测控系统的设计与实现,给出一个实用、有效的Web远程测控系统的体系结构。
研究了在嵌入式Linux平台下实现远程测控系统的2个难点,一个是Boa嵌入式Web服务器的移植、设置以及文件系统的制作,另一个是CGI(公共网关接口)程序的设计方法和编写流程。
关键词:
Boa服务器;嵌入式Web服务器;远程测控;CGI中图分类号:
TP274.4收稿日期:
2008203214;修回日期:
2008204221。
0引言嵌入式系统已经成熟并得到广泛应用。
在传统的测控系统中,为了实现多个测控点之间的信息交流,一般采用RS2485、CAN、I2C、SPI等总线将多个测控节点组织成一个网络,但是这样的网络专用性太强,有效的通信范围太窄。
而基于TCP/IP协议的Web技术得到了普及,更重要的是这些协议是可开发的、标准的和独立于平台的,所以利用现有的网络硬件基础就可以非常方便地建立一个远程信息交流的平台。
把嵌入式系统与Web技术结合起来,将Web技术引入到测量和控制系统中,实现基于嵌入式Web服务器的远程测控系统,必将有良好的应用前景。
嵌入式系统离不开嵌入式操作系统。
目前商用的操作系统往往价格昂贵,不适合广泛应用。
嵌入式Linux操作系统源码可开发,移植性好,支持多种硬件平台和支持几乎所有常见网络通信协议,支持的文件系统也很丰富,是一个功能完整的嵌入式操作系统,并且有大量优秀的开发源码的应用软件和开发工具可以使用。
因此,采用Linux作为平台,使用Web技术进行远程在线测控系统的设计。
1基于Web的测控系统的体系结构当测量的数据点比较多、要求存储分析大量历史数据、对系统性能和安全要求又比较高时,采用如图1所示的系统体系结构。
该方案将每个测量点接入到一个基于Web的嵌入式系统,并且联成测控局域网。
该局域网通过网关和防火墙接入Internet;远程监控终端通过浏览器,输入用户名和密码后,可登录到内部测控网络中的任意一个嵌入式服务器,进行数据采集和控制;嵌入式服务器能够接收Web页面的指令,解析并控制前端执行相应动作;局域网安装一个数据库服务器,嵌入式微处理器定时将数据存入服务器,形成历史数据库,供查询、决策参考及故障分析。
本文主要研究在嵌入式平台下的Web技术和CGI(公共网关接口)程序的编写方法。
图1基于Web的测控系统体系结构2嵌入式Web服务器Boa的移植与配置为了能够通过Web来维护和管理远程在线监测系统,必须选择一个恰当的Web服务器,它必须支持CGI,而在Linux下只能通过CGI实现动态的Web。
因此,在嵌入式Linux下选择Boa(开源而且支持CGI)作为嵌入式服务器。
Boa是一个非常小巧的Web服务器,可执行代码只有61.3kB。
它是一个单任务Web服务器,只能依次完成用户的请求,而不会开辟新的进程来处理并发连接请求。
但是Boa支持认证,支持CGI功能,非常适合用于在资源有限的嵌入式系统中。
在嵌入式Linux下移植Boa的步骤如下:
1)完成Boa程序的移植从www.boa.org上下载Boa源码,当前的版本是0.94.13,将其解压并进入源码目录的src子目录。
#tarxzfboa20.94.13.tar.gz#cdboa20.94.13/src生成Makefile文件#./configure86第34卷第7期2008年7月电子工程师ELECTRONICENGINEERVol.34No.7Jul.2008根据宿主机交叉编译器对Makefile进行相应修改:
修改Makefile文件,修改CC=gcc为CC=armv4l-unknown-linux-gcc;修改CPP=gcc-E为CPP=armv4l-unknown-linux-gcc-E;修改头文件defines.h,找到#defineSERVER_ROOT“/var/www”,这里定义的是Web服务器的文件目录(用户可以自己定义,只要与boa.conf中一致就行)。
然后运行make进行编译,得到的可执行程序boa,将调试信息剥去,得到最后程序只有61.3kB。
#make#armv4l-unknown-linux-stripboa2)完成Boa的配置,使其能支持CGI程序的执行在boa源码目录下有一个boa.conf,可以对其进行如下修改:
Groupnobody改为Group0/用户组DocumentRoot/var/www/HTML文件的主目录ScriptAlias/cgi-bin/var/www/cgi-bin/指明CGI脚本的虚拟路径对应的实际路径,一般所有的CGI脚本都要放在实际路径中ScriptAlias/index.html/var/www/index.html/指明服务器的默认页面的虚拟路径对应的实际路径3)文件系统的制作在ramdisk.image文件系统目录下,拷贝可执行的程序boa到/bin目录下;新建目录/var/www/cgi-bin;拷贝一份主机/etc目录下mime.types到目录/var/www下;拷贝刚刚修改好的boa.conf文件到/var/www下;自己的默认页面放在/var/www下,cgi程序放在/var/www/cgi-bin目录下。
经过以上的几个步骤后,嵌入式Web服务器移植基本结束。
3CGI程序设计技术3.1CGI程序的工作流程CGI是一种通用的接口标准。
CGI程序就是符合这种接口标准的、运行在Web服务器上的程序。
它的工作就是控制信息要求,产生并传回所需的文件。
由浏览器的输入触发CGI程序。
CGI程序可以用来在Web内加入动态的内容。
通过接口,浏览器能够发送一个可执行应用程序的HTTP请求,而不仅仅只是静态的HTML文件。
服务器运行指定的应用程序,这个应用程序读取与请求相关的信息,获得请求传过来的数值。
例如使用者填写HTML表单提交了数据,浏览器将这些数据发送到Web服务器上。
Web服务器接收这些数据并根据客户机指定的CGI程序把这些数据递交给指定的CGI程序,并使CGI在服务器上运行。
CGI程序运行结束,生成HTML页面,Web服务器把CGI程序运行的结果送回用户浏览器。
HTML文件将会被用户的浏览器解释并将结果显示在用户浏览器上。
CGI的工作流程如图2所示。
图2CGI工作流程示意图3.2CGI程序的使用方法一般而言,要使用CGI程序就必须在Web网页中迁入调用CGI程序的代码。
通常的做法有通过表单调用、通过超链接调用、通过SSI调用3种。
这里着重阐述使用表单调用CGI程序的办法。
将数据通过表单提交给CGI程序。
下面是一个简单的表单。
简单的表单参数1:
参数2:
网页中表单由字头开始,结束。
其中action=/cgi-bin/cgi_get指明使用的CGI程序名为cgi_get;method属性指定提交数据的方法(POST或GET),这里使用的是GET方法。
在这个实例中提交了两个数据,一个数据的名字是get_data1,另一个数据的名字是get_data2,它们的值由用户在网页中输入。
这里首先了解一下CGI编码的规则。
规则如下:
不同域(变量值对)之间用“&”分开;变量与值之间用“=”连接;空格符用“+”代替;任何特殊字符用“%”接相应的十六进制ASCII码代替,最后形成的格式为:
name1=value1&name2=value2%name3=value3假如用户在get_data1域中输入的是12,在get_data2域中输入的是23。
然后点击提交按钮这个内容96第34卷第7期卞东进,等:
基于嵌入式Linux的Web远程测控系统的设计与实现计算机与自动化技术将被编码。
最后形成的编码如下:
get_data1=12&get_data2=23&submit=%CC%E1%BD%CA%FD%BE%DD3.3CGI程序的编写对于CGI程序来说,当采用GET方式提交数据时,用户提交的数据放在环境变量QUERY_STRING中。
CGI程序从环境变量QUERY_STRING获得数据。
为了解释和执行程序,CGI必须要分析(处理)这个字符串。
当需要从服务器获得数据并且不改变服务器上的数据时,应该选用GET。
但是用GET方式提交时,数据不经过CGI编码,而且数据长度不能超过1kB,否则只能用POST方式了。
CGI程序的任务大概有输入任务和输出任务两部分。
输入任务就是指获取用户提交数据的过程。
输入任务可分为以下几个步骤:
a)从CGI环境变量REQUESR_METHOD中获取CGI程序的提交方式;b)根据提交方式的不同取出变量名和变量值,如果是GET方式,从环境变量QUERY_STRING中取出编码数据;如果是POST方式,从标准输入输出中读取相应的字符串,读取长度由环境变量CONTENT_LENGTH决定;c)根据CGI编码规则取出字符串中的数据(变量名和变量值对)。
输出任务完成后,得到所有的变量名和变量值对,然后是输出任务。
输出任务主要有以下3个:
a)输出HTTP响应的头标志,如printf(Content-type:
text/htmlnn),它告诉Web服务器随后的输出是以HTML文本形式输出的。
注意这个头信息中有2个换行符,这是因为Web服务器需要在实际的文本信息开始之前先看见一个空行。
b)调用其他程序,如远程的测量程序、设置参数的程序或者查询数据库的程序)。
c)输出CGI程序执行结果。
4结束语本文分析了基于嵌入式Web的远程测控系统的体系结构,深入探讨了Boa嵌入式Web服务器在嵌入式Linux系统的移植以及CGI的程序设计方法。
基于嵌入式Web的远程测控系统突破了传统测控系统的孤立性、专用性、封闭性,使得测控系统更加开放、灵活,降低了系统的运行成本,提高了管理水平,具有很大的应用前景和商业价值。
参考文献1田泽.嵌入式系统开发与应用教程M.北京:
北京航空航天大学出版社,2005.2周立功.ARM嵌入式系统基础教程M.北京:
北京航空航天大学出版社,2005.3朱文凯,何岭松,丁汉,等.基于Internet的嵌入式Web传感器J.传感器技术,2002(8):
124.4张海平,雄静琪,等.一种嵌入式Web服务器的远程测控系统J.中国测量技术,2005,31(6):
1152117.卞东进(19832),男,硕士研究生,主要研究方向为智能仪器与仪表。
DesignandImplementationofaRemotementMeasurementandControlSystemBasedonEmbeddedLinuxWebServerBIANDongjin,GUHaolin,PANYingyun(DepartmentofPhysics,NanjingNormalUniversity,Nanjing210097,China)Abstract:
ThispaperintroducesaremotemeasurementandcontrolsystembasedonEmbeddedBoaWebServer,andgivesapracticalandeffectiveconfigurationofmeasurementandcontrolsystembasedonEmbed2dedWebServer.TheauthorshavesolvedtwodifficultproblemsofthemeasurementandcontrolsystemoneisreplantingandsettingofEmbeddedBoaWebServerandtheotheristhemethodofdesigningandprogra
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 嵌入式 Linux Web 远程 测控 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)