新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機系統中Web Service的調用方法研究

        單片機系統中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協議很不現實,實際上為了實現 也沒有必要全部實現,只需實現基本的HTTP1.1協議完成單片機服務器的數據通信即可. 經過分析研究,找出了一種比較簡單有效的HTTP-POST格式.下面通過一個具體例子說明實現的方法.

        用C#實現服務Web1,定義一個處理模擬量數據的方法:

        [WebMethod]

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

        {

        return OK;

        }

        SimulateData方法的參數中,s為下位機站地址,可以用來區分哪個下位機發來的數據,數組a為下位機提交的模擬量數據,數據個數根據實際傳遞的數據來定.

        下面是HTTP-POST請求包數據:

        POST /Web1/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請求最終到達器,根據數據的對應寫入實時數據庫,如果實時性要求不高且數據存儲量不大,可以使用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 Service接口代碼.真正同儀表的通訊由下位機完成,形成分布式,是多線程體系結構,可并發處理多個下位機模塊發送的數據,使得整個系統支持更多的數據點采集,提高整個系統的采集效率.

        4 結束語

        實驗證明,基于本文方法可以快速有效的部署數據采集系統,比傳統的串口服務器采集數據的方法有很多優越性.上位機和下位機通信基于Web Service技術,使得系統的開發工作主要放在下位機和儀表的通信上,提高了系統開發效率,由于Web Service的跨平臺和語言無關性,使得可以方便的維護和修改系統方案,大大減少開發成本.


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 文成县| 鸡西市| 阳信县| 明光市| 通河县| 扶余县| 湘潭市| 汝城县| 交口县| 奇台县| 荆州市| 阳谷县| 隆尧县| 合肥市| 兴文县| 永吉县| 绵阳市| 彭山县| 岳普湖县| 涿州市| 黑龙江省| 阳城县| 东光县| 澜沧| 柳江县| 晴隆县| 陆河县| 镇江市| 宽城| 石棉县| 永济市| 谷城县| 高台县| 建宁县| 绥德县| 霍城县| 扎鲁特旗| 资源县| 凌云县| 柞水县| 衡水市|