第9卷 第6期 2019年6月 新型工业化
The Journal of New Industrialization Vol. 9 No. 6 Jun 2019 文章编号:2095-69(2019)06-0124-05
基于嵌入式Linux系统的工业测试
仪器web测试系统开发
王永星
(山西银河电子设备厂,山西 太原 030006)
摘要: 随着科技的发展,工业化现代化生产环境以及多变的应用环境对工业设备的适用性提出了新的要求,而相应的,对设备性能的测试工作也随之迈向更高台阶。本文通过在嵌入式Linux环境下,搭建web服务器,并配合使用CGI程序实现通过web浏览器在远程操作测试仪器对被测设备进行实时检测,简单阐述了将嵌入式技术与网络技术相结合的新型工业测试仪器设计思路。
关键词: 嵌入式web应用;Boa服务器;超文本传输协议;工业测试
中图分类号: TP274 文献标志码: A DOI:10.19335/j.cnki.2095-69.2019.06.026
本文著录格式:王永星. 基于嵌入式Linux系统的工业测试仪器web测试系统开发[J]. 新型工业化,2019,9(6):124128
Industrial Testing Instrument Web Testing System Development
Based on Embedded Linux System
WANG Yong-xing
(Shanxi Galaxy Electronic Equipment Factory, Taiyuan, Shanxi 030006)
Abstract: With development of science and technology, industrialized modern production environment and changeable applica-tion environment has put forward new requirements for applicability of industrial equipments, and accordingly, equipment perform-ance testing has also stepped to a higher level. The paper expounds design concept of new type industrial testing instruments com-bining embedded technology with network technology briefly, to realize real-time detection of tested equipments through web browser in remote operation based on building web server and CGI program under embedded Linux environment.
Key words: Embedded web application; Boa server; Hypertext transfer protocol; Industrial test
Citation: WANG Yong-xing. Industrial Testing Instrument Web Testing System Development Based on Embedded Linux Sys-tem [J]. The Journal of New Industrialization, 2019, 9(6): 124-128
0 引言
在工业测试领域,基于嵌入式Linux的测试设备也日渐成为主流,相应设备可根据需要集成工业测试所需的各种传感器,并实施记录反馈测试信息。在测试环境较恶劣的场地,为了确保得到更加精准的测试结果,总期望测试设备能尽可能地靠近被测设备,但这又对测试人员的人身安全提出了新的挑战。鉴于此,开发一款能远程操作的测试设备
就成了时下解决该问题的关键[1]。
1 嵌入式Linux系统Web服务器的搭建
嵌入式Linux系统常用的Web服务器主要有:Boa、thttpd、goaheand、appweb和apache等,为尽可能节省系统空间并提升测试系统性能,本文选择使用源码开放、性能优秀、支持CGI,小巧、快速的Boa服务器。作为一个单任务Web服务器,Boa采用多路复用(Multiplex)技术,来处理信息数据,
作者简介: 王永星(1988–),男,本科,工程师,主要从事嵌入式设备开发相关工作。
第6期 王永星:基于嵌入式Linux系统的工业测试仪器web测试系统开发
125
能更加快速实时地响应测试系统的各种请求[2-3]。 1.1 Boa服务器的修改与移植
得益于其开源性,我们可在Boa官方网站http://www.boa.org/下载Boa源码。目前,最新发布版为Version 0.94.13,下载后在Linux系统下解压,根据实际使用目录,修改目录src下define.h文件中,SERVER_ROOT的宏定义值,将其修改为在测试系统boa服务器根目录路径(如/myapp/boa/),在src目录下执行./configure,会产生一个Makefile文件。
根据目标板的交叉编译器,对Makefile文件进行修改,示例如下:
第31行CC=gcc 修改为CC= arm-linux-gcc; 第32行CPP=gcc -E修改为CC=arm-linux-gcc -E。
对src目录下compat.h文件进行修改,将第120行修改成:
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
此外,为正确编译,还需要执行命令apt-get install bison和apt-get install flex分别安装词法和语法分析模块。交叉编译后得到可执行文件boa,执行arm-linux-strip boa剥除调试信息后,文件大小为65k左右,很适合嵌入式设备使用[4-6]
。
1.2 Boa服务器的配置与运行
若使Boa服务器正常运行,就需要将boa- 0.94.13文件夹下配置文件boa.conf复制到目标板SERVER_ROOT根目录中(即上文define.h中宏定义的/myapp/boa/),在复制前需要修改boa.conf中相应参数,其中重要的配置参数可作如下修改:
Port 80
/* 第25行,服务器默认端口,一般不建
议修改 */
User 0
/* 第48行,服务器运行的用户名,改为0后对运行不做限定 */
Group 0 /* 第49行,服务器运行的组名,改为0
后对运行不做限定 */
ErrorLog /myapp/log/error_log /* 第62行,错误日
志文件及存放路径 */
AccessLog /myapp/log/access_log /* 第74行,访问日志文件及存放路径 */
UseLocaltime
/* 第83行,使用本地时间,
方便比对测试信息 */
VerboseCGILogs /* 第行,记录CGI运行信息 */
ServerName www.webtest.com
/* 第94行,用于客户访
问的服务器名称 */
DocumentRoot /myapp/www
/* 第111行,存放
HTML文档的根目录 */
DirectoryIndex index.html
/*第123行,此处指定目
录索引文件,即进入系统的第一个页面,可根据需要将index.html改为相应文件,例如改为登陆文件login.html等,这样过在地址栏输入设备IP地址后可直接进入相应页面。*/
MimeTypes /myapp/boa/mime.types
/* 第155行,指明
mime.types文件位置,如目标板没有该文件,可以将Linux系统主机中/etc/mime.types文件复制到目标板指定位置。*/
ScriptAlias /cgi-bin/ /myapp/www/cgi-bin/
/*
第
193行,存放CGI脚本的实际路径,非常重要,在Web 服务器接收到客户端请求时,此目录下的相应脚本文件可以自动执行*/
以上配置信息是本人开发时所使用的配置,用户可根据自己需要对boa.conf进行修改,但必须要保证其他的辅助文件和设置必须和boa.conf里的配置相符,不然Boa就不能正常工作下[7]。
2 测试系统页面的开发
在完成Web服务器搭建后,就可以开始测试系统页面的开发,这要求开发人员不仅要具有嵌入式开发和C语言编程的经验,还需要对HTML编程知识具有系统性的了解,更重要的是需要开发人员能根据需要熟练在两者之间进行自由转换,这样才能设计出符合预期的Web测试系统。 2.1 静态网页的实现
静态网页作为测试系统页面的重要组成不分,是不可或缺的,另外,静态网页的编写也能为编写CGI程序做好铺垫。HTML编写的重点就是熟练使用HTML标签,一个静态网页文件,本身就是标签语句的结合体[8]。不同的标签有不同的显示效果,同样的标签在设定为不同属性值时,显示效果也会有所不同。例如, 标签用于搜集用户输入信息,根据不同的type属性值,输入字段会有很多种显示形式,示例如下:
/*类型text定义输入文本框*/
/*类
型
password定义密码域,输入的字符会被掩码(显示为星号或原
点)。*/
/*定义提交
按钮,用于向服务器发送表单数据。数据会发送到表单的
action 属性中指定的页面。*/
/*定义重置按钮,会清除表单中的所有数据。*/
此外, 的type属性值还有button、
126 新型工业化 第9卷
checkbox、radio、file等,分别定义按钮、复选框、义了如何进行数据传送,通过HTML页面表单向单选框、文件域等不同类型的元素,同样,其他元素标签也有不同的属性,只有在适当的位置选择合适的标签属性值才能到达预期的效果。 2.2 基于CGI的动态网页
Common Gateway Interface(CGI——通用网关接口),描述了处于同一计算机系统的应用程序与Web 服务器交互的一种通信方式,也就是一种接口标准。CGI程序就是符合这种接口标准,运行在Web 服务器上的程序,它可以处理客户端浏览器发送的工作数据,完成客户端与服务器的交互操作,同时也可与本地应用程序进行信息交互处理[9]
。
作为测试系统的核心,CGI程序的编写不仅要考虑到C程序的交互,还需要兼顾与静态网页等相关文件的合理衔接。简单来讲,就是在使用C语言编写CGI程序的时候,将HTML等相关程序融入其中,且要同时兼顾两者之间的协调。 2.2.1 工作流程
Web测试系统工作流程如图1所示,其中CGI程序运行有以下步骤:
图1 Web测试系统中CGI工作流程示意图
Figure 1. CGI workflow diagram in Web test system
① 客户端通过浏览器向Boa服务器发送请求;② Boa服务器接收请求后,将其转发给指定的CGI程序;
③ 根据得到的请求信息,CGI程序读取系统数据或与应用程序、传感器等硬件模块进行交互以处理请求信息,并把结果传送给Boa服务器;
④ Boa服务器把得到的结果返回给客户端浏览器。
2.2.2 传送方法
通过浏览器访问测试系统使用的HTTP协议定
Boa服务器端提交数据请求。在表单元素