999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用Web Service實現嵌入式設備與PC端的無線通信*

2016-06-01 00:46:46
單片機與嵌入式系統應用 2016年3期

劉 兵

(1.承德石油高等專科學校 社科與數理部,承德 067000;2.河北省儀器儀表工程技術研究中心)

?

利用Web Service實現嵌入式設備與PC端的無線通信*

劉兵1,2

(1.承德石油高等專科學校 社科與數理部,承德 067000;2.河北省儀器儀表工程技術研究中心)

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

關鍵詞:Web Service;嵌入式設備;gSoap;WinCE;無線通信

引言

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

1Web Service 技術簡介

1.1Web Service技術原理分析

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

圖1 Web Service技術運行原理簡圖

1.2Web Service技術的工作流程

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

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

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

第三階段的通信主要是向Web Service服務器發送信息服務請求,并等待服務器的應答。

1.3Web Service技術的特點

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

可以實現不同應用程序和在不同系統平臺上開發出來的應用程序之間的通信。與RMI、DOCM、CORBA最大的不同就是,Web Service以SOAP作為基本通信協議,從而避免了復雜的協議轉換。

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

任何支持HTTP和XML 技術的設備都可以擁有和訪問Web Service,不同平臺、不同開發語言均可以調用Web Service。

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

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

(4) 通過SOAP協議實現異地調用

SOAP是Web Service的基本通信協議,是在分散或分布式環境中交換信息,基于XML的協議,通過SOAP協議可以實現不同項目、不同地點,甚至異地調用應用程序。

2Web Service技術的實現

在不同的操作系統下,利用不同的編程語言來實現Web Service技術的方式是不同的,本文采用C++編程語言,利用gSoap來實現Web Service。

2.1gSoap簡介

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

2.2利用gSoap實現Web Service技術

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

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

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

圖2 gSoap開發的Web Service客戶端與服務器端交互示意圖

2.2.1利用gSoap實現Web Service服務器端開發

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

圖3 Web Service服務器端開發流程圖

2.2.2利用gSoap實現Web Service客戶端開發

圖4   Web Service   客戶端開發   流程圖

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

3基于WinCE的嵌入式設備與PC服務器端數據庫無線通信的實例

本節介紹利用Web Service技術來實現一個基于WinCE6.0的ARM9嵌入式設備與PC服務器端數據庫無線通信的實例。

3.1PC服務器端程序開發

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

圖5 demoobjuser數據表

利用Visual Studio 2008新建一個Win32控制臺應用程序,工程建完后,在該工程中新建一個頭文件server.h,在該頭文件中首先需要定義服務器端的一個結構類型數據ns__userInfo:

Struct ns__userInfo{

char name[36];

int id;

}

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

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為數據庫連接類,用于連接所建立的demo.db數據庫,m_GetAllUserInfo_Exec為該類下的一個成員函數,可以實現對數據表demoobjuser中數據的讀取。

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

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的一個運行環境實例,“nPort”為Web Service服務器端綁定的接口,其他一些函數為gSoap所提供的API函數。至此,PC服務器端的程序編寫完畢。

3.2基于WinCE的嵌入式設備客戶端程序開發

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

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”給出的是無線局域網內PC服務器端的IP地址與通信端口。需要注意的是,通信的端口要與所開發的服務器端綁定的端口一致,否則無法實現通信。而soap_call_ns_getInfo則實現了通過客戶端調用PC服務器端ns_getInfo函數的功能,通過該函數實現了對PC服務器端數據庫demo.db中demoobjuser內容的讀取,并將讀取出的內容存儲于變量info中。此時,在該程序中就可以實時地將PC服務器端數據庫中的數據顯示在嵌入式設備的界面中(如圖6),從而實現嵌入式設備與PC服務器端數據庫進行無線通信的功能。

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

結語

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

參考文獻

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

[2] 周毓林.Windows CE.net 內核定制及應用開發[M].北京:電子工業出版社,2005.

[3] 柴曉路.WebService技術系列概述[J].互聯網世界,2002(5):80-83.

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

[5] 饒元,馮博琴.新網絡體系結構—WebServices研究綜述[J].計算機科學,2004(5).

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

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

[3] 鄧乃揚,田英杰.支持向量機—理論、算法與拓展[M].北京:科學出版社,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原理及開發編程[M].北京:北京航空航天大學出版社,2013.

[8] 楊瑋龍,李攀,厲劍.支持向量機在DSP中的實現方法研究[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

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

中圖分類號:TP311

文獻標識碼:A

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

主站蜘蛛池模板: 色欲不卡无码一区二区| 久久亚洲综合伊人| 亚洲无码日韩一区| 人人艹人人爽| 久久精品人妻中文系列| 久青草免费在线视频| 欧美成人第一页| 国产欧美一区二区三区视频在线观看| 毛片免费高清免费| 亚洲精品中文字幕无乱码| 日韩成人在线一区二区| 色偷偷一区二区三区| 久久国产精品国产自线拍| 国产chinese男男gay视频网| 9cao视频精品| 激情亚洲天堂| 精品伊人久久大香线蕉网站| 国产亚洲欧美另类一区二区| 欧美中文字幕一区| 免费看a毛片| 亚洲无线一二三四区男男| 精品亚洲国产成人AV| 亚洲男人在线| 久久精品欧美一区二区| 毛片卡一卡二| 老司机午夜精品网站在线观看 | 亚洲精品无码av中文字幕| 国产亚洲精品91| 日韩成人在线网站| 一级一毛片a级毛片| 精品国产免费观看| 亚洲第一在线播放| 国产福利一区二区在线观看| 国产喷水视频| AV无码国产在线看岛国岛| 亚洲无线国产观看| 欧美高清三区| 女人18毛片久久| 精品国产免费第一区二区三区日韩| 欧美翘臀一区二区三区 | 香港一级毛片免费看| 成年人福利视频| 91无码国产视频| 中文字幕无码制服中字| 天天综合网色中文字幕| 国产福利微拍精品一区二区| 欧美成人手机在线视频| 久久亚洲美女精品国产精品| 五月天婷婷网亚洲综合在线| 91视频区| 在线观看精品国产入口| 亚洲 成人国产| 国产人妖视频一区在线观看| 国产精品福利尤物youwu| 欧美综合激情| 国产小视频a在线观看| 日韩精品毛片| 国内毛片视频| 国产综合另类小说色区色噜噜| 国产精品一区在线麻豆| 亚洲无码在线午夜电影| 精品三级网站| 国产女人18水真多毛片18精品| 国产18在线播放| 一区二区三区精品视频在线观看| 天堂在线www网亚洲| 精品国产www| 国产丝袜第一页| 91精品在线视频观看| 久久精品国产精品青草app| 福利一区三区| 91久久偷偷做嫩草影院精品| 亚洲中文字幕在线精品一区| 久996视频精品免费观看| 丰满人妻一区二区三区视频| 伊在人亚洲香蕉精品播放| 91av成人日本不卡三区| 欧美亚洲另类在线观看| 国产簧片免费在线播放| 欧美国产综合视频| 性欧美在线| 国产精品尹人在线观看|