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

基于Zigbee的數(shù)據(jù)監(jiān)測上位機通信接口設(shè)計

2014-06-27 05:48:29鄒學(xué)玉吳君彥長江大學(xué)電子信息學(xué)院湖北荊州434023
關(guān)鍵詞:數(shù)據(jù)庫

鄒學(xué)玉,吳君彥 (長江大學(xué)電子信息學(xué)院,湖北 荊州 434023)

基于Zigbee的數(shù)據(jù)監(jiān)測上位機通信接口設(shè)計

鄒學(xué)玉,吳君彥 (長江大學(xué)電子信息學(xué)院,湖北 荊州 434023)

基于Visual Basic 6.0與SQLServer2005,根據(jù)MSComm控件的OnComm事件中的Comm Event值來實現(xiàn)Zigbee網(wǎng)關(guān)節(jié)點的數(shù)據(jù)收發(fā)送和解析等操作,利用ADO2.0對象模型與SQLServer2005連接來實現(xiàn)采集數(shù)據(jù)的存儲。研究表明,采用在內(nèi)存中構(gòu)建動態(tài)多叉樹數(shù)組存儲所有節(jié)點最新數(shù)據(jù)的方法能夠加快遍歷所有節(jié)點當(dāng)前數(shù)據(jù)信息的速度,同時通過多叉樹和節(jié)點的數(shù)據(jù)庫操作方法可以快速獲取節(jié)點的歷史記錄信息。

通信接口;數(shù)據(jù)解析;動態(tài)多叉樹

傳統(tǒng)數(shù)據(jù)采集系統(tǒng)中,節(jié)點一般采用有線連接方式,擴展性和可移植性差,而且成本功耗都比較高。ZigBee作為一種低速率、低成本、低功耗、近距離的雙向無線通信技術(shù),可廣泛應(yīng)用與工業(yè)控制、智能家居、醫(yī)療監(jiān)控等各種領(lǐng)域[1]。基于ZigBee技術(shù)的節(jié)點續(xù)航能力強、靈活性高,能夠適應(yīng)多變的現(xiàn)實環(huán)境。ZigBee技術(shù)可實現(xiàn)3種不同的傳輸速率,即20kbps、40kbps以及250kbps[2]。對于節(jié)點發(fā)送的數(shù)據(jù)幀比較小,如波特率為38400bps的應(yīng)用場合,當(dāng)節(jié)點將數(shù)據(jù)幀發(fā)送到上位機時,可以用ZigBee技術(shù)將數(shù)據(jù)傳輸?shù)絽f(xié)調(diào)器,協(xié)調(diào)器再通過串口將數(shù)據(jù)傳給上位機。將上位機串口的波特率設(shè)置為Zigbee協(xié)調(diào)器的波特率一致,即可接收到Zigbee網(wǎng)絡(luò)采集的數(shù)據(jù)。

上位機監(jiān)控終端軟件可用VC++6.0與MySQL相結(jié)合的方式實現(xiàn)采集數(shù)據(jù)中心的管理系統(tǒng)[3],也可以用VB6.0。由于VB6.0是可視化編程開發(fā)平臺,其擁有面向?qū)ο蟮某绦蛟O(shè)計思想,并且引入了“控件”的概念,使得大量已經(jīng)編好的功能控件可以直接使用,無需調(diào)用Windows API函數(shù),只需設(shè)置控件的相應(yīng)屬性值即可,大大縮短了開發(fā)的周期和難度[4]。另外,VB6.0對上位機配置要求低,編譯后的程序體積比VB.NET小,而且執(zhí)行效率高,對上位機硬件配置與操作系統(tǒng)要求不高,所以筆者采用VB6.0作為軟件開發(fā)工具。SQLServer2005簡單易操作,同為微軟產(chǎn)品,能夠很好地與VB6.0兼容,因此選擇SQLServer2005作為數(shù)據(jù)庫平臺。

數(shù)據(jù)監(jiān)測上位機具有串口通信、數(shù)據(jù)存儲、網(wǎng)絡(luò)拓撲動態(tài)顯示、用戶管理、閾值管理、監(jiān)測數(shù)據(jù)曲線動態(tài)繪制等功能。下面,筆者利用MSComm控件和ADO2.0對象模型編寫的串口通信程序、動態(tài)多叉樹的數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫的構(gòu)建,以實現(xiàn)數(shù)據(jù)中心中的主要軟件模塊-通信監(jiān)測模塊的設(shè)計,主要包括串口通信、數(shù)據(jù)幀解析、數(shù)據(jù)庫建立與連接。

