嵌入式Web的远程数据交互式设计

2013-10-10 01:57吴辉侯思祖
单片机与嵌入式系统应用 2013年6期
关键词:服务器端浏览器网页

吴辉,侯思祖

(华北电力大学 电气与电子工程学院,保定071003)

引 言

随着物联网和移动互联网技术的快速发展,进一步推动了嵌入式系统网络化进程,使得嵌入式系统变得越来越智能。由于芯片制造工艺的显著提高,各种高性能的处理器相继推出,使用嵌入式系统接入Internet成为一种趋势[1]。把 Web技术用于远程监控或其他嵌入式系统中,用户通过浏览器就可以对远程设备进行控制和监测,使得用户能够实时地了解设备的运行情况。

1 嵌入式Web服务器

嵌入式系统是一种专用的计算机系统,是为某种应用而定制的计算机系统。嵌入式Internet是指设备通过嵌入式模块接入Internet,以Internet作为传输介质实现信息的交互与访问。一个带有微处理器并且能够连接Internet的设备就是一个嵌入式Internet系统。可以通过Web进行信息交互的嵌入式Internet系统被称作嵌入式Web服务器。嵌入式Web服务器具有体积小、成本低、功能简单等特点。

嵌入式Web服务器以LM3S8962为核心,LM3S8962集成丰富的片上资源:含有256KB单周期Flash、64KB单周期访问的SRAM、4个通用定时模块、1个10/100M以太网控制器、三个可编程UART接口等。LM3S8962以太网控制器遵循IEEE802.3规范,完全支持10BASE-T和100BASE-TX标准,含有100BASE-TX扰码器、解码器,支持全功能的自协商协议,支持全双工、半双工和掉电模式,而且具有可编程MAC地址。采用LM3S8962可省略网络控制芯片。温度采集主要由LM3S8962内部温度传感器实现,采样率可达500 000sps。光强采集由小块的太阳能电板代替光传感器,太阳能电板根据光强的变化改变输出电压。通过A/D转换器检测电压的变化来判断光强的变化。LED亮度通过调节输出PWM的占空比来改变。嵌入式Web交互式框图如图1所示。

图1 嵌入式Web交互式框图

2 嵌入式Web交互式原理

Web通信是基于TCP协议进行的,但它与一般的TCP协议不同的是,在TCP通信的基础之上经过HTTP协议传输。客户端通过Web页面请求数据,嵌入式Web服务器收到客户端发送的HTTP请求时,作出对应的响应,从而完成客户端与嵌入式Web服务器之间数据的动态交互。

2.1 CGI和SSI

CGI(Common Gateway Interface)是一段程序,运行在嵌入式Web服务器上,提供与浏览器HTML页面的接口。简单地说就是用户在客户端(浏览器)中输入信息,浏览器把这些信息传输到嵌入式Web服务器CGI目录下对应的CGI程序中,于是CGI程序在嵌入式Web服务器上按照预定的方法进行处理。然后,CGI程序给客户端发送一个信息,表示请求的任务已经结束。

SSI(Server Side Include,服务器端包含)是一种类似于ASP的基于服务器的网页制作技术。在将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。服务器接收到一个请求后,会在网页数据中搜索<!--#tag-->格式标记,并记录这些tag标志,在嵌入式Web服务器处理完请求后需要返回给用户数据时,找出系统已经注册的tag,并在相应的tag-->后添加所需要的数据。最后,把更新的数据发送给用户,从而实现了用户与嵌入式Web服务器之间的动态交互过程。

2.2 XMLHTTPRequest

XMLHTTPRequest是由一组方法和属性组成的对象,是AJAX技术的核心,所谓的异步交互和局部刷新都是建立在XMLHTTPRequest基础之上的。XMLHTTPRequest可以在提供不重新加载页面的情况下更新网页,XMLHTTPRequest对象提供了对HTTP协议的完全的访问,包括做出POST和HEAD请求以及普通的GET请求的能力。利用JavaScript来创建XMLHTTPRequest对象,当对象成功创建以后,调用open方法来指定请求的服务网页以及请求方式,然后通过send方法将请求发送出去,最后就可以在客户端接收服务器端返回的数据。

3 嵌入式Web交互式实现

嵌入式Web服务器监听用户的请求,根据用户递交的请求提供与之对应的服务,嵌入式Web服务器端收到用户请求后,把存储在嵌入式Web服务器中对应的数据或网页发送给浏览器,完成数据的动态交互。嵌入式Web数据交互式可以通过CGI/SSI和XMLHTTPRequest方式实现。

3.1 CGI实现过程

CGI是基于标准HTML表单递交数据,嵌入式Web服务器上对应的CGI函数响应客户端的请求,CGI方式数据交互将导致整个页面重新加载。HTML中表单格式如下:

CGI交互式过程如图2所示。用户通过Internet向嵌入式Web服务器请求一个HTML文档。嵌入式Web服务器向用户发送一个表单页面。用户填入对应的数据信息并提交给嵌入式Web服务器。服务器接收用户请求,交给嵌入式Web服务器上CGI程序处理。嵌入式Web服务器将更新的HTML文档发送给用户。

图2 浏览器与嵌入式Web通过CGI交互

