邱霞+段渭軍+黃亮+許宗成
摘 要: 將無線傳感器網(wǎng)絡(WSN)應用于戰(zhàn)場感知等軍事領域的研究已經廣泛展開。無線傳感器網(wǎng)絡系統(tǒng)架構包括無線傳感器網(wǎng)絡、SINK節(jié)點和PC端監(jiān)控軟件。為了方便用戶了解網(wǎng)絡狀態(tài)和管理網(wǎng)絡,使用PyQt設計與實現(xiàn)了無線傳感器網(wǎng)絡PC端監(jiān)控軟件,PyQt是結合了Qt的C++跨平臺程序框架和Python的躊平臺解釋性腳本語言。對此監(jiān)控軟件進行模塊化獨立設計,各子程序模塊不集成于主程序模塊,使程序的設計操作簡單化。
關鍵詞: Python; PyQt; 無線傳感器網(wǎng)絡; 監(jiān)控軟件
中圖分類號: TN911?34; TP312 文獻標識碼: A 文章編號: 1004?373X(2014)16?0065?03
Development of wireless sensor network monitoring software based on Python
QIU Xia, DUAN Wei?jun, HUANG Liang, XU Zong?cheng
(School of Electronics Information, Northwestern Polytechnical University, Xian 710072, China)
Abstract: The research that WSN is applied to battlefield perception and other military fields has been widely expanded. WSN system architecture consists of wireless sensor network, SINK node and PC monitoring software. In order to facilitate users to understand the network status and mange the network, A PC monitoring software of WSN was designed and realized by the aid of PyQt, which combines the Qt C++ cross?platform program framework with the cross?platform interpreted language of Python. The modular monitoring software was independently designed, and each subroutine module is not integrated in the main program module, so as to simplify the design operation of the program.
Keywords: Python; PyQt; WSN; monitoring software
0 引 言
無線傳感器網(wǎng)絡(Wireless Sensor Networks,WSN)是由大量的密集部署在監(jiān)控區(qū)域的智能傳感器節(jié)點構成的一種網(wǎng)絡應用系統(tǒng)[1]。這些傳感器節(jié)點以自組織(AD?Hoc)[2]和多跳(Multi?Hop)的方式交互數(shù)據(jù),協(xié)作地感知、采集、處理和傳輸其覆蓋地理區(qū)域內被監(jiān)測對象的相關信息。其具有大規(guī)模、自組織、動態(tài)性、可靠性、應用相關和以數(shù)據(jù)為中心的特點。目前相關的無線傳感器網(wǎng)絡理論研究和應用研究已廣泛展開,對戰(zhàn)場環(huán)境進行信息采集的網(wǎng)絡系統(tǒng)是研究的一大重點。
典型的無線傳感器網(wǎng)絡系統(tǒng)由無線傳感器網(wǎng)絡、SINK節(jié)點和PC端監(jiān)控軟件組成。為方便用戶了解網(wǎng)絡狀態(tài)和管理網(wǎng)絡,需要提供界面友好和功能完善的上位機監(jiān)控軟件。用戶通過PC機上的監(jiān)控界面可方便直觀看到整個網(wǎng)絡的動態(tài)顯示,并且可以與網(wǎng)絡進行交互操作。本文介紹了基于PyQt的無線傳感器網(wǎng)絡監(jiān)控軟件的開發(fā)。
1 關鍵技術與編程工具開發(fā)
PC端監(jiān)控軟件的服務器操作系統(tǒng)采用Windows XP操作系統(tǒng),開發(fā)平臺采用Python2.6+PyQt4+eric4?4.2.2a。Python是功能很強大的跨平臺解釋性腳本語言,Qt是C++跨平臺應用程序框架,二者的結合就是PyQt[3]。而Eric則是由Python開發(fā)的一款支持PyQt的IDE。Python是一種開源的腳本編程語言,收可移植的ANSI C編寫,可以輕松駕馭Windows,Linux,Mac等主流操作系統(tǒng),可移植性極強[4]。Eric4是一款Python,Ruby的IDE,其代碼功能強大,與Qt4的完美結合,非常適合開發(fā)圖形界面的Python應用程序。
下面介紹如何搭建PyQt開發(fā)環(huán)境:
(1) 下載Python,eric和PyQt,分別為python?2.7.3 msi,eric4?4.5.15.zip和PyQt?Py2.7?x86?gpl?4.8.5?1.exe。Python和PyQt的版本要一致,推薦使用2.7版本,3.0版本正在測試中。
(2) 安裝軟件。首先安裝Python2.7,默認安裝到D:\python27目錄下,安裝成功后,會出現(xiàn)在菜單中。緊接著安裝PyQt,一路回車即可。在安裝Eric前,需要配置環(huán)境變量。將Python所在路徑復制到環(huán)境變量里的Path里即可。再來解壓Eric4?4.5.15.zip到D盤里。解壓之后,可在DOS命令下運行 D:\python27\python D:\eric4?4.5.15\install.py。運行完之后,就會在D:\python27目錄下生成eric4.bat文件。此時,開發(fā)環(huán)境已經搭建完成。
2 無線傳感器網(wǎng)絡體系結構
在監(jiān)測區(qū)域里部署傳感器節(jié)點,這些節(jié)點通過自組織協(xié)議構成無線傳感器網(wǎng)絡。傳感器節(jié)點負責感知、采集、處理和傳輸網(wǎng)絡覆蓋地理區(qū)域內被感知對象的信息,并向SINK節(jié)點報告,SINK節(jié)點再通過串口將信息送達用戶。用戶在遠端可知網(wǎng)絡部署區(qū)域內的環(huán)境變化和網(wǎng)絡的運行情況,也可以通過SINK節(jié)點[5]向網(wǎng)絡發(fā)布查詢請求和控制命令。圖1為所描述的系統(tǒng)結構圖。
圖1 系統(tǒng)結構圖
SINK節(jié)點可以充當網(wǎng)絡的協(xié)調器,具有較強的處理、存儲和通信能力。連接傳感器網(wǎng)絡與電腦終端監(jiān)控中心,實現(xiàn)兩者之間通信協(xié)議的轉換。將網(wǎng)絡節(jié)點的數(shù)據(jù)收集后處理,最后發(fā)送到電腦終端的監(jiān)控中心。提供網(wǎng)絡控制功能,將監(jiān)控中心計算機的用戶命令發(fā)送給網(wǎng)絡中的節(jié)點。用戶監(jiān)控中心通過PC端的界面遠程觀察網(wǎng)絡所處狀態(tài)和發(fā)送指令,還可以隨時瀏覽歷史狀態(tài),實現(xiàn)對網(wǎng)絡的遠程管理和控制。
3 監(jiān)控軟件開發(fā)
網(wǎng)絡節(jié)點作為終端,負責信息的采集和共享,實現(xiàn)多節(jié)點協(xié)同地執(zhí)行任務;SINK節(jié)點維護整個網(wǎng)絡,并與監(jiān)控軟件交互;監(jiān)控軟件主要對網(wǎng)絡數(shù)據(jù)管理和顯示,方便用戶監(jiān)測網(wǎng)絡拓撲并進行網(wǎng)絡調整,保證無線傳感器網(wǎng)絡的持續(xù)穩(wěn)定工作。下面來介紹監(jiān)控軟件的開發(fā)。
3.1 監(jiān)控軟件主界面
監(jiān)控軟件主界面主要分為四個主要部分:系統(tǒng)主菜單和功能按鈕、節(jié)點狀態(tài)欄、二維場景顯示、信息欄。用戶通過操作主菜單和功能按鈕使用軟件的功能命令。用戶設置正確的串口參數(shù)后打開串口,然后開始與SINK節(jié)點的通信。監(jiān)控軟件進行數(shù)據(jù)包的解析后在主界面信息欄將數(shù)據(jù)包輸出,在場景顯示處顯示網(wǎng)絡拓撲、數(shù)據(jù)流、節(jié)點地址等信息。右側的節(jié)點狀態(tài)欄實時顯示節(jié)點當前的橫縱坐標。圖2為監(jiān)控軟件主界面。
圖2 監(jiān)控軟件主界面
3.2 主要功能
對監(jiān)控軟件進行模塊化獨立設計,各子程序模塊不集成于主程序模塊,子模塊可獨立運行,從而降低了程序的復雜度,使程序的設計操作簡單化[5]。監(jiān)控軟件的整體功能模塊結構如圖3所示。
圖3 整體功能模塊結構圖
3.2.1 消息獲取和處理
PC端監(jiān)控軟件通過串口與SINK節(jié)點連接,從而利用SINK節(jié)點來獲取各個節(jié)點和鏈路信息。圖4為消息獲取和處理的流程。由于監(jiān)控軟件基于Python編寫,為了便于操作串口,程序采用Pyserial[6]串口控制模塊。Pyserial模塊是一個用來控制串口的Python第三方庫,支持Python調用Windows,Linux系統(tǒng)調用,模塊啟用后會自動選擇后端操作系統(tǒng)。為了方便用戶打開指定的串口并按照指定的波特率通信,軟件增加了串口設置對話框GUI,負責設置串口號和波特率。完成串口設置后,就可以進行下一步操作。點擊工具欄上的三個按鈕就打開選擇數(shù)據(jù)文件對話框,打開文件后開始接收來自串口的消息并將接收到的數(shù)據(jù)進行處理,按照數(shù)據(jù)文件格式保存到文件中,同時在主界面的顯示場景中繪制各節(jié)點、通信路徑等,在狀態(tài)欄顯示節(jié)點的狀態(tài)和坐標信息。
圖4 消息獲取和處理的流程
3.2.2 節(jié)點地址等狀態(tài)信息顯示
用戶在系統(tǒng)運行的任意時刻都可查詢任意節(jié)點的狀態(tài)信息,能夠將節(jié)點地址和坐標、節(jié)點類型、運行狀態(tài)等信息顯示在界面上,用戶在PC端就可進行節(jié)點監(jiān)控。
3.2.3 網(wǎng)絡場景顯示
通過主界面的二維場景顯示,可以直觀地看到網(wǎng)絡當前狀態(tài)。顯示場景中用正方形表示小車節(jié)點,圓形代表入侵節(jié)點,兩者使用不同的顏色標記。小車節(jié)點上方顯示其地址以此做區(qū)分,而對入侵節(jié)點進行編號顯示,小車節(jié)點周圍的圓形虛線代表其感知范圍。節(jié)點之間通信時記錄數(shù)據(jù)的通信鏈路,在圖中以綠色虛線顯示,如果節(jié)點之間通信失敗則將之前顯示的鏈路刪除。當鏈路上有數(shù)據(jù)包發(fā)送成功時,鏈路用閃爍代表。顯示界面如圖5所示。
圖5 二維場景顯示
3.2.4 網(wǎng)絡控制
在網(wǎng)絡控制模塊用戶向節(jié)點網(wǎng)絡發(fā)送控制命令管理網(wǎng)絡,監(jiān)控軟件設計實現(xiàn)了控制對話框方便操作。用戶單擊工具欄中的按鈕就可以彈出控制對話框。
根據(jù)系統(tǒng)要求,目前支持遠程控制命令有:開啟小車,組網(wǎng)攻擊,小車移動,開始通信組網(wǎng)等。目的地址:輸入小車的16位網(wǎng)絡地址(可以從狀態(tài)欄或者3D場景小車上方看到)。消息負載內容:按照協(xié)議填寫相應的負載,不同的控制命令負載類型不同。點擊發(fā)送即可,可以在狀態(tài)欄收到網(wǎng)絡節(jié)點的反饋消息。
3.2.5 場景回放
通過從本地保存的數(shù)據(jù)文件中提取數(shù)據(jù),重現(xiàn)網(wǎng)絡某一時間段的場景,特別是攻擊場景的重現(xiàn),可以看到入侵節(jié)點的移動軌跡和網(wǎng)絡節(jié)點的攻擊過程。場景回放是指監(jiān)控軟件通過從本地數(shù)據(jù)文件(實時連接到網(wǎng)絡保存下來的)按時間順序讀取各不同時刻的消息,獲取各類節(jié)點和通信流的信息,在三維場景中重現(xiàn)各時刻的畫面。軟件根據(jù)讀取的坐標信息重繪車庫、小車、通信流,當有敵節(jié)點入侵時繪制入侵節(jié)點,展現(xiàn)小車節(jié)點和入侵節(jié)點的移動過程、攻擊過程,從而回放攻擊場景。
3.2.6 網(wǎng)絡測試
為了實現(xiàn)從數(shù)據(jù)上分析網(wǎng)絡性能,從更深的層次了解網(wǎng)絡運行狀態(tài),增加了網(wǎng)絡測試部分。主要實現(xiàn)端到端時延[7]、節(jié)點通信的丟包率[8]、組網(wǎng)協(xié)議的連通性這幾項。在監(jiān)控軟件中設計和實現(xiàn)了網(wǎng)絡測試模塊,這個模塊的主要作用是使用戶在PC端就可以方便的測試當前網(wǎng)絡的性能如何,對結果進行分析。如果出現(xiàn)問題那么要尋找解決方案,保證用戶能夠掌握戰(zhàn)場上出現(xiàn)的狀況快速做出反應,采取措施。實現(xiàn)了三項測試內容:系統(tǒng)響應時間測試、端到端時延測試[9]、丟包率測試。從菜單欄的Test選項就可以選擇要進行哪項測試。
系統(tǒng)響應時間的測試方案是SINK節(jié)點向全網(wǎng)節(jié)點廣播一個命令要求其他節(jié)點向SINK節(jié)點返回一個響應幀,SINK節(jié)點由串口向監(jiān)控中心匯報響應節(jié)點和此節(jié)點的響應時間。端到端時延的測試方案是將源節(jié)點地址、目的節(jié)點地址、負載內容這三個參數(shù)發(fā)送給SINK節(jié)點,SINK節(jié)點通知源節(jié)點發(fā)起到目的節(jié)點的時延測試,測試時的負載就是從監(jiān)控軟件輸入的負載內容。源節(jié)點將測試到的時延值與到目的節(jié)點路由跳數(shù)一起通過網(wǎng)絡多跳通信發(fā)送到SINK節(jié)點,然后通過串口上傳到監(jiān)控中心。丟包率測試的是兩節(jié)點之間通信時的丟包情況,如果丟包過大則要分析原因采取一定的措施,例如調整節(jié)點部署等。
4 結 語
本文介紹了基于PyQt的無線傳感器網(wǎng)絡監(jiān)控系統(tǒng),方便用戶了解網(wǎng)絡狀態(tài)和管理網(wǎng)絡。PyQt結合Qt的C++跨平臺程序框架和Python的跨平臺解釋性腳本語言。監(jiān)控軟件有六大功能模塊,分別是消息獲取和處理模塊、節(jié)點地址等狀態(tài)信息顯示模塊、網(wǎng)絡場景顯示模塊、網(wǎng)絡控制模塊、場景回放模塊和網(wǎng)絡測試測試模塊。該系統(tǒng)仍存在有不足之處,監(jiān)控軟件實現(xiàn)功能簡單,可靠性不高,安全性不高,這需要進一步研究。
(上接第67頁)
參考文獻
[1] 屈峰.無線傳感器網(wǎng)絡及其應用[J].四川兵工學報,2013,34(2):111?113.
[2] 程皓.無線傳感器網(wǎng)絡自組織協(xié)議的研究與實現(xiàn)[J].傳感器與儀器儀表,2009,25(12):88?90.
[3] MISRA Sanjay. Estimating complexity of programs in Python Language [J]. Technical Gazette, 2011, 18 (1): 12?18.
[4] 陳笑飛.基于Python的虛擬儀器技術研究及實現(xiàn)[J].電子設計工程,2012,20(16):48?50.
[5] TIAN Yu. Design and application of sink node for wireless sensor network, COMPEL [J]. International Journal for Computation and Mathematics in Electrical and Electronic Engineering, 2013, 32 (2): 531?544.
[6] 王清華.基于無線傳感器網(wǎng)絡的煤礦瓦斯監(jiān)測系統(tǒng)軟件的研究[J].煤礦機械,2012,33(12):232?234.
[7] 夏永鏗.基于Web的群體機器人遠程控制系統(tǒng)研究與實現(xiàn)[J]. 微型電腦應用,2013,29(2):13?15.
[8] 鄔春學.基于Internet的網(wǎng)絡控制系統(tǒng)端到端時延分析[J].計算機工程,2007,33(22):158?160.
[9] 李鵬. ZigBee網(wǎng)絡性能分析及網(wǎng)絡規(guī)劃應用研究[D].武漢:華中師范大學,2009.
[10] COLOMB R M. End to end development engineering [J]. Journal of Software Engineering and Applications, 2011, 4 (4): 195?216.
系統(tǒng)響應時間的測試方案是SINK節(jié)點向全網(wǎng)節(jié)點廣播一個命令要求其他節(jié)點向SINK節(jié)點返回一個響應幀,SINK節(jié)點由串口向監(jiān)控中心匯報響應節(jié)點和此節(jié)點的響應時間。端到端時延的測試方案是將源節(jié)點地址、目的節(jié)點地址、負載內容這三個參數(shù)發(fā)送給SINK節(jié)點,SINK節(jié)點通知源節(jié)點發(fā)起到目的節(jié)點的時延測試,測試時的負載就是從監(jiān)控軟件輸入的負載內容。源節(jié)點將測試到的時延值與到目的節(jié)點路由跳數(shù)一起通過網(wǎng)絡多跳通信發(fā)送到SINK節(jié)點,然后通過串口上傳到監(jiān)控中心。丟包率測試的是兩節(jié)點之間通信時的丟包情況,如果丟包過大則要分析原因采取一定的措施,例如調整節(jié)點部署等。
4 結 語
本文介紹了基于PyQt的無線傳感器網(wǎng)絡監(jiān)控系統(tǒng),方便用戶了解網(wǎng)絡狀態(tài)和管理網(wǎng)絡。PyQt結合Qt的C++跨平臺程序框架和Python的跨平臺解釋性腳本語言。監(jiān)控軟件有六大功能模塊,分別是消息獲取和處理模塊、節(jié)點地址等狀態(tài)信息顯示模塊、網(wǎng)絡場景顯示模塊、網(wǎng)絡控制模塊、場景回放模塊和網(wǎng)絡測試測試模塊。該系統(tǒng)仍存在有不足之處,監(jiān)控軟件實現(xiàn)功能簡單,可靠性不高,安全性不高,這需要進一步研究。
(上接第67頁)
參考文獻
[1] 屈峰.無線傳感器網(wǎng)絡及其應用[J].四川兵工學報,2013,34(2):111?113.
[2] 程皓.無線傳感器網(wǎng)絡自組織協(xié)議的研究與實現(xiàn)[J].傳感器與儀器儀表,2009,25(12):88?90.
[3] MISRA Sanjay. Estimating complexity of programs in Python Language [J]. Technical Gazette, 2011, 18 (1): 12?18.
[4] 陳笑飛.基于Python的虛擬儀器技術研究及實現(xiàn)[J].電子設計工程,2012,20(16):48?50.
[5] TIAN Yu. Design and application of sink node for wireless sensor network, COMPEL [J]. International Journal for Computation and Mathematics in Electrical and Electronic Engineering, 2013, 32 (2): 531?544.
[6] 王清華.基于無線傳感器網(wǎng)絡的煤礦瓦斯監(jiān)測系統(tǒng)軟件的研究[J].煤礦機械,2012,33(12):232?234.
[7] 夏永鏗.基于Web的群體機器人遠程控制系統(tǒng)研究與實現(xiàn)[J]. 微型電腦應用,2013,29(2):13?15.
[8] 鄔春學.基于Internet的網(wǎng)絡控制系統(tǒng)端到端時延分析[J].計算機工程,2007,33(22):158?160.
[9] 李鵬. ZigBee網(wǎng)絡性能分析及網(wǎng)絡規(guī)劃應用研究[D].武漢:華中師范大學,2009.
[10] COLOMB R M. End to end development engineering [J]. Journal of Software Engineering and Applications, 2011, 4 (4): 195?216.
系統(tǒng)響應時間的測試方案是SINK節(jié)點向全網(wǎng)節(jié)點廣播一個命令要求其他節(jié)點向SINK節(jié)點返回一個響應幀,SINK節(jié)點由串口向監(jiān)控中心匯報響應節(jié)點和此節(jié)點的響應時間。端到端時延的測試方案是將源節(jié)點地址、目的節(jié)點地址、負載內容這三個參數(shù)發(fā)送給SINK節(jié)點,SINK節(jié)點通知源節(jié)點發(fā)起到目的節(jié)點的時延測試,測試時的負載就是從監(jiān)控軟件輸入的負載內容。源節(jié)點將測試到的時延值與到目的節(jié)點路由跳數(shù)一起通過網(wǎng)絡多跳通信發(fā)送到SINK節(jié)點,然后通過串口上傳到監(jiān)控中心。丟包率測試的是兩節(jié)點之間通信時的丟包情況,如果丟包過大則要分析原因采取一定的措施,例如調整節(jié)點部署等。
4 結 語
本文介紹了基于PyQt的無線傳感器網(wǎng)絡監(jiān)控系統(tǒng),方便用戶了解網(wǎng)絡狀態(tài)和管理網(wǎng)絡。PyQt結合Qt的C++跨平臺程序框架和Python的跨平臺解釋性腳本語言。監(jiān)控軟件有六大功能模塊,分別是消息獲取和處理模塊、節(jié)點地址等狀態(tài)信息顯示模塊、網(wǎng)絡場景顯示模塊、網(wǎng)絡控制模塊、場景回放模塊和網(wǎng)絡測試測試模塊。該系統(tǒng)仍存在有不足之處,監(jiān)控軟件實現(xiàn)功能簡單,可靠性不高,安全性不高,這需要進一步研究。
(上接第67頁)
參考文獻
[1] 屈峰.無線傳感器網(wǎng)絡及其應用[J].四川兵工學報,2013,34(2):111?113.
[2] 程皓.無線傳感器網(wǎng)絡自組織協(xié)議的研究與實現(xiàn)[J].傳感器與儀器儀表,2009,25(12):88?90.
[3] MISRA Sanjay. Estimating complexity of programs in Python Language [J]. Technical Gazette, 2011, 18 (1): 12?18.
[4] 陳笑飛.基于Python的虛擬儀器技術研究及實現(xiàn)[J].電子設計工程,2012,20(16):48?50.
[5] TIAN Yu. Design and application of sink node for wireless sensor network, COMPEL [J]. International Journal for Computation and Mathematics in Electrical and Electronic Engineering, 2013, 32 (2): 531?544.
[6] 王清華.基于無線傳感器網(wǎng)絡的煤礦瓦斯監(jiān)測系統(tǒng)軟件的研究[J].煤礦機械,2012,33(12):232?234.
[7] 夏永鏗.基于Web的群體機器人遠程控制系統(tǒng)研究與實現(xiàn)[J]. 微型電腦應用,2013,29(2):13?15.
[8] 鄔春學.基于Internet的網(wǎng)絡控制系統(tǒng)端到端時延分析[J].計算機工程,2007,33(22):158?160.
[9] 李鵬. ZigBee網(wǎng)絡性能分析及網(wǎng)絡規(guī)劃應用研究[D].武漢:華中師范大學,2009.
[10] COLOMB R M. End to end development engineering [J]. Journal of Software Engineering and Applications, 2011, 4 (4): 195?216.