1 串口通信設(shè)計

1.1 接口描述

當(dāng)傳感器網(wǎng)絡(luò)的Zigbee網(wǎng)關(guān)節(jié)點不斷地將網(wǎng)絡(luò)節(jié)點中監(jiān)測到的溫度、煙霧等信息發(fā)送給上位機時,上位機的通信模塊必須及時響應(yīng)接收數(shù)據(jù)。數(shù)據(jù)監(jiān)測上位機通信接口采用VB6.0中MSComm控件,利用串行端口傳輸和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能,具體包括2種處理通訊方式,一種是事件驅(qū)動通訊,利用OnComm捕獲并處理通訊時間;另一種是通過檢查CommEvent的值,來查詢事件和錯誤[5]。設(shè)計中采用第1種方式,在用戶界面設(shè)置好相應(yīng)的控制參數(shù),如波特率為38400bps、無校驗位、8數(shù)據(jù)位、1位停止位等。

當(dāng)傳感器網(wǎng)絡(luò)節(jié)點監(jiān)測的的溫度、煙霧等信息發(fā)送給上位機時,將觸發(fā)監(jiān)測程序中MSComm控件的OnComm事件,進而改變Com Event的值,程序根據(jù)Com Event的值執(zhí)行相應(yīng)的操作,如解析數(shù)據(jù)、發(fā)送數(shù)據(jù)、錯誤分析等,然后更新內(nèi)存節(jié)點樹中當(dāng)前節(jié)點的實時數(shù)據(jù)、采集信息(如溫度、煙霧等)存入數(shù)據(jù)庫。

1.2 實現(xiàn)方法

MSComm控件可以設(shè)置以二進制或者以文本方式接收,若設(shè)置為二進制接受,控件會自動將其轉(zhuǎn)變成十進制。在該系統(tǒng)中,數(shù)據(jù)幀的數(shù)據(jù)是十六進制的,設(shè)置以二進制方式進行接收,從接收緩存中獲取到的是十進制的數(shù)據(jù)(見圖1)。

對MSComm控件進行如下設(shè)置[6]:

圖1 MSComm控件接收數(shù)據(jù)程序流圖

在上述程序中,只要Zigbee網(wǎng)關(guān)節(jié)點有字符送到接收緩沖區(qū),則將觸發(fā)上位機接收事件。當(dāng)串口接收到一個數(shù)據(jù)幀,MSComm控件會自動觸發(fā)OnComm事件,使Comm Event的值變?yōu)閏om Ev Receive,表示接收到Rthreshold個字符。當(dāng)Comm Event的值變?yōu)閏omEvSend,即表示在發(fā)送緩沖區(qū)中有比SThreshold數(shù)少的字符。根據(jù)Comm Event值的變化,便可以編寫代碼執(zhí)行相應(yīng)的操作。此外,當(dāng)CommEvent的值變?yōu)閏omEvReceive時,執(zhí)行hex Receive函數(shù),該函數(shù)將調(diào)用數(shù)據(jù)解析函數(shù),完成數(shù)據(jù)解析操作。

2 數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)解析

2.1 內(nèi)存中節(jié)點多叉樹的建立

通信監(jiān)測模塊接收數(shù)據(jù)后,為了便于以圖形方式實時顯示網(wǎng)絡(luò)拓撲和節(jié)點監(jiān)測信息,以及提高查詢數(shù)據(jù)的運行速度,需要在內(nèi)存中構(gòu)建一個動態(tài)多叉樹,用于存儲節(jié)點最新的數(shù)據(jù)信息。節(jié)點數(shù)據(jù)結(jié)構(gòu)圖如圖2所示。