当用户向嵌入式Web服务器提交数据时,采用的是GET方式。输入的信息以字符串的形式附加action所给定义的URL后面,中间用“?”隔开,各个变量之间用“&”分开,变量与其对应的值之间用“=”连接,空格用“+”代替,特殊意义的字符用“&”表示。在嵌入式 Web服务器端对URL进行解码,当遇到字符“+”时,将它转换成空格;当遇到字符“&”时,表示下一个变量开始;当遇到“=”时表示变量名部分结束[2]。由于GET请求的内容附加在URL后面,而URL的长度是有限制的,所以一次请求的内容不能太多,而嵌入式系统由于其本身就是资源受限系统,数据的交互不可能太多,所以GET方法用于此是合适的。

CGI处理函数运行于嵌入式Web服务器端,当嵌入式Web服务器收到客户端请求的URL之后,解析URL中的参数,提交给对应的CGI处理函数。字符文本提交的CGI函数如下:

当在Web页面中遇到格式为<!--#tag-->的SSI标签时,调用SSI处理函数,将SSI标签转换成对应的文本在网页中显示。SSI函数通过Switch选择语句,解析Web页面中的SSI标签。然后针对不同的标签内容作出对应的响应。CGI/SSI数据交互流程如图3所示。

图3 CGI/SSI数据交互流程

3.2 XMLHTTPRequest实现过程

XMLHTTPRequest方式通过嵌入在HTML文档中的JavaScript来实现网页的交互过程。客户端通过运行HTML文档中的JavaScript程序发送HTTP请求。它是一种特殊的URL,嵌入式Web服务器去文件系统中查找URL中对应的文件。如果查找到对应的文件,嵌入式Web服务器提供相应的响应,然后将嵌入式Web响应返回到客户端浏览器中,返回的状态插入到对应的<Div>标签中。XMLHTTPRequest方式只需要更新部分文本,而不需要刷新整个页面,缩短了网络延时,提高了网络效率。浏览器与嵌入式Web通过XMLHTTPRequest方式交互,如图4所示。

图4 浏览器与嵌入式Web通过HTTPRequest方式交互

JavaScript可以将Web服务器端的任务部分转移到客户端,使客户端实现处理任务的功能。XMLHTTPRequest能实现嵌入式Web与浏览器之间的异步交互。JavaScript内嵌到网页中,使其成为HTML文件的一部分,并通过JavaScript解释器完成解释执行。浏览器中温度数据请求JavaScript函数如下:

上述代码中,Temperature.readyState为HTTP请求的状态,当XMLHttpRequest创建时,其属性为0。它一共有5个状态:Uninitialized(0)、Open(1)、Send(2)、Receiving(3)、Loaded(4)。当属性为4时,表明已经接收到完整的HTTP响应。Temperature.responseText从服务器接收的响应的温度信息,当Temperature.readyState小于3时,其属性为空字符串;当Temperature.readyState为4时,其中保存了完整的温度信息,Temperature.status为服务器返回的状态码,200表示成功,404表示"Not Found"。Temperature.onreadystatechange为调用的事件句柄函数,每次Temperature.readyState属性改变时被调用。Temperature.open()为初始化 HTTP请求参数,send()发送HTTP请求。

服务器端解析对应文件名“/cgi-bin/Temperature-Get”,如果存在对应的文件,则返回一个消息,客户端接收到这个消息并且存储温度信息到对应请求的响应文本Temperature.response Text中,使用文本插入方法“document.getElementById("Temperaturestate").innerHTML= "<div>"+ TemperaturestateresponseText+ "</div>";”把消息在网页中对应的DIV位置处显示。

4 系统测试

系统测试分本机测试与局域网测试两种方式。本机测试就是嵌入式Web服务器通过网线直接连接到PC,局域网测试则是将嵌入式Web服务器连接到局域网中的路由器上。复位嵌入式Web服务器,查看其IP地址,同时修改客户端的IP,使其与嵌入式Web服务器处于同一网段中。在客户端通过“ping 169.254.117.2”(嵌入式 Wb IP)查看网络连接状态。成功连接后,在客户端浏览器中输入“http://169.254.117.2”地址后,浏览器中会显示嵌入式Web交互式页面,如图5所示。通过点击对应的按钮,可以在浏览器中获得各种请求数据。在文本框中输入文本,将数据存入嵌入式Web服务器中,同时存入信息会在嵌入式Web的LCD上显示出来。通过本地和局域网测试,系统性能良好,可应用性强。

结 语

利用嵌入式系统及Internet技术可以实现Web动态数据交互,通过CGI和XMLHTTPRequest方式,成功地在基于LM3S8962平台上完成局域网内Web页面数据动态交互,实现了一个简易的嵌入式Web服务器的功能。嵌入式Web动态交互技术在工业生产的过程控制、机房环境参数的监测以及远程数据采集等方面都有广泛的应用需求。

图5 浏览器端验证测试

[1]牛利兵.远程监控嵌入式Web服务器的设计[D].山西:太原理工大学,2011.

[2]李勇.CGI在嵌入式 WEB服务器中的应用和实现[J].微计算机信息,2008,24(10):110-112.

[3]彭伟.XMLHttp对象在嵌入式 Web实时系统中的应用[J].单片机与嵌入式系统应用,2011(11):29-32.

[4]Texas Instruments.Stellaris LM3S8962Microcontroller DataSheet[EB/OL].[2013-01-06].http://www.ti.com/cn/litv/pdf/spms001h.

猜你喜欢
服务器端浏览器网页
Linux环境下基于Socket的数据传输软件设计
反浏览器指纹追踪
基于CSS的网页导航栏的设计
基于HTML5静态网页设计
基于URL和网页类型的网页信息采集研究
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
环球浏览器
网页制作在英语教学中的应用
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用