周光發(fā)
(江蘇警官學(xué)院公安科技系,南京 210012)
火車行李監(jiān)控系統(tǒng)是一套利用無線定位技術(shù),對行李進行全程監(jiān)控的行李安全保障系統(tǒng)。該系統(tǒng)能夠?qū)π欣畹奈恢米兓M行全程監(jiān)控,從而實現(xiàn)對行李的全面監(jiān)控。該系統(tǒng)充分利用了火車這一封閉空間,使得無線定位技術(shù)的定位精度快、實時性好等優(yōu)點能夠完全發(fā)揮,達到監(jiān)控行李狀態(tài)的目的。該系統(tǒng)不但可以用于對可疑行李的監(jiān)控跟蹤,同時也能夠用于實時保護旅客貴重行李。本項目探討了如何采用省電、可靠、低成本、時延短、網(wǎng)絡(luò)容量大、安全的Zigbee無線定位協(xié)議[1],設(shè)計行李監(jiān)控系統(tǒng)的系統(tǒng)結(jié)構(gòu)與上位機軟件設(shè)計與實現(xiàn)。
火車行李監(jiān)控系統(tǒng)主要由:無線定位、數(shù)據(jù)中心以及上位機三部分組成。其中無線定位部分由參考節(jié)點和定位節(jié)點組成,參考節(jié)點設(shè)置于火車車廂各部,定位節(jié)點放置于行李內(nèi)。數(shù)據(jù)中心為無線定位系統(tǒng)的網(wǎng)關(guān),用于實現(xiàn)無線定位系統(tǒng)與上位機之間的通信。通過無線與無線網(wǎng)絡(luò)中的所有定位節(jié)點通信,并將最終定位信息通過串口傳至上位機。上位機在接收到數(shù)據(jù)中心的數(shù)據(jù)后,經(jīng)過分析處理,輸出至用戶,給用戶決策提供依據(jù)。系統(tǒng)體系結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)體系結(jié)構(gòu)
無線定位模塊是一個基于CC2431無線定位引擎的定位系統(tǒng),基于RSSI技術(shù),由參考節(jié)點和定位節(jié)點組成。該定位引擎輸入?yún)?shù)主要有四種(如圖2),其中 A表示與發(fā)射端距離1m的 RSSI值,用dBm表示;n_index表示信號傳播系數(shù)。
圖2 定位引擎的參數(shù)計算
(1)參考節(jié)點:參考節(jié)點是一種已知位置的靜態(tài)節(jié)點,其坐標(biāo)位置(X、Y值)是固定的,并且不參與定位計算。一個定位區(qū)域通常由8個參考節(jié)點組成,最少3至4個參考節(jié)點。參考節(jié)點必須正確的配置在定位區(qū)域中的位置,它的任務(wù)是提供一個包含自己位置X、Y坐標(biāo)和RSSI值(指節(jié)點接收到的無線信號強度大小,用于判斷通信雙方距離)的信息包給數(shù)據(jù)中心。其工作流程如圖3所示。
(2)定位節(jié)點:定位節(jié)點能夠與離自己最近的參考節(jié)點通信,收集這些節(jié)點的X、Y坐標(biāo)和RSSI值,根據(jù)這些信息和輸入?yún)?shù)(A/N)一起計算自己的位置信息,然后將適當(dāng)?shù)男畔l(fā)送給網(wǎng)關(guān),通過網(wǎng)關(guān)與上位機形成另一個直觀的系統(tǒng)。
圖3 參考節(jié)點工作流程
(3)參考節(jié)點與定位節(jié)點的設(shè)置:在火車行李全程監(jiān)控系統(tǒng)中,參考節(jié)點應(yīng)放置于火車車廂中,用于隨時接收附近的定位節(jié)點信號,實現(xiàn)對其定位。而定位節(jié)點設(shè)置在行李中。參考節(jié)點與定位節(jié)點的設(shè)置如圖4所示,其中圓形為參考節(jié)點,方形為定位節(jié)點。
圖4 參考節(jié)點與定位節(jié)點的放置
數(shù)據(jù)中心模塊實為無線定位系統(tǒng)的網(wǎng)關(guān)。通過與定位節(jié)點通信,得到定位節(jié)點坐標(biāo),將坐標(biāo)信息傳送至上位機。它在整個系統(tǒng)中起著至關(guān)重要的作用。首先它要接收由監(jiān)控軟件提供的各參考節(jié)點和定位節(jié)點的配置數(shù)據(jù),并根據(jù)不同的方式發(fā)送給相應(yīng)的節(jié)點,其次還要接收各節(jié)點反饋的有效數(shù)據(jù)并傳輸給監(jiān)控軟件。
上位機模塊主要是由Visual Basic.Net編寫的數(shù)據(jù)處理和顯示的上位機軟件。其通過串口將數(shù)據(jù)讀入并儲存,然后再處理得到移動節(jié)點坐標(biāo)信息。最后再通過坐標(biāo)轉(zhuǎn)換,在列車車廂地圖上標(biāo)出移動節(jié)點所在位置。同時有在移動節(jié)點消失或離開監(jiān)控位置時的警報功能。
數(shù)據(jù)收發(fā)模塊是用于直接讀取由下位機進行數(shù)據(jù)通信的模塊。數(shù)據(jù)收發(fā)模塊通過串行通信口與下位機進行通信,以此獲得信息或向下位機發(fā)出命令。
系統(tǒng)采用Windows提供的API控制串口。在此種方法中,COM是 PC機的通信 I/O端口,作為Windows的一種系統(tǒng)資源,我們可以把它作為一個文件來進行處理。所以我們可以利用Create File(),Write File()和Read File()等文件操作函數(shù)來實現(xiàn)對端口的讀寫操作[3],但是我們在使用這些函數(shù)的時候必須以“COM1”或“COM2”為文件名。
在上位機軟件中在打開串口后,就會自動開啟定時器,定時接收數(shù)據(jù)。
在本模塊中,主要利用了VB.Net提供的強大的字符串處理函數(shù)來實現(xiàn)數(shù)據(jù)分離和提取。
(1)數(shù)據(jù)分離的實現(xiàn)
數(shù)據(jù)分離主要利用了VB.Net中字符串類的Split()函數(shù)來實現(xiàn)。其功能是將一個字符串分離成一個一維的字符串?dāng)?shù)組。其聲明如下[2]:
Function Split(
ByVal Expression As String,
Optional ByVal Delimiter As String="",
Optional ByVal Limit As Integer= -1,
Optional ByVal Compare As Compare Method=Compare Method.Binary)As String()
其中,Expression為必選參數(shù),是待分離的String表達式,包含子字符串和分隔符。Delimiter為可選參數(shù),是用于標(biāo)識子字符串界限的任何單個字符。如果省略了Delimiter,則假定空白字符(“”)為分隔符,Limit也為可選,指的是輸入字符串應(yīng)拆分到的子字符串的最大數(shù)量。默認(rèn)值為-1,指示在Delimiter字符串的每個匹配項處都拆分輸入字符串。Compare也是可選參數(shù)。通過Split()函數(shù),實現(xiàn)將從數(shù)據(jù)中心接收到的分離。
(2)信息提取的實現(xiàn)
信息提取部分主要實現(xiàn)提取經(jīng)數(shù)據(jù)分離的數(shù)據(jù)中的有效信息。在分離信息后,數(shù)據(jù)存儲在Work Data數(shù)組中?,F(xiàn)在我們需要的信息有:數(shù)據(jù)發(fā)送者短地址及其坐標(biāo)(X,Y),就可以將Work Data(5),Work Data(6)組織為短地址。將Work Data(19),Work Data(20)組織成 X坐標(biāo),Work Data(21),Work Data(22)組織為Y坐標(biāo)。
(1)節(jié)點坐標(biāo)顯示
各節(jié)點的坐標(biāo)信息發(fā)送到上位機后,經(jīng)數(shù)據(jù)分離和信息提取后傳送到信息顯示模塊。信息顯示模塊在獲得各節(jié)點的坐標(biāo)信息后直接將其和節(jié)點的短地址一起顯示。
(2)地圖顯示
信息顯示模塊在獲得坐標(biāo)后,不但將其以文字的形式顯示出來,同時對坐標(biāo)進行坐標(biāo)變換后,還在火車的地圖中將其繪制出來,以方便查看,地圖顯示效果如圖5所示。
圖5 節(jié)點坐標(biāo)顯示
其中,中間盒子形狀的為行李位置,其余為參考節(jié)點位置。
數(shù)據(jù)收發(fā)模塊。具有端口選擇功能,當(dāng)選擇功能無效時會有彈出窗口警告。在選擇端口后能夠有效實現(xiàn)數(shù)據(jù)傳送和接收。
信息提取模塊。能夠在接收到數(shù)據(jù)后進行有效信息提取。當(dāng)接收到的數(shù)據(jù)不符合格式時,能夠自動屏蔽。
信息存儲模塊。得到節(jié)點坐標(biāo)后,能夠清晰地實現(xiàn)地圖繪制。查看方便,界面友好。
火車行李全程監(jiān)控系統(tǒng)的上位機軟件,能夠有效實現(xiàn)對行李的全程監(jiān)控,達到了方便用戶使用的目的。同時還具備數(shù)據(jù)存儲等功能,方便事后分析。由于時間問題和與鐵路部門的溝通協(xié)調(diào)問題,該軟件還未能實地到火車中測量繪制火車車廂內(nèi)地圖,軟件中暫時未使用火車地圖,因此系統(tǒng)的完善還有待在火車運行中進行實地測試。
[1]尹天明,李也白,張球河,王宇鴿.基于Win API串行通信技術(shù)的應(yīng)用研究[J].計算機技術(shù)與發(fā)展,2006,16(4):193-195.
[2]Jim Beveridge,Robert Wiener.Multithreading Application in Win32[M].候捷,譯.武漢:華中科技大學(xué)出版社,2002.
[3]黃澤建,林君.基于API的串行口通信軟件設(shè)計[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2003,21(4):357-361.