在內(nèi)存中建立一個關(guān)于節(jié)點的動態(tài)多叉樹,節(jié)點的唯一標(biāo)識是它的自身ID,根據(jù)數(shù)據(jù)幀中包含的父子關(guān)系可構(gòu)建出一棵多叉樹。首先定義一個名為treeNode的類,它的每一個實例都代表著一個節(jié)點,里面包含節(jié)點的屬性(例如ID、溫度、煙霧等)和方法(例如獲取類中節(jié)點數(shù)據(jù)的get Data方法)。為了將節(jié)點間的父子關(guān)系表現(xiàn)出來,可在類treeNode中定義一個類型為treeNode的動態(tài)數(shù)組NodeChild(),用于存放子節(jié)點。如某節(jié)點ID為0000,子節(jié)點ID為0001,將子節(jié)點0001存放在節(jié)點0000的NodeChild()數(shù)組中,即可完成節(jié)點間的連接。當(dāng)需要找某個節(jié)點時,從根節(jié)點開始查找,若根節(jié)點的孩子沒有要找的節(jié)點,則查找根節(jié)點的孩子的孩子,直到遍歷完所有節(jié)點。當(dāng)某數(shù)據(jù)幀發(fā)送到上位機時,解析出來的原始數(shù)據(jù)分別放在相應(yīng)的變量,假設(shè)原始的溫度數(shù)據(jù)是3F4A,數(shù)據(jù)結(jié)構(gòu)中溫度變量名為Temperature,類型為String,則直接將3F4A轉(zhuǎn)換為String類型存在Temperature中。

按上述方法構(gòu)建的動態(tài)多叉樹能夠適應(yīng)網(wǎng)絡(luò)拓撲動態(tài)變化的應(yīng)用場景,相比于定長的數(shù)組,其更為節(jié)省內(nèi)存,不足之處是查詢算法較復(fù)雜。

2.2 數(shù)據(jù)解析

通信監(jiān)測模塊接收到Zigbee網(wǎng)關(guān)節(jié)點發(fā)送來的一組數(shù)據(jù)(數(shù)據(jù)幀)后,需要對收到的數(shù)據(jù)進行協(xié)議解析,然后根據(jù)解析數(shù)據(jù)建立當(dāng)前動態(tài)多叉樹。由于通信中難以避免數(shù)據(jù)幀出錯、截斷、丟失等情況,故數(shù)據(jù)解析部分根據(jù)數(shù)據(jù)幀的格式制定了一套協(xié)議,丟棄異常數(shù)據(jù)幀。數(shù)據(jù)幀的部分格式如下:

圖2 節(jié)點數(shù)據(jù)結(jié)構(gòu)圖

2個FF后的字節(jié)都是數(shù)據(jù),其格式如下:數(shù)據(jù)類型(01,溫度類型)+2個字節(jié)的數(shù)據(jù)(XX XX)。具體操作流程如圖3所示。首先檢驗從串口進來的數(shù)據(jù)幀開頭一個字節(jié)是否FF,若是,則開始解析。直到下一個FF,則節(jié)點ID部分解析結(jié)束,后面都是數(shù)據(jù)。繼續(xù)讀取下一個字節(jié),若為01,則將后面緊跟的兩個字節(jié)存進相應(yīng)的溫度變量,讀取下一個字符;若該字節(jié)所表示的數(shù)據(jù)類型未定義則跳過該字節(jié)及后面緊跟的兩個字節(jié),繼續(xù)讀取下一個字符。該過程一直執(zhí)行直到解析完整個數(shù)據(jù)幀。

由于數(shù)據(jù)幀是不定長的,而且沒有結(jié)束字符,所以每收到一個數(shù)據(jù)幀程序便立即從緩存中讀取并解析,以避免多個幀合并為一個數(shù)據(jù)幀導(dǎo)致解析錯誤。當(dāng)出現(xiàn)多個數(shù)據(jù)幀并合情況時,則丟棄后繼的幀。在幀解析完畢后,可以對解析出來的監(jiān)測數(shù)據(jù)信息進行處理,將數(shù)據(jù)信息一份存進內(nèi)存中節(jié)點多叉樹,一份存進數(shù)據(jù)庫,實現(xiàn)實時更新數(shù)據(jù)和記錄當(dāng)前信息。

以下是有關(guān)串口通信事件響應(yīng)及數(shù)據(jù)解析的部分代碼:

3 數(shù)據(jù)庫的構(gòu)建與連接

3.1 數(shù)據(jù)庫關(guān)系

