99网
您的当前位置:首页基于嵌入式Linux系统的工业测试仪器web测试系统开发

基于嵌入式Linux系统的工业测试仪器web测试系统开发

来源:99网
第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):124128

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服务器端提交数据请求。在表单元素

中, 用method属性规定如何将表单数据发送到 action 属性所规定的页面。表单数据可作为URL变量(method=\"get)或者以HTTP post (method= \"post\")的方式来发送。采用GET方法时,数据直接以“?”分割依附在表单的所传输的action URL之后;采用POST方法时,浏览器会按分段传输的方法将数据发送给服务器。

由于本系统采用C语言编写,表单设置示例如下:

fprintf(cgiOut, \"\\\">\\n \"); /* method属性指定采用POST方法传送数据;enctype属性规定在发送到服务器之前编码所有字符;action指定接收数据的CGI程序,此外,务必在语句末尾添加\\n,有此结尾Boa服务器和浏览器才能正常解析该表单内容*/

从数据传输安全性角度考虑,测试系统中选用POST方法,这样在得到浏览器指示后,CGI程序开始执行时,Boa服务器会从一个标志位置读取参数,而一旦读到参数,Boa服务器会明确指定CGI程序应该如何接受这些参数,在CGI程序对这些参数进行解码后才能使用这些表单值[10]。 2.2.3 URL编码和译码

为确保数据在服务器和浏览器之间正确传输,需要对数据进行编码和译码,遵循以下规则: 将空格转换为加号“+”;对0-9,a-z,A-Z之间的字符保持不变;特殊字符用“%”加一个十六进制数字编码;参数采用name = value的值对形式表示, 每对name/value之间用“&”分开表示等等。所以CGI 程序在使用这些参数时必须解码,而将数据再次通过服务器发送给浏览器时就需要重新编码,编码方式由表单的enctype属性指定。这些操作可以编写成专门的库函数,在后续的开发中直接调用即可。

2.2.4 JavaScript和CGI的搭配

JavaScript是网络时代最流行的脚本语言,它运行与浏览器端,丰富了网页动态内容,增强了用户与Web应用程序间的交互体验。由于CGI程序传输到浏览器的信息最终是以HTML的形式展示出来的,为了丰富其动态效果,可以结合JavaScript来控制页面的显示。对于简单的JavaScript可以将

第6期 王永星:基于嵌入式Linux系统的工业测试仪器web测试系统开发 127

其直接编写进CGI源程序中,但需要在相关语句前做出声明,示例如下:

printf(\"\");

/*\");

/*声明正文中需要使用JavaScript程序,程序所在位置有src指定*/

fprintf(cgiOut,\"\"); fprintf(cgiOut,\"\"); fprintf(cgiOut, \"

间:  \");

/*此处id的值colock为Clock.js 中所定义的标识,以下语句为JavaScript中变量的声明赋值及程序调用*/

fprintf(cgiOut, \"\"); fprintf(cgiOut,\"\");

如果对界面美观效果要求高的话,可以根据情况将CSS相关设置也纳入JavaScript的控制范围,这些就需要JavaScript相关编程知识作支撑,且要注意各种程序文件的协调搭配。

3 测试系统与应用程序及硬件的交互

测试系统与应用程序的交互本质是CGI和C程序的交互,虽然可使用C程序通信的方式,例如信号量、管道、UDP、SOCKET等,但由于CGI程序是由Boa服务器fork出的子进程,其运行时间是受到客户端浏览器和服务器的双重约束的,在通信出现延时或者其他情况时,CGI程序可能已经运行结束,而无法达到预期的显示效果。这使得CGI和C通信实时显示的可能性大大降低,这时可以使用数据库作为链接载体,由CGI执行读写后通知C程序进行其他操作。为节省系统资源,也可使用配置文件来替代数据库实现相关功能。

测试系统与设备传感器等功能器件的交互本

质上是CGI程序对底层的操作,大部分情况下都可以按照C程序的操作方式进行,但需要注意的是,有些操作仅仅对CGI程序赋权限是不够的,还需要对Boa服务器进行权限设置。此外,由于在Linux下各种硬件大都会被抽象成文件系统来处理,CGI程序对这些硬件进行操作时需要使用绝对路径,调用系统函数也需如此。例如,在c程序中,调用系统命令重启语句为“system(\"reboot\")”,在cgi中就需要改为system(\"/sbin/reboot\")。

4 结论

本文简述了基于Linux的Web测试系统的开发方案,介绍了Boa服务器的移植,CGI程序的原理及编写丰富测试系统的方法,实际测试方案可行。测试系统与客户端的通信可以基于网线,也可以使用无线传输的方案进行扩展,系统开发也可使用最新的网络开发技术,将与智能手机等设备结合,从而实现只需一部手机即可知道测试设备所测试的信息等等。终上所述,该Web测试系统在工业测试领域具有着广阔的应用前景。 参考文献

[1]

赵弘, 赵毅鑫. 基于虚拟仪器的工业CT无线自动加载测试系统[J]. 仪器仪表学报, 2012, 33(8): 1753-1757.

ZHAO Hong, ZHAO Yi-xin. Wireless automatic loading test system for industrial CT based on virtual instrument [J]. Journal of Instruments and Instruments, 2012, 33 (8): 1753-1757. [2]

余进, 赵建军, 刘立, 等. 基于Linux操作系统下TDC电路的数据处理研究[J].软件, 2018, 39(5): 5-8.

YU Jin, ZHAO Jian-jun, LIU Li, et al. Data Processing Research of TDC Circuit Based on Linux Operating System [J]. Software, 2018,39(5): 5-8. [3]

贾江军. 美国福禄克公司工业测试仪器的营销渠道策略[D].昆明.昆明理工大学,2007.

JIA Jiang-jun. Marketing Channel Strategy of Industrial Testing Instruments of American Fluke Company [D]. Kunming Kunming University of Technology, 2007. [4]

陈红梅, 陈静, 李雪冬. 嵌入式Linux下基于CGI的动态Web的实现[J].计算机时代2010(4): 4-5.

CHEN Hong-mei, CHEN Jing, LI Xue-dong. Implementation of CGI-based dynamic Web under embedded Linux [J]. Computer Age 2010 (4): 4-5. [5]

鲍尚东, 王杰. 基于S3C2410X的嵌入式Linux系统的构建[J]. 山东工业技术, 2019(5): 158.

BAO Shang-dong, WANG Jie. Construction of Embedded Linux System Based on S3C2410X [J]. Shandong Industrial Technology, 2019 (5): 158. [6]

刘迪, 周强. 基于ARM9平台上的嵌入式Linux系统移植[J].

128

物联网技术, 2018, 8(11): 85-86.

新型工业化 第9卷

Linux System in Radar Intelligence Communication [J]. Digital Technology and Applications, 2015(5): 114+11. [9]

张栩, 游向东, 罗迁. 一种嵌入式Linux网络控制开关的设计与实现[J]. 软件, 2013, 34(12): 99-102.

ZHANG Xu, YOU Xiang-dong, LUO qian. Design and Imple-mentation of an Embedded Linux Network Control Switch [J]. Software, 2013, 34 (12): 99-102.

[10] 李广植, 许林, 张博. 基于嵌入式Linux的微小型侦察机器人

控制系统设计[J]. 新型工业化, 2015, 5(4): 11-17.

LI Guang-zhi, XU Lin, ZHANG Bo. Design of Control System for Miniature Reconnaissance Robot Based on Embedded Linux [J]. The Journal of New Industrialization, 2015, 5 (4): 11-17.

LIU Di, ZHOU Qiang. Embedded Linux system transplantation based on ARM9 platform [J]. Internet of Things Technology, 2018, 8 (11): 85-86. [7]

吴永亮, 杨宇. 嵌入式Linux系统在OK2440上的构建[J].信息通信, 2015(12): 84-85.

WU Yong-liang, YANG Yu. Construction of Embedded Linux System on OK2440 [J]. Information Communication, 2015 (12): 84-85. [8]

胥霜霞, 周永刚. 嵌入式Linux系统在雷达情报通信中的应用[J]. 数字技术与应用, 2015(5): 114+11.

XU Xuan-xia, ZHOU Yong-gang. Application of Embedded

(上接第123页)

[2] 李炜, 张恒, 王炜. 评价舰船装备体系贡献度的一种方法[J].

舰船科学技术, 2015, 37(10): 1-5.

LI Wei, ZHANG Heng, WANG Wei. An Evaluation Method of Contribution Degree of Warship Equipment System [J]. Ship Science and Technology, 2015, 37 (10):1-5. [3]

SUSHMITA R, ARNIYA N, IVAN S. Fully Secure Pairwise and Triple Key Distribution in Wireless Sensor Networks UsingCombinatorial Designs[C]//Proceedings IEEE INFOCOM. USA: IEEE Press, 2017, 326-330. [4]

ANDERSON C E, WALKER J D, BLESS S J, et a1. On the L/Deffect for long-rod penetration[J]. International Journal ofImpact Engineering, 2016, 18 (3): 247-2. [5]

刘国泰, 王锐华, 刘靖旭. 指挥信息系统能力需求满足度评估模型[J]. 中国电子科学研究院学报, 2014, 9(6): 603-607. LIU Guo-tai, WANG Rui-hua, LIU Jing-xu. Demand Satisfaction Degree Evaluation Model of Command Information System Capacity. [J] Journal of China Academy of Electronics and Information Technology, 2014, 9 (6): 603-607. [6]

许相莉, 胡晓峰. 一种基于复杂网络理论的网络空间作战效能评估指标体系框架[J].军事运筹与系统工程, 2014, 28(1): 33-37.

XU Xiang-li, HU Xiao-feng. A Framework of Network Space Operational Effectiveness Evaluation Index System Based on Complex Network Theory [J]. Military Operations Research

[9] [8]

and Systems Engineering, 2014, 28(1):33-37. [7]

王立武, 陈正荣, 朱旭, 等. 通信对抗条件下通信装备系统效能评估研究[J]. 通信对抗, 2016(3): 46-48.

WANG Li-wu, CHEN Zheng-rong, ZHU Xu, et al. A Study on Effectiveness Evaluation of Communication Equipment System under Communication Countermeasures Conditions [J]. Com-munication Countermeasures, 2016(3): 46-48.

古雪鹏, 陈怀进, 周峰. 基于效用函数的通信对抗作战能力评估[J]. 电子信息对抗技术, 2016, 26(4): 50-53.

GU Xue-peng, CHEN Huai-jin, ZHOU Feng. Evaluation of Communication Countermeasure Capability Based on Utility Function [J]. Electronic Information Warfare Technology, 2016, 26(4): 50-53.

蔡秋芬, 李国辉. 基于PFT的空间预警系统综合效能评估[D].长沙: 国防科技大学, 2013: 14-15.

CAI Qiu-fen, LI Guo-hui. Comprehensive Effectiveness Evaluation of Space Early Warning System Based on PFT [D]. Changsha: National University of Defense Technology, 2013: 14-15.

[10] 张胜光, 嵇元祥, 朱宁龙. 美军电子信息装备发展研究[J].

信息化研究, 2010, 36(4): 5-8.

ZHANG Sheng-guang, JI Yuan-xiang, ZHU Ning-long. Research on the development of electronic information equipment of the US military[J]. Informatization Research, 2010, 36(4): 5-8.

因篇幅问题不能全部显示,请点此查看更多更全内容