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

物聯網設備精簡Web服務實現框架設計

2019-03-29 11:54:42李光明黃立昌
物聯網技術 2019年2期
關鍵詞:物聯網

李光明 黃立昌

摘 要:隨著物聯網行業的發展,機器設備都要提供Web服務實現網上操作與管理。針對其配置與管理復雜的局限性,目前提供的Web服務大多依賴于第三方軟件。通過采用微軟.NET框架中Http Listener類實現本地PC端應用軟件對遠程瀏覽器HTTP請求報文的監聽,從而實現HTTP協議的握手,利用SQL Server數據庫實現Web服務端和客戶端的實時通信,同時設計一種比較簡潔的Web服務實現框架。通過實現步進電機的Web服務對該框架進行測試。實驗結果表明,該框架在實現Web服務的同時,系統架構精小,無需配置Web服務軟件,系統可移植性較強。

關鍵詞:物聯網;Web;Http Listener;工廠模式

中圖分類號:TP311.1文獻標識碼:A文章編號:2095-1302(2019)02-00-04

0 引 言

近些年,隨著物聯網行業的興起,機器設備都在朝著智能化方向發展。其中典型的特征就是機器設備具有“連網”功能,能夠實現網上遠程控制,從而把操作人員從機器設備身邊解放出來,減少機器污染對人體的傷害。而機器設備的“連網”功能可通過提供設備的Web服務實現,同時Web技術的發展也為實現Web服務提供了許多方式。一般情況下,實現高性能的Web服務需要借用I2S,Apache等第三方服務軟件[1],但是每一個Web服務軟件在運行前都需前期配置,實現過程比較復雜,系統龐大,不易于管理。而利用微軟.NET框架下的Http Listener類可實現精簡的Web服務,同時能夠避免借用Web服務軟件帶來的問題,使系統變得清晰,容易理解,減少一些繁鎖的配置。

基于物聯網設備實現其“連網”功能只需一些基本Web服務就可滿足,且設備的種類較多,借用Http Listener類和工廠模式,本文設計了一套適合于物聯網設備的精簡Web服務實現框架。

1 Web服務實現框架

Web服務是一組模塊化的API,可通過網絡對該API進行調用,執行遠程系統的請求服務,從而實現機器設備間跨網、平臺的相互操作及數據交互。為了實現對物聯網設備的跨網和平臺實時控制,需要實現其Web服務。

由于物聯網設備種類較多,為提高框架的通用性,以適用于不同的物聯網設備,本文設計的簡易Web服務采用工廠設計模式,將框架分成三層。頂層是邏輯控制模塊;中間層是工廠類;底層由控制函數模塊、HTTP應答模塊和數據訪問模塊組成。它們相互作用,實現設備的本地控制和Web服務兩個功能,軟件框架結構如圖1所示。

1.1 邏輯控制模塊

邏輯控制模塊作為軟件的邏輯控制中心,通過調用工廠類中函數在邏輯控制模塊實例底層各模塊中的控制函數類,利用控制函數類調用控制函數實現對設備的邏輯控制。邏輯控制模塊同時具有顯示作用,在實現具體操作的同時也可將設備的實時狀態顯示在操作界面。

其中,邏輯控制模塊和控制函數模塊的主要作用是實現設備的本地控制,而在實現本地控制的基礎上借助HTTP應答模塊和數據訪問模塊實現Web服務。

1.2 工廠類

工廠類來源于工廠設計模式,其主要思想是把類的創建封裝到工廠類的函數中[2],當需要對象時,無需親自創建,只需通過調用工廠類中的函數就可得到類。因此工廠設計模式能夠把類的創建和使用相分離,減小程序間的耦合度,提高復用性。

為了適用于不同的物聯網設備,本文設計的Web實現框架需提高通用性。因此借用工廠類作為中間層封裝底層各模塊中類的創建,減小邏輯控制模塊與其他三個模塊的耦合度。例如,當要實現不同設備的Web服務時,只需更新控制函數類,在工廠類中進行新類的創建即可,邏輯控制模塊無需修改代碼。