數(shù)據(jù)庫關(guān)系圖如圖4所示。由于每個節(jié)點都有大量歷史數(shù)據(jù),所以每一個節(jié)點都創(chuàng)建一個表;USERS表用于保存監(jiān)測系統(tǒng)的用戶信息;Node Tran用于保存數(shù)據(jù)幀轉(zhuǎn)發(fā)路徑;Nodelist用于保存節(jié)點列表;Limit用于保存監(jiān)測系統(tǒng)的閾值管理設(shè)置值;Node_XXXX為節(jié)點XXXX的歷史數(shù)據(jù)表。除了用戶表,所有數(shù)據(jù)都采用varchar類型。

圖3 數(shù)據(jù)解析程序流程圖

3.2 存儲過程的創(chuàng)建

為了提高通信監(jiān)測模塊與數(shù)據(jù)庫之間通信的效率,將一些常用且較為復(fù)雜的SQL語句存放在數(shù)據(jù)庫中,使用時只需要調(diào)用存儲過程,輸入必要的參數(shù)即可完成相應(yīng)的SQL語句操作,這樣可以大大減少程序與數(shù)據(jù)庫之間的通信量。

圖4 數(shù)據(jù)庫關(guān)系圖

圖5 VB與SQLSERVER連接程序流程圖

創(chuàng)建的存儲過程如下:

1)Create Table,其作用為創(chuàng)建節(jié)點表,傳入?yún)?shù)為節(jié)點ID,參數(shù)類型為varchar。執(zhí)行后創(chuàng)建一個名為“Node_ XXXX”的節(jié)點表(XXXX為節(jié)點的ID)。

2)N_tran,其作用為存儲節(jié)點轉(zhuǎn)發(fā)路徑,傳入?yún)?shù)為節(jié)點ID、轉(zhuǎn)發(fā)路徑,參數(shù)類型皆為varchar。執(zhí)行后將轉(zhuǎn)發(fā)路徑存儲在表Node Tran中。

3)SaveData,其作用為保存節(jié)點數(shù)據(jù),傳入?yún)?shù)為節(jié)點的數(shù)據(jù),如溫度、煙霧的數(shù)值,參數(shù)類型為varchar。執(zhí)行后將節(jié)點的數(shù)據(jù)存儲在表Node_XXXX中(XXXX為節(jié)點的ID)。

3.3 使用ADO 將VB6.0與SQL2005連接

ADO是為Microsoft最新和最強大的數(shù)據(jù)訪問范例OLE DB而設(shè)計的,擁有一個易于使用的應(yīng)用程序?qū)咏涌凇Mㄟ^使用ADO 2.0對象模型中的Recordset和Connection對象實現(xiàn)兩者連接和數(shù)據(jù)的存取。Connection對象包含關(guān)于某個數(shù)據(jù)提供程序的信息,如數(shù)據(jù)庫用戶、密碼、數(shù)據(jù)庫名等;Recordset對象包含某個查詢返回的記錄,可以創(chuàng)建一個Connection對象,在同一個連接上打開多個Recordset對象[8]。操作流程圖如圖5所示。

4 結(jié)語

由于實時性數(shù)據(jù)需要快速、頻繁訪問的應(yīng)用,應(yīng)在內(nèi)存中建立一棵多叉樹存儲最新數(shù)據(jù),而對于訪問速度要求不高、數(shù)據(jù)量比較大的應(yīng)用,則用數(shù)據(jù)庫管理。基于Zigbee進行了數(shù)據(jù)監(jiān)測上位機通信接口設(shè)計。這種設(shè)計方法既能滿足實時性要求,又能增強系統(tǒng)的穩(wěn)定性,因而具有可行性。

[1]雷純,何小陽,蘇生輝.基于ZigBee的多點溫度采集系統(tǒng)設(shè)計與實現(xiàn)[J].自動化技術(shù)與應(yīng)用,2011,29(6):43-46.

[2]殷明,汪立偉.基于ZigBee技術(shù)的通用無線通信模塊設(shè)計[J].交通與計算機,2006,24(5):110-112.

[3]高峰,俞立,王涌,等.無線傳感網(wǎng)絡(luò)作物水分狀況監(jiān)測系統(tǒng)的上位機軟件開發(fā)[J].農(nóng)業(yè)工程學(xué)報,2010,26(5):175-181.

