单片机系统中Web Service的调用方法研究

时间:2009-02-25来源:网络

图1 单片机系统结构

实验中选用了广州周立功单片机发展有限公司开发的一款嵌入式网络模块ZNE-100T,它内部集成了TCP/IP 协议栈,利用它可以轻松完成嵌入式设备的网络功能,另外为了测试方便直接使用了ZNE-100T的评估板.通过周立功公司提供的配置软件可以设置网络模块的参数,包括IP地址、子网掩码、网关、串口的波特率、端口工作模式、目标IP 地址和目标端口等,特别说明的是端口工作模式,由于HTTP协议是基于TCP的,所以实验中模式设为TCP Client模式,目标端口默认设置为80.

(2)HTTP-POST消息格式

Internet标准定义了两个HTTP协议的标准文档:RFC1945和RFC2616[6].这两个文档分别描述了HTTP/1.0和HTTP/1.1的实现标准.这两个版本的HTTP协议最大区别在于前者不支持保持连接,规定每次的HTTP请求和响应后都要关闭TCP连接,而后者支持持久连接,这意味着可以打开一次TCP连接进行多次请求/响应,大大提高了性能. 由于单片机系统的处理效率低、资源有限等原因,在其上实现完整HTTP协议很不现实,实际上为了实现Web Service调用也没有必要全部实现,只需实现基本的HTTP1.1协议完成单片机系统和Web服务器的数据通信即可. 经过分析研究,找出了一种比较简单有效的HTTP-POST格式.下面通过一个具体例子说明实现的方法.

用C#实现Web服务WebService1,定义一个处理模拟量数据的方法:

[WebMethod]

public string SimulateData(byte s,float[] a)

{

return OK;

}

SimulateData方法的参数中,s为下位机站地址,可以用来区分哪个下位机发来的数据,数组a为下位机提交的模拟量数据,数据个数根据实际传递的数据来定.

下面是HTTP-POST请求包数据:

POST /WebService1/service1.asmx/SimulateData HTTP/1.1

Host: 127.0.0.1

Content-Type: application/x-www-form-urlencoded

Content-Length: 43

s=1a=100.0a=100.0a=100.0a=100.0a=100.0

上面为一个合法的HTTP-POST协议的包实例, “/WebService1/service1.asmx/SimulateData”为要调用的Web Service的方法名及其服务地址,最后一行为真正的有效数据信息,数据包括采集站地址,本例中为1,以及5个模拟量数据,本例中为5个100.0.在HTTP-POST包中除了数据域以外,“Content-Length: 43”中的43会根据数据域实际字节个数在下位机中由程序设置,表示提交的有效数据字节数.由此可以看出,只要加上正确的HTTP请求头、相应的Web Service地址,并且按照HTTP1.1 POST规范设置数据域数据就可以实现简单的HTTP-POST协议,在单片机系统中只需把这些数据通过串口发出,剩下的工作由嵌入式网络模块实现,和编写普通的串口发送程序一样简单.经络模块转化后的HTTP-POST请求最终到达Web服务器,根据数据的对应写入实时数据库,如果实时性要求不高且数据存储量不大,可以使用ACCESS数据库,不然可以使用专用的数据库服务器,如Oracle和SQL Server.

调用Web Service后也会返回给下位机数据以表示执行结果,如果下位机不关心执行结果可以忽略返回的数据,否则可以根据需要进行相应的处理,下面给出作者实验时的返回数据:

HTTP/1.1 200 OK

Date: Thu, 08 Feb 2007 07:45:51 GMT

Server: Microsoft-IIS/6.0

MicrosoftOfficeWebServer: 5.0_Pub

X-Powered-By: ASP.NET

X-AspNet-Version: 1.1.4322

Cache-Control: private, max-age=0

Content-Type: text/xml; charset=utf-8

Content-Length: 101

?xml version=1.0 encoding=utf-8?>

string xmlns=okhttp://219.231.160.11/webservice1>ok/string>

上面的“ok”为方法SimulateData执行正确后返回的数据.

3 优点

基于本文提出的方法可以方便的利用单片机构建基于工业以太网的数据采集系统,有以下优点:

(1)可以方便的集成现有设备和仪表的数据采集.只要知道仪表设备的通讯协议,在下位机实现数据通讯,把采集到的数据封装为HTTP-POST请求包通过串口发出即可.

(2)采用工业交换以太网,基于HTTP协议,同时满足局域和远程采集的需要.可以把该系统连至Internet,Web Service和下位机系统可以不在同一地理位置,而且Web Service可以同时处理多个不同地理位置提交的数据,方便实现数据集中,能更好的管理和使用数据.

(3)方便维护和升级,方便增加采样点.可以根据需要随意增加下位机,做到需要几个模块调试增加几个模块.

(4)不同于传统的专用采集服务器采集数据模式,上位机服务器的功能由Web服务提供,不需要编写专门的数据接收程序和上位机采集程序,只需编Web Service接口代码.真正同仪表的通讯由下位机完成,形成分布式数据采集,Web服务是多线程体系结构,可并发处理多个下位机模块发送的数据,使得整个系统支持更多的数据点采集,提高整个系统的采集效率.

4 结束语

实验证明,基于本文方法可以快速有效的部署数据采集系统,比传统的串口服务器采集数据的方法有很多优越性.上位机和下位机通信基于Web Service技术,使得系统的开发工作主要放在下位机和仪表的通信上,提高了系统开发效率,由于Web Service的跨平台和语言无关性,使得可以方便的维护和修改系统方案,大大减少开发成本.

1 2

关键词: 调用 方法研究 Service Web 系统 单片机 单片机 嵌入式网络模块 Web服务 数据采集 因特网

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版