1.3 底層模塊

底層模塊包括控制函數模塊、HTTP應答模塊和數據訪問模塊,各模塊由接口和類組成。其中,接口中封裝的是各模塊的功能函數,而模塊中的類需要繼承接口對各功能函數進行具體實現。通過借用接口把各模塊中類的創建封裝在工廠類的函數中,供邏輯控制模塊調用。

1.3.1 控制函數模塊

作為設備控制的直接程序,控制函數模塊包含對設備進行操作的各種函數。通常情況下,對設備的控制主要通過設備的初始化、起停控制、狀態讀取和參數設置等操作實現,因此控制函數類主要是對以上四個功能的函數進行實現。

1.3.2 HTTP應答模塊

HTTP協議作為實現Web服務的基礎,建立在TCP/IP協議基礎上,對HTTP協議報文的監聽一般需借用第三方Web服務軟件,雖然Web服務軟件可實現高性能Web服務,但是配置繁瑣。而物聯網設備通常只需一些簡單的Web服務,同時.NET中的Http Listener類是對TCP/IP協議的封裝,因此使用Http Listener類可以較容易地在HTTP應答模塊中創建響應HTTP請求的簡單HTTP協議偵聽器。在監聽到網頁請求后向客戶端返回HTML文件,通過瀏覽器對HTML文件的渲染得到控制界面就能實現設備的Web服務。因此該模塊的類中只需借用Http Listener類實現HTTP請求報文監聽和HTML文件響應兩個功能函數。

1.3.3 數據訪問模塊

由于HTTP是一個短連接的通信方式,每次連接只持續較短的一段時間,如果要用HTTP協議實現Web服務端和客戶端的實時通信,則需要采用輪詢方式[3]。但實現輪詢方式時,無論數據是否發生變化,都要間隔一段時間向服務端發送一個請求,對服務器造成了較大壓力。雖然Web Socket可以簡單方便地實現實時通信,但需借助Web服務器。而本文實現的Web服務框架需精簡系統,因此借用數據庫作為中間橋梁實現服務端和客戶端的數據交互。

數據訪問模塊的功能是將設備狀態信息寫進數據庫供遠程客戶端讀取,同時從數據庫中讀取遠程客戶端對設備的操作信息以及HTML文件中的Java Script代碼,實現服務端和客戶端的數據實時交互。此外,還可實現設備歷史數據查詢和大數據分析。要實現以上功能只需在數據訪問模塊中封裝數據庫的增、刪、改、查函數即可。

2 步進電機Web服務實現

由于步進電機應用廣泛,且和其他設備一樣實現“連網”和遠程跨網控制只需簡單的Web服務就可滿足需求,因此本文以實現步進電機的Web服務為例,說明如何利用Http Listener類采用C#編程實現Web服務。

2.1 步進電機Web服務系統結構

本文設計的軟件框架只用于開發步進電機控制軟件,是Web服務的服務端。要實現步進電機的Web服務和跨網控制,還需要步進電機、客戶端和SQL Server數據庫。由以上四部分組成步進電機Web服務系統,如圖2所示。

步進電機作為被控制和管理的設備,是Web服務的落腳點。

電機控制軟件作為Web服務端,是整個結構的核心部分??刂栖浖捎肅#作為開發語言,框架軟件包括邏輯控制、控制函數、HTTP應答、數據訪問和工廠類五個模塊。

Web客戶端即瀏覽器,需向服務端發送網頁請求報文,在收到響應報文中的HTML文件后,對HTML文件進行渲染得到步進電機遠程控制界面,從而實現步進電機的Web服務。

SQL Server數據庫作為Web服務端和客戶端實時通信的中間橋梁,在本地PC機中通過C#代碼操作數據庫,而遠程瀏覽則利用接收到的HTML文件中的Java Script程序對SQL Server數據庫進行操作,實現Web服務端和客戶端的實時數據通信。

2.2 步進電機控制軟件實現

本文設計的框架中,工廠類作為中間層主要是隔離模塊,而其他四個模塊則是步進電機控制軟件的實現基礎。