[4]黃天強.基于VB6.0的RS232串口通信研究與實現(xiàn)[J].科技信息,2010(31):67-68.

[5]高春艷,劉彬彬,王斌.Visual Basic開發(fā)技術(shù)大全[M].北京:人民郵電出版社,2007.

[6]高春艷,劉彬彬.Visual Basic控件參考大全[M].北京:人民郵電出版社,2006.

[編輯]李啟棟

TN924.1

A

1673-1409(2014)25-0036-05

2014-05-01

中國石油天然氣集團公司科技創(chuàng)新基金項目(2011D-5006-0605);湖北省教育廳重點項目(D20091204);湖北省國家級

大學(xué)生創(chuàng)新訓(xùn)練計劃項目(201310489005)。

鄒學(xué)玉(1965-),男,博士,教授,現(xiàn)主要從事信號檢測與處理、無線傳感器網(wǎng)絡(luò)方面的教學(xué)與研究工作。

猜你喜歡
數(shù)據(jù)庫
數(shù)據(jù)庫
財經(jīng)(2017年15期)2017-07-03 22:40:49
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
數(shù)據(jù)庫
財經(jīng)(2015年3期)2015-06-09 17:41:31
數(shù)據(jù)庫
財經(jīng)(2014年21期)2014-08-18 01:50:18
數(shù)據(jù)庫
財經(jīng)(2014年6期)2014-03-12 08:28:19
數(shù)據(jù)庫
財經(jīng)(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 制服丝袜一区二区三区在线| 国产欧美另类| 成人国产精品一级毛片天堂| 国产一级毛片yw| Aⅴ无码专区在线观看| AV在线天堂进入| 91黄色在线观看| 国产精选自拍| 色综合手机在线| 色偷偷一区二区三区| AV老司机AV天堂| 最新痴汉在线无码AV| 五月天天天色| 69免费在线视频| 人妻精品全国免费视频| 亚洲欧美日韩精品专区| 2020精品极品国产色在线观看| 日韩无码真实干出血视频| 无码乱人伦一区二区亚洲一| 高潮毛片免费观看| 亚洲国产成人综合精品2020| 国内a级毛片| 国产99视频在线| 丝袜高跟美脚国产1区| 99国产在线视频| 一区二区影院| 亚洲AV无码久久天堂| 国产精品成人免费综合| 国产无遮挡裸体免费视频| 成人a免费α片在线视频网站| 免费在线看黄网址| 国产午夜无码片在线观看网站| 高清不卡毛片| 天天摸天天操免费播放小视频| 欧美A级V片在线观看| 91人人妻人人做人人爽男同| 91久久偷偷做嫩草影院电| 欧美成人区| 99久视频| 日韩精品一区二区三区免费在线观看| 综合色区亚洲熟妇在线| 99精品伊人久久久大香线蕉| 亚洲乱码在线播放| 色悠久久久久久久综合网伊人| 中文字幕无码制服中字| 久久国产精品麻豆系列| 国产美女自慰在线观看| 1级黄色毛片| a级毛片毛片免费观看久潮| 999国内精品视频免费| 九色综合视频网| 欧美丝袜高跟鞋一区二区| 高h视频在线| 伊人蕉久影院| 最近最新中文字幕在线第一页 | 成人在线观看不卡| 亚洲成a∧人片在线观看无码| 亚洲日韩精品欧美中文字幕| 男人的天堂久久精品激情| 国产高清免费午夜在线视频| 亚洲AⅤ永久无码精品毛片| 久草视频精品| 亚洲国产成人久久77| 国产精品久久久久久影院| 亚洲国产成人自拍| 亚洲第一页在线观看| jizz亚洲高清在线观看| 五月婷婷丁香综合| 国产成人综合亚洲网址| 九九线精品视频在线观看| 色国产视频| 情侣午夜国产在线一区无码| 日韩在线观看网站| 国产精品免费电影| 国产无码在线调教| 国产女人在线| 97一区二区在线播放| 曰韩人妻一区二区三区| www亚洲精品| 久久精品亚洲中文字幕乱码| 中文字幕无码电影| 久久久久中文字幕精品视频|