XMLHttP对象在嵌入式Web实时系统中的应用

摘要:就Ajax技术中的XMLHttp对象在基于Web的嵌入式远程控制与实时监测系统中的应用开发进行了研究,并基于Microchip TCP/IP协议栈给出了具体的实现方法,有效地解决了客户端Web与嵌入式HTTP服务器的交互问题。
关键词:嵌入式系统;TCP/IP;Web开发;Ajax;XMLHttp;Javascript

引言
传统的Web应用在交互操作过程中频繁出现全页刷新的问题无法避免,即使当前页面中仅有局部信息是需要动态刷新显示的。这不仅影响到界面效果,在实时监测过程中还会明显影响服务器的响应速度。
Ajax技术的出现为解决客户端Web与嵌入式HTTP服务器之间的交互问题提供了重要途径。Ajax是异步Javascript与XML的简称,这一概念由Jesse James Garrett提出,它是一组与Web开发相关的技术,包括基于HTML/XHTML与CSS标准的页面表示、基于DOM的动态显示和交互,以及基于XMLHttpRequest与服务器之间的异步通信。所有上述技术通过Javascript绑定在一起。
嵌入式以太网实时系统开发者可以尝试通过Ajax的核心对象XMLHttp在“后台”与嵌入式HTTP服务器交瓦,对服务器发起远程控制,读取服务器动态返回的监测信息并刷新显示在客户端Web界面中的特定位置,且所有操作均不会导致当前Web界面被全页刷新。
本文以Microchip公司的TCP/IP协议栈为基础,讨论XMLHttp对象在嵌入式Web实时系统中的具体应用方法。所选用的测试电路以PIC18F4 52单片机与以太网接口芯片RTL8019AS为核心,嵌入式HTTP服务器所有Web相关文件保存在系统外部EEPROM存储器中。

1 XMLHttp在客户端Web中的应用
XMLHttp是Ajax技术的核心,由微软公司在IE5.0浏览器中率先推出,后被命名为XMLHttpRequest。
1.1 客户端Javascript函数
1.1.1 创建XMLHttp对象的通用函数
客户端与嵌入式系统HTTP服务器的所有交互都将基于在客户端所创建的XMLHttp对象。该函数在IE中创建XMLHttp对象的语句为:

创建XMLHttp对象后最重要的操作是设置onreaclystatechange属性(非IE中为onload),为其绑定异步回调函数。当XMLHttp对象状态变化时,所指定的回调函数将自动处理服务器回应数据。
1.1.2 客户端发送控制命令的函数
(1)Send_Control_CMD(URL,Html_id)
该函数可由客户端Web中的控制命令按钮点击事件onClick触发调用,它调用CreateXMLHttpObj创建XMLHttp对象,设置回调函数,然后以GET方法对HTTP服务器发起请求。函数的第一个参数URL可以是控制命令串,也可以是CGI、HTML及其他各种Web文件名。如果要求在客户端Web中显示HTTP服务器返回信息,则需要设置第二个参数Html_id。例如,在发送控制命令点亮系统中某个指示灯后,要求将服务器返回的该指示灯的当前状态显示在客户端。所设置的参数Html_id是客户端Web页中的某个容器的ID,返回信息将显示到该容器中。如果不需要服务器回应文本信息,或对回应信息不予处理,可将该参数设为空。函数具体实现如下:

Send_Control_CMD在每次被涮用时首先创建一个通用对象Obj,然后创建XMLHttp对象,并将其保存在自定义的Obj.xmlhttpobj属性中,随后调用XMLHttp对象的open方法与send方法,调用格式为:
oXMLHttpRequest.open(bstrMethod,bstrUrl,varAsync,
bstrUser,bstrPassword);
oXMLHttpRequest.send(varBody);
其中open方法的bstrMethod参数为HTTP请求的方法,例如所选择的“GET”方法,bstrUrl参数为请求的URL地址,在本文讨论的嵌入式Web实时系统中,它用来表示控制命令串,譬如用来启动外部直流电机的控制命令串“0?1=MOTOR”,varAsync参数用于指定当前请求是否为异步方式,默认为true,最后两个参数提供帐号密码,用于服务器验证。通过open方法初始化XMLHttp对象以后,要用send方法发送请求到HTTP服务器并等待回应。由于XMLHttp对象被设为异步模式,send调用将不会被阻塞,XMLHttp对象的回调函数mReadyCallBack将在HTTP服务器回应时异步执行。

标签: 机器人

猜你喜欢