2.2.1 邏輯控制模塊

邏輯控制模塊的主要功能是調用控制函數模塊中的函數,實現步進電機的邏輯控制和狀態顯示,實現過程可分為以下三步:

(1)步進電機初始化

工作之前,一般需對機器設備進行基本參數設置,在對步進電機進行實時控制前需對電機和PC機的USB通信進行初始化。初始化的主要過程:在程序操作界面起??丶癈lick”事件函數中,依次調用控制函數模塊中的OpenDevi-ce( )函數和SetTimeout( )函數,打開USB串口,設置USB通信超時時間;在USB串口打開后調用WriteData( )函數,對電機的衰減模式電壓和電機驅動電流進行設置,從而完成對電機的初始化。

(2)步進電機轉速和行進距離控制

目前,對步進電機的控制主要是對步進電機轉速和行進距離的控制,再利用圓弧和直線的插補算法可合成工程上所需的行進路線。

完成初始化后,根據步進電機提供的USB通信數據表將控制軟件界面中的轉速和行進距離輸入控件中的數據寫入到字節數組中對應的字節中,通過調用WriteData( )函數將控制命令字節數組寫入驅動器中實現對步進電機的控制。

(3)步進電機運行狀態讀取

在實現對電機進行控制的同時也需顯示電機的工作狀態,為操作人員提供操作參考數據。通過調用ReadData( )函數從USB串口中讀取電機狀態字節數組,然后根據電機提供的USB通信數據表對所讀取的狀態字節數組進行解析,再將解析結果顯示在軟件界面相對應的顯示控制中。

2.2.2 控制函數模塊

在步進電機控制過程中,轉速和行進距離是比較常用的兩個參數,而且這兩個參數有取值范圍限制。因此在電機控制類中定義電機轉速Servo_Speed和電機行進距離Servo_Distance屬性,對電機轉速字段servo_speed和行進距離字段servo_distance進行保護和取賦值限定。電機轉速和行進距離不僅要進行寫入也要讀取,因此屬性定義時要有get和set訪問器。

控制函數類作為控制函數模塊的主體,其實現的函數主要有以下幾個:

OpenDevice( ):打開電機驅動器;

CloseDevice( ):關閉電機驅動器;

SetTimeout( ):設置USB數據讀寫超時時間;

WriteData( ):寫入控制命令數據塊;

ReadData( ):讀取控制命令數據塊。

以上控制函數通過引用步進電機驅動器提供的DLL動態鏈接庫中所對應的外部函數,在電機控制類中對所引用的函數進行外部函數聲明實現。

2.2.3 HTTP應答模塊

HTTP應答模塊的功能是對HTTP請求作出反應,其實現過程是先對HTTP請求進行監聽,然后向客戶端響應HTML文件。

(1)遠程瀏覽器HTTP請求報文監聽

對HTTP請求報文的監聽主要通過創建HTTP協議偵聽器完成,偵聽器創建的部分源代碼如下:

HttpListener listener = new HttpListener();

listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;

