亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        利用Web Service實現(xiàn)嵌入式設(shè)備與PC端的無線通信*

        2016-06-01 00:46:46
        關(guān)鍵詞:無線通信

        劉 兵

        (1.承德石油高等??茖W(xué)校 社科與數(shù)理部,承德 067000;2.河北省儀器儀表工程技術(shù)研究中心)

        ?

        利用Web Service實現(xiàn)嵌入式設(shè)備與PC端的無線通信*

        劉兵1,2

        (1.承德石油高等??茖W(xué)校 社科與數(shù)理部,承德 067000;2.河北省儀器儀表工程技術(shù)研究中心)

        摘要:介紹了Web Service的運(yùn)行原理與技術(shù)特點(diǎn),給出了利用C++語言借助于gSoap工具包實現(xiàn)Web Service 技術(shù)的方法,最后,利用Web Service開發(fā)了一個基于WinCE的嵌入式設(shè)備與PC端數(shù)據(jù)庫無線通信的實例。

        關(guān)鍵詞:Web Service;嵌入式設(shè)備;gSoap;WinCE;無線通信

        引言

        嵌入式設(shè)備主要由嵌入式處理器、相關(guān)支撐硬件和嵌入式軟件系統(tǒng)組成,它是集軟硬件于一體的可獨(dú)立工作的“器件”。由于嵌入式設(shè)備在處理速度和存儲方面都還存在一定的局限性,而在實際嵌入式程序的開發(fā)中,往往所需要的數(shù)據(jù)量很大,占用資源較多,所以在實際應(yīng)用系統(tǒng)中,需要利用嵌入式設(shè)備與PC服務(wù)器端的數(shù)據(jù)庫進(jìn)行通信,從而獲得所需要的數(shù)據(jù)并將其加以處理和實時顯示?;诖?,針對以Windows CE[1-2](以下簡稱WinCE)為操作系統(tǒng)的嵌入式設(shè)備,本文給出了一種利用Web Service技術(shù)[3-5]實現(xiàn)嵌入式設(shè)備與PC服務(wù)器端數(shù)據(jù)庫無線通信的方法。

        1Web Service 技術(shù)簡介

        1.1Web Service技術(shù)原理分析

        Web Service是一個基于XML的可編程實體,它具有一些能夠通過Web進(jìn)行調(diào)用的API,Web Service客戶端按照定義好的規(guī)范向Web Service服務(wù)器端發(fā)出請求,服務(wù)器端接收請求后,根據(jù)請求內(nèi)容通過調(diào)用Web服務(wù)器端的相應(yīng)API函數(shù)來返回給客戶端數(shù)據(jù)。Web Service采用可擴(kuò)展的標(biāo)記語言(XML)表示數(shù)據(jù)的基本格式,保證無論何種數(shù)據(jù)都可以被自動轉(zhuǎn)換成XSD類型而與平臺無關(guān);數(shù)據(jù)傳輸采用HTTP POST方式;數(shù)據(jù)傳輸格式采用簡單對象訪問協(xié)議(SOAP)調(diào)用遠(yuǎn)程服務(wù),SOAP協(xié)議定義了其消息格式以及通過HTTP協(xié)議的使用方法;使用Web service描述語言(WSDL)描述Web Service及其函數(shù)、參數(shù)和返回值。Web Service的工作原理如圖1所示。

        圖1 Web Service技術(shù)運(yùn)行原理簡圖

        1.2Web Service技術(shù)的工作流程

        在使用Web Service時,包括3個階段的通信:

        第一階段的通信被稱為發(fā)現(xiàn)階段(Discover),其主要作用是確定在服務(wù)器上有哪些服務(wù)。經(jīng)過發(fā)現(xiàn)階段可以確定服務(wù)器一共提供了哪些服務(wù),在使用這些服務(wù)之前還必須知道這些服務(wù)支持怎樣的界面。

        第二階段的通信就是發(fā)送請求階段,獲得Web Service描述語言WSDL。

        第三階段的通信主要是向Web Service服務(wù)器發(fā)送信息服務(wù)請求,并等待服務(wù)器的應(yīng)答。

        1.3Web Service技術(shù)的特點(diǎn)

        (1) 可操作的分布式應(yīng)用程序

        可以實現(xiàn)不同應(yīng)用程序和在不同系統(tǒng)平臺上開發(fā)出來的應(yīng)用程序之間的通信。與RMI、DOCM、CORBA最大的不同就是,Web Service以SOAP作為基本通信協(xié)議,從而避免了復(fù)雜的協(xié)議轉(zhuǎn)換。

        (2) 普遍性,使用HTTP和XML進(jìn)行通信

        任何支持HTTP和XML 技術(shù)的設(shè)備都可以擁有和訪問Web Service,不同平臺、不同開發(fā)語言均可以調(diào)用Web Service。

        (3) Web Service可以穿越防火墻,實現(xiàn)真正的自由通信

        一般要訪問的Web服務(wù)器以及要訪問的Web Service的客戶端很可能位于防火墻后面,都默認(rèn)關(guān)閉其他端口而開發(fā)HTTP端口,而Web Service正是基于HTTP的,所以可以穿越防火墻。

        (4) 通過SOAP協(xié)議實現(xiàn)異地調(diào)用

        SOAP是Web Service的基本通信協(xié)議,是在分散或分布式環(huán)境中交換信息,基于XML的協(xié)議,通過SOAP協(xié)議可以實現(xiàn)不同項目、不同地點(diǎn),甚至異地調(diào)用應(yīng)用程序。

        2Web Service技術(shù)的實現(xiàn)

        在不同的操作系統(tǒng)下,利用不同的編程語言來實現(xiàn)Web Service技術(shù)的方式是不同的,本文采用C++編程語言,利用gSoap來實現(xiàn)Web Service。

        2.1gSoap簡介

        gSoap是一個跨平臺的開發(fā)SOAP和XML應(yīng)用的工具,它使用編譯器技術(shù),為用戶隱藏了WSDL、SOAP、特定XML的實現(xiàn)細(xì)節(jié),同時自動提供XML有效性驗證、內(nèi)存管理和類型安全序列化,從而提供透明的解決方案。gSoap工具可將原有的數(shù)據(jù)類型和用戶自定義的數(shù)據(jù)類型映射成等價的XML數(shù)據(jù)類型,反之亦然。因此,通過一個簡單的API就可得到完美的SOAP互操作性,從而使用戶從 WSDL/SOAP/XML的細(xì)節(jié)中解脫出來,集中精力處理應(yīng)用程序邏輯。gSoap工具支持傳統(tǒng)的C/C++代碼(以及留有C接口的其他編程語言)、嵌入式系統(tǒng)以及那些與其他SOAP程序共享計算資源和信息的實時SOAP/XML應(yīng)用程序之間的集成,可以跨平臺,適用于不同的語言環(huán)境,并且能夠穿透防火墻。

        2.2利用gSoap實現(xiàn)Web Service技術(shù)

        gSoap工具包中提供了兩個可執(zhí)行文件wsdl2h和soapcpp2。其中wsdl2h用來解析wsdl文檔生成描述服務(wù)的C/C++頭文件,soapcpp2用來解析與編譯該頭文件并生成框架代碼文件,其中的主要文件如表1所列。

        表1  gSoap工具包生成的框架文件

        除此之外,gSoap工具包還包含兩個重要的文件:stdsoap2.h和stdsoap2.cpp。其中stdsoap2.h是stdsoap2.cpp運(yùn)行時的頭文件,stdsoap2.cpp是運(yùn)行時的C++庫,包括HTTP/SOAP解析器和運(yùn)行時的支持例程。通過這兩個文件和上述的框架代碼文件,開發(fā)者可以很方便地進(jìn)行Web Service客戶端與服務(wù)器端程序的開發(fā)。gSoap開發(fā)的Web Service服務(wù)器端和客戶端的交互模型如圖2所示[6]。

        圖2 gSoap開發(fā)的Web Service客戶端與服務(wù)器端交互示意圖

        2.2.1利用gSoap實現(xiàn)Web Service服務(wù)器端開發(fā)

        在服務(wù)器端開發(fā)中,首先開發(fā)者要手動輸入C++頭文件,該頭文件里要定義好服務(wù)器端所需的數(shù)據(jù)與方法,然后利用gSoap中的可執(zhí)行程序soapcpp2進(jìn)行編譯,生成服務(wù)器端的框架文件(包括頭文件soapH.h、soapStub.h和stdsoap2.h以及源代碼文件stdsoap2.cpp、soapServer.cpp和soapC.cpp)。除此以外,編譯后還會生成一個與剛剛定義好的頭文件相對應(yīng)的命名空間文件和一個用于描述相應(yīng)服務(wù)的WSDL文檔文件。在Visual Studio 中將以上所有文件導(dǎo)入工程中,成功通過編譯后,Web Service服務(wù)器端框架便搭建成功,此時,程序員只需要在該工程的主程序代碼中將定義好的頭文件中的方法一一實現(xiàn)即可。以上操作流程如圖3所示。

        圖3 Web Service服務(wù)器端開發(fā)流程圖

        2.2.2利用gSoap實現(xiàn)Web Service客戶端開發(fā)

        圖4   Web Service   客戶端開發(fā)   流程圖

        在客戶端開發(fā)中,首先開發(fā)者要利用gSoap中的可執(zhí)行程序wsdl2h,將服務(wù)器端生成的WSDL文件進(jìn)行編譯,從而獲得所需要的C++頭文件,然后,與服務(wù)端程序開發(fā)類似,利用gSoap中的可執(zhí)行程序soapcpp2,對所得到的頭文件進(jìn)行編譯,從而生成客戶端的框架文件(包括soapH.h、SoapStub.h和stdsoap2.h以及源代碼文件stdsoap2.cpp、soapClient.cpp和soapC.cpp),還包括一個對應(yīng)的命名空間文件。同樣,在Visual Studio 中將以上所有文件導(dǎo)入工程中,成功通過編譯后,Web Service客戶端框架便搭建成功,此時,程序員就可以在該工程的主程序代碼中去調(diào)用服務(wù)器端實現(xiàn)的方法了。以上操作流程如圖4所示。

        3基于WinCE的嵌入式設(shè)備與PC服務(wù)器端數(shù)據(jù)庫無線通信的實例

        本節(jié)介紹利用Web Service技術(shù)來實現(xiàn)一個基于WinCE6.0的ARM9嵌入式設(shè)備與PC服務(wù)器端數(shù)據(jù)庫無線通信的實例。

        3.1PC服務(wù)器端程序開發(fā)

        首先,在Windows系統(tǒng)中,利用Sybase公司的SQL Anywhere數(shù)據(jù)庫建立所用數(shù)據(jù)庫,數(shù)據(jù)庫文件名為demo.db,然后,在該數(shù)據(jù)庫中建立一個測試用的數(shù)據(jù)表名為demoobjuser,并向該表中添加數(shù)據(jù),具體數(shù)據(jù)表如圖5所示。

        圖5 demoobjuser數(shù)據(jù)表

        利用Visual Studio 2008新建一個Win32控制臺應(yīng)用程序,工程建完后,在該工程中新建一個頭文件server.h,在該頭文件中首先需要定義服務(wù)器端的一個結(jié)構(gòu)類型數(shù)據(jù)ns__userInfo:

        Struct ns__userInfo{

        char name[36];

        int id;

        }

        此外,還需要定義一個函數(shù)ns_getInfo。其中,ns__userInfo用于接收從數(shù)據(jù)庫中讀取的數(shù)據(jù)內(nèi)容,函數(shù)ns_getInfo用于執(zhí)行對數(shù)據(jù)庫的讀取操作。頭文件編寫完畢后,利用2.2.1小節(jié)中的方法,通過使用gSoap工具包對server.h進(jìn)行編譯來構(gòu)建PC端的服務(wù)器程序。構(gòu)建完成后,在工程中建立一個含有程序入口的主程序源文件server.cpp,在該文件中首先要編寫定義好的ns_getInfo函數(shù),以實現(xiàn)對本地數(shù)據(jù)庫demo.db中demoobjuser內(nèi)容的讀取。該函數(shù)的代碼如下:

        int ns_getInfo(struct soap *add_soap,int id,std::vector* info){

        ::CoInitialize(NULL);

        DataObject databaseConnect;

        databaseConnect.OpenDatabase();

        databaseConnect.m_GetAllUserInfo_Exec(info);

        databaseConnect.CloseDatabase();

        return SOAP_OK;

        }

        其中,DataObject為數(shù)據(jù)庫連接類,用于連接所建立的demo.db數(shù)據(jù)庫,m_GetAllUserInfo_Exec為該類下的一個成員函數(shù),可以實現(xiàn)對數(shù)據(jù)表demoobjuser中數(shù)據(jù)的讀取。

        然后,通過編寫以下代碼,來開啟Web Service服務(wù)。

        int nPort = 8080;

        struct soap fun_soap;

        soap_init(&fun_soap);

        soap_bind(&fun_soap, NULL, nPort, 100);

        while (true){

        int nSlave = (int)soap_accept(&fun_soap);

        if (nSlave < 0){

        soap_print_fault(&fun_soap, stderr);

        exit(-1);

        }

        fprintf(stderr, "Socket connection successful : slave socket = %d ", nSlave);

        soap_serve(&fun_soap);

        soap_end(&fun_soap);

        ::CoUninitialize();

        }

        以上代碼中“fun_soap”為gSoap的一個運(yùn)行環(huán)境實例,“nPort”為Web Service服務(wù)器端綁定的接口,其他一些函數(shù)為gSoap所提供的API函數(shù)。至此,PC服務(wù)器端的程序編寫完畢。

        3.2基于WinCE的嵌入式設(shè)備客戶端程序開發(fā)

        首先利用Visual Studio 2008新建一個Win32智能工程,此時要注意選擇與本實例中的嵌入式設(shè)備硬件平臺相對應(yīng)的SDK。然后按第2.2.2節(jié)中的方法通過編譯服務(wù)器端生成的WSDl以及利用gSoap編譯器來生成客戶端的框架文件。文件生成后,將其導(dǎo)入到工程中,在程序中需要讀取PC服務(wù)器端數(shù)據(jù)庫內(nèi)容的源文件代碼中引入的soapH.h、soapStub.h頭文件以及生成的空間文件,并加入以下程序代碼,來與PC服務(wù)器端進(jìn)行數(shù)據(jù)通信。

        char* server = "http://192.168.1.4:8080";

        struct soap add_soap;

        soap_init(&add_soap);

        std::vector info;

        int id = 0;

        soap_call_ns_getInfo(&add_soap, server, "", id,&info);

        soap_end(add_soap);

        free(add_soap);

        以上代碼中變量“server”給出的是無線局域網(wǎng)內(nèi)PC服務(wù)器端的IP地址與通信端口。需要注意的是,通信的端口要與所開發(fā)的服務(wù)器端綁定的端口一致,否則無法實現(xiàn)通信。而soap_call_ns_getInfo則實現(xiàn)了通過客戶端調(diào)用PC服務(wù)器端ns_getInfo函數(shù)的功能,通過該函數(shù)實現(xiàn)了對PC服務(wù)器端數(shù)據(jù)庫demo.db中demoobjuser內(nèi)容的讀取,并將讀取出的內(nèi)容存儲于變量info中。此時,在該程序中就可以實時地將PC服務(wù)器端數(shù)據(jù)庫中的數(shù)據(jù)顯示在嵌入式設(shè)備的界面中(如圖6),從而實現(xiàn)嵌入式設(shè)備與PC服務(wù)器端數(shù)據(jù)庫進(jìn)行無線通信的功能。

        圖6   基于WinCE 的嵌入式設(shè)備與   PC服務(wù)器端數(shù)據(jù)庫無線通信   的顯示界面

        結(jié)語

        Web Service是服務(wù)器端向客戶端提供的一種跨越互聯(lián)網(wǎng)的服務(wù),是建立在一些通用協(xié)議(如HTTP、SOAP、XML等)基礎(chǔ)之上的。由于這些協(xié)議在涉及到網(wǎng)絡(luò)、操作系統(tǒng)平臺、對象模型和編程語言的選擇時沒有任何傾向和特殊限制,因此,通過該技術(shù),使用不同語言開發(fā)、運(yùn)行在不同平臺上的客戶可以無縫地獲取所需的應(yīng)用。在嵌入式設(shè)備中,由于特定的應(yīng)用和資源相對貧乏,因此,通過利用Web Service可以方便地實現(xiàn)與PC端的數(shù)據(jù)通信,從而達(dá)到資源效率的最大化。

        參考文獻(xiàn)

        [1] 何宗鍵.Windows CE嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2005.

        [2] 周毓林.Windows CE.net 內(nèi)核定制及應(yīng)用開發(fā)[M].北京:電子工業(yè)出版社,2005.

        [3] 柴曉路.WebService技術(shù)系列概述[J].互聯(lián)網(wǎng)世界,2002(5):80-83.

        [4] 王繪,尹治本.WebService的深入剖析與研究[J].電腦知識與技術(shù),2005(33).

        [5] 饒元,馮博琴.新網(wǎng)絡(luò)體系結(jié)構(gòu)—WebServices研究綜述[J].計算機(jī)科學(xué),2004(5).

        [6] 李永.基于Embedded Linux的gSOAP的移植和裁剪[J].微型電腦應(yīng)用,2011,27(1):40-43.

        劉兵(碩士研究生),研究方向為計算機(jī)算法與嵌入式軟件開發(fā)。

        [3] 鄧乃揚(yáng),田英杰.支持向量機(jī)—理論、算法與拓展[M].北京:科學(xué)出版社,2009.

        [4] Burges CJC.A tutorial on support vector machines for pattern recognition[J].Data Mining and Knowledge Discovery,1998,2(2):121-167.

        [5] Chang CC,Lin CJ.LIBSVM:a library for support vector machines[EB/OL].[2015-08].http://www.csie.ntu.edu.tw/~cjlin/libsvm.

        [6] Genow R,Cauwenberghs G.Kerneltron:support vector machine in silicon[J].Neutral Networks,2003,14(5):1426-1433.

        [7] 劉陵順,高艷麗.TMS320F28335 DSP原理及開發(fā)編程[M].北京:北京航空航天大學(xué)出版社,2013.

        [8] 楊瑋龍,李攀,厲劍.支持向量機(jī)在DSP中的實現(xiàn)方法研究[J].計算機(jī)測量與控制,2007,15(1):76-78.

        Wireless Communication Between Embedded Device and PC Using Web Service

        Liu Bing1,2

        (1.Department of Social Science and Mathematics,Chengde Petroleum College,Chengde 067000,China;2.Hebei Instruments and Meters Engineering Technology Research Center)

        Abstract:The operating principle and technical characteristics of Web Service are introduced in the paper,and the method of using C++ language to achieve the Web Service technology with gSoap is given.At last,an example about wireless communication between the embedded device based on WinCE and the database in PC using Web Service is developed.

        Key words:Web Service;embedded device;gSoap;WinCE;wireless communication

        收稿日期:(責(zé)任編輯:薛士然2015-09-17) (責(zé)任編輯:薛士然2015-08-31)

        中圖分類號:TP311

        文獻(xiàn)標(biāo)識碼:A

        * 基金項目:承德市科學(xué)技術(shù)研究與發(fā)展計劃項目(201422115)。

        猜你喜歡
        無線通信
        寬帶脈沖無線電通信關(guān)鍵技術(shù)及應(yīng)用研究
        基于單片機(jī)無線數(shù)顯溫濕度計的設(shè)計
        基于FPGA的語音無線傳輸系統(tǒng)
        無線通信技術(shù)未來發(fā)展趨勢分析
        超寬帶無線通信技術(shù)及其應(yīng)用綜述
        餐飲業(yè)油煙在線監(jiān)控系統(tǒng)的設(shè)計與研究
        無線通信技術(shù)的熱點(diǎn)和發(fā)展趨勢
        無線通信技術(shù)在測繪工程中的應(yīng)用分析
        基于ZigBee的艙內(nèi)人員巡檢系統(tǒng)的應(yīng)用研究
        斗輪堆取料機(jī)控制系統(tǒng)性能優(yōu)化
        91精品91久久久久久| 男女猛烈xx00免费视频试看| 国产免费av片在线观看| 国内精品久久久久久无码不卡 | 野外少妇愉情中文字幕| 国产中文制服丝袜另类| 日韩精品极品视频在线免费| 不卡一本av天堂专区| 亚洲精品无码久久久久去q| 黑人巨大videos极度另类| 永久免费毛片在线播放| 一区二区三区蜜桃av| 女人被狂躁c到高潮视频| 国语对白做受xxxxx在线中国| 亚洲蜜芽在线精品一区| 久久精品国产免费一区二区三区| 午夜裸体性播放| 男女真实有遮挡xx00动态图| 女同另类激情在线三区| 亚洲天堂av福利在线| 国产精品人妻一码二码| 国产2021精品视频免费播放| 午夜少妇高潮免费视频| 国产人成精品免费久久久| 熟女体下毛毛黑森林| 久久99精品久久久久久齐齐百度| 亚洲国产丝袜美女在线| 无码专区一ⅴa亚洲v天堂| 免费观看黄网站在线播放| 亚洲国产成人精品激情| 国产一区二区三区免费av| 日本最新免费二区三区| 亚洲国产中文在线二区三区免| 国产精品不卡在线视频| 久久天堂一区二区三区av| 国产高颜值大学生情侣酒店| 亚洲中文字幕巨乳人妻| 91国产自拍精品视频| 麻豆一区二区三区蜜桃免费| 午夜免费福利在线观看| 成年女人18毛片观看|