listener.Prefixes.Add(“http://192.168.0.21:9216/”);

listener.Start();

HttpListenerContext context = await listener.GetContextAsync();

HttpListenerRequest request = context.Request;

本文利用Prefixes屬性將偵聽器綁定到9216端口上,也可根據需要綁定到其他未被占用的端口,而Authentication Schemes屬性的功能是設置是否允許匿名和無身份驗證的客戶端訪問。在執行Start( )函數后,開始監聽瀏覽器的HTTP請求。在接收到HTTP請求時GetContextAsync( )函數會返回一個HttpListenerContext類,利用該類實現HTML文件響應。為了實現對客戶端網頁請求的實時監聽,該段程序需要分配子線程循環執行。

(2)HTML文件響應

返回HttpListenerContext類后,該類的Response屬性返回一個HttpListerResponse類。通過HttpListerResponse類可響應遠程瀏覽器的請求,給遠程瀏覽器響應HTML文件,從而實現對瀏覽器的Web服務。具體源代碼如下:

HttpListenerResponse response = context.Response;

response.ContentType = “text/html;charset=utf-8”;

response.ContentLength64 = bytes.Length;

System.IO.Stream output = response.OutputStream;

output.Write(bytes, 0, bytes.Length);

output.Close();

為了實現對瀏覽器的實時響應,該段代碼需要和監聽代碼在同一子線程,并且在監聽代碼后循環執行。代碼中使用ContentType屬性設置響應文件的格式,如果不設置,瀏覽器會將文件以.txt格式顯示在窗口上。而Write(bytes,0, bytes.Length)函數的功能則是向瀏覽器傳遞響應文件,其中參數bytes為一個字節類型的數組,該數組存放了HTML文件的二進制數據。

2.2.4 數據訪問模塊

數據庫太小不利于系統擴展,太大不利于管理,因此選用中型數據庫SQL Server作為中間橋梁實現服務端和瀏覽器的數據交互。SQL Server表中不僅存儲步進電機的狀態信息,如實時轉速、周期行進距離與串口通信狀態等,同時還存儲來自客戶端的操作信息,如轉速給定、行進距離給定、正反轉與起停等。

在服務端,電機控制軟件的C#代碼將電機的實時狀態寫進數據庫,同時從數據庫中讀取瀏覽器對電機的操作數據,根據操作數據調用控制函數模塊中相應的控制函數,實現電機的遠程操作。

在客戶端實現對數據庫的操作需借助Java Script代碼,因此要在HTML文件中嵌入對數據庫進行操作的Java Script函數,將在瀏覽器中對步進電機的操作數據寫進數據庫中,同時將數據庫中存放的電機狀態信息讀出,并顯示在瀏覽器網頁上。

3 Web服務測試

將步進電機驅動器USB數據線接入本地PC機,運行控制軟件,對電機參數進行設置,啟動按鈕,即可實現對電機的控制??刂栖浖缑嫒鐖D3所示。

軟件運行后,在同一局域網內的瀏覽器中輸入IP地址及其端口號192.168.0.21:9216,瀏覽器將收到的HTML文件渲染到瀏覽器窗口,即步進電機遠程控制界面。遠程控制界面如圖4所示。

若要實現外網Web服務,只需向網絡運營商申請外網IP地址,或者借用花生殼軟件將本機IP映射到外網即可實現。

4 結 語

從對步進電機Web服務的測試過程可以看出,本文設計的Web服務實現方案可以很好地應用,在實現既定功能的同時系統也能穩定運行。該方案不僅規避了借用Web服務軟件帶來的復雜配置過程,同時精簡了系統,提高了軟件的可移植性。

本文只用了兩個步進電機進行測試,在物聯網行業中類似步進電機只需向外提供簡單Web服務的設備還大量存在。而本文設計的Web實現框架采用工廠模式,各模塊間的耦合度低,且具有很強的可擴展性,因此只要在框架中添加不同設備的模塊即可實現其他物聯網設備的Web服務,從而對分布式物聯網設備進行集中管理。

參 考 文 獻

[1]秦元培.使用C#開發HTTP服務器系列之Hello World [EB/OL]. http: //blog.csdn.net/qinyuanpei/article/details/51757148,2016.

[2]葛萌,歐陽宏基.工廠設計模式的研究與應用[J].計算技術與自動化,2017,36(2):136-140.

[3]祝瑞,車敏.基于HTTP協議的服務器程序分析[J].現代電子技術,2012,35(4):117-119,122.

[4] EGBENIMI B E, SANDEEP B.Simplifying the abstract factory and factory design patterns[J]. ARPN journal of science and technology,2014,4(12):789-794.

[5]高揚.基于.NET平臺的三層架構軟件框架的設計與實現[J].計算機技術與發展,2011,21(2):77-80,85.

[6]李光明,孫英爽,黨小娟.基于安卓的遠程監控系統的設計與實現[J].計算機工程與設計,2016,37(2):556-561.

[7]杜超,林開偉,陳曼雯.物聯網智能示波器研究與設計[J].物聯網技術,2017,7(11):36-39,41.

[8]劉立偉,司冬雨,白潔.基于LabVIEW Web服務的物聯網發電設備遠程監測系統應用[J].自動化技術與應用,2014,33(10):82-84.

[9] SERNA F, CATAL?N C, BLESA A, et al. “Predictive maintenance surveyor” design pattern for machine tools control software applications[C]// Emerging Technologies & Factory Automation. IEEE, 2011:1-7.

[10]蔡昭權.基于C#的無I2S的Web Services服務[J].計算機工程與設計,2007(9):2230-2232.

[11]劉偉,胡志剛,閻朝坤.C#設計模式[M].北京:清華大學出版社,2013.

猜你喜歡
物聯網
基于物聯網的無線測溫模塊設計
軟件導刊(2016年9期)2016-11-07 21:56:29
基于物聯網ZigBee技術的智能家居監控系統 
軟件導刊(2016年9期)2016-11-07 21:32:45
物聯網監測技術在G15W112邊坡的應用
基于物聯網的健康管理服務模式
基于物聯網的煤礦智能倉儲與物流運輸管理系統設計與應用
基于高職院校物聯網技術應用人才培養的思考分析
如何在高校架設學生洗衣服務系統
科技視界(2016年22期)2016-10-18 17:23:30
基于無線組網的智慧公交站點信息系統研究與實踐
基于LABVIEW的溫室管理系統的研究與設計
論智能油田的發展趨勢及必要性
主站蜘蛛池模板: 91国内外精品自在线播放| Aⅴ无码专区在线观看| 天天摸天天操免费播放小视频| 91在线国内在线播放老师| 亚洲色图欧美在线| 伦伦影院精品一区| 丝袜亚洲综合| 国产精品久久久久久久伊一| 色综合中文| 91网址在线播放| 亚洲欧美自拍中文| 欧美va亚洲va香蕉在线| 国产在线小视频| 国产综合精品日本亚洲777| 欧美国产日韩一区二区三区精品影视| 国内a级毛片| 亚洲天堂免费| 美女国产在线| 99激情网| 亚洲女同欧美在线| 国产乱人乱偷精品视频a人人澡| 国产激情影院| 91尤物国产尤物福利在线| 欧美一级一级做性视频| 嫩草在线视频| 无码国产伊人| 亚洲中文字幕手机在线第一页| 亚洲国产精品一区二区高清无码久久 | 亚洲系列无码专区偷窥无码| 免费又黄又爽又猛大片午夜| 久久久久亚洲精品无码网站| 亚洲第一黄色网址| 亚洲日韩精品无码专区| 成人午夜免费观看| 日韩高清一区 | 亚洲av无码成人专区| 四虎国产永久在线观看| 欧美性精品不卡在线观看| 国产色婷婷| 亚洲精品无码不卡在线播放| 青青草国产在线视频| 国产国拍精品视频免费看| 99资源在线| 亚洲欧美在线综合一区二区三区| 欧美日韩国产成人在线观看| 亚洲精品视频在线观看视频| 精品成人免费自拍视频| 国产正在播放| 国产精品对白刺激| 91精品啪在线观看国产60岁| 国产自在线播放| 天天色综合4| 久久99精品久久久久久不卡| 国产精品视屏| 国内精品视频| 国内精品一区二区在线观看| 久久综合九色综合97网| 国产成人区在线观看视频| 不卡色老大久久综合网| 亚洲黄色成人| 免费全部高H视频无码无遮掩| 真实国产精品vr专区| 国产产在线精品亚洲aavv| 一级做a爰片久久免费| 一区二区三区在线不卡免费| 国产精品永久久久久| 二级特黄绝大片免费视频大片| 国产农村妇女精品一二区| 国产福利免费在线观看| 国产亚洲第一页| 先锋资源久久| 亚洲欧美在线精品一区二区| 久久综合一个色综合网| 国产精品女人呻吟在线观看| 呦女精品网站| 色偷偷男人的天堂亚洲av| 国产av无码日韩av无码网站| 国禁国产you女视频网站| 国产91麻豆视频| 国产精品免费p区| 思思热在线视频精品| 激情亚洲天堂|