周光發
(江蘇警官學院公安科技系,南京 210012)
火車行李監控系統是一套利用無線定位技術,對行李進行全程監控的行李安全保障系統。該系統能夠對行李的位置變化進行全程監控,從而實現對行李的全面監控。該系統充分利用了火車這一封閉空間,使得無線定位技術的定位精度快、實時性好等優點能夠完全發揮,達到監控行李狀態的目的。該系統不但可以用于對可疑行李的監控跟蹤,同時也能夠用于實時保護旅客貴重行李。本項目探討了如何采用省電、可靠、低成本、時延短、網絡容量大、安全的Zigbee無線定位協議[1],設計行李監控系統的系統結構與上位機軟件設計與實現。
火車行李監控系統主要由:無線定位、數據中心以及上位機三部分組成。其中無線定位部分由參考節點和定位節點組成,參考節點設置于火車車廂各部,定位節點放置于行李內。數據中心為無線定位系統的網關,用于實現無線定位系統與上位機之間的通信。通過無線與無線網絡中的所有定位節點通信,并將最終定位信息通過串口傳至上位機。上位機在接收到數據中心的數據后,經過分析處理,輸出至用戶,給用戶決策提供依據。系統體系結構如圖1所示。

圖1 系統體系結構
無線定位模塊是一個基于CC2431無線定位引擎的定位系統,基于RSSI技術,由參考節點和定位節點組成。該定位引擎輸入參數主要有四種(如圖2),其中 A表示與發射端距離1m的 RSSI值,用dBm表示;n_index表示信號傳播系數。

圖2 定位引擎的參數計算
(1)參考節點:參考節點是一種已知位置的靜態節點,其坐標位置(X、Y值)是固定的,并且不參與定位計算。一個定位區域通常由8個參考節點組成,最少3至4個參考節點。參考節點必須正確的配置在定位區域中的位置,它的任務是提供一個包含自己位置X、Y坐標和RSSI值(指節點接收到的無線信號強度大小,用于判斷通信雙方距離)的信息包給數據中心。其工作流程如圖3所示。
(2)定位節點:定位節點能夠與離自己最近的參考節點通信,收集這些節點的X、Y坐標和RSSI值,根據這些信息和輸入參數(A/N)一起計算自己的位置信息,然后將適當的信息發送給網關,通過網關與上位機形成另一個直觀的系統。

圖3 參考節點工作流程
(3)參考節點與定位節點的設置:在火車行李全程監控系統中,參考節點應放置于火車車廂中,用于隨時接收附近的定位節點信號,實現對其定位。而定位節點設置在行李中。參考節點與定位節點的設置如圖4所示,其中圓形為參考節點,方形為定位節點。

圖4 參考節點與定位節點的放置
數據中心模塊實為無線定位系統的網關。通過與定位節點通信,得到定位節點坐標,將坐標信息傳送至上位機。它在整個系統中起著至關重要的作用。首先它要接收由監控軟件提供的各參考節點和定位節點的配置數據,并根據不同的方式發送給相應的節點,其次還要接收各節點反饋的有效數據并傳輸給監控軟件。
上位機模塊主要是由Visual Basic.Net編寫的數據處理和顯示的上位機軟件。其通過串口將數據讀入并儲存,然后再處理得到移動節點坐標信息。最后再通過坐標轉換,在列車車廂地圖上標出移動節點所在位置。同時有在移動節點消失或離開監控位置時的警報功能。
數據收發模塊是用于直接讀取由下位機進行數據通信的模塊。數據收發模塊通過串行通信口與下位機進行通信,以此獲得信息或向下位機發出命令。
系統采用Windows提供的API控制串口。在此種方法中,COM是 PC機的通信 I/O端口,作為Windows的一種系統資源,我們可以把它作為一個文件來進行處理。所以我們可以利用Create File(),Write File()和Read File()等文件操作函數來實現對端口的讀寫操作[3],但是我們在使用這些函數的時候必須以“COM1”或“COM2”為文件名。
在上位機軟件中在打開串口后,就會自動開啟定時器,定時接收數據。
在本模塊中,主要利用了VB.Net提供的強大的字符串處理函數來實現數據分離和提取。
(1)數據分離的實現
數據分離主要利用了VB.Net中字符串類的Split()函數來實現。其功能是將一個字符串分離成一個一維的字符串數組。其聲明如下[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為必選參數,是待分離的String表達式,包含子字符串和分隔符。Delimiter為可選參數,是用于標識子字符串界限的任何單個字符。如果省略了Delimiter,則假定空白字符(“”)為分隔符,Limit也為可選,指的是輸入字符串應拆分到的子字符串的最大數量。默認值為-1,指示在Delimiter字符串的每個匹配項處都拆分輸入字符串。Compare也是可選參數。通過Split()函數,實現將從數據中心接收到的分離。
(2)信息提取的實現
信息提取部分主要實現提取經數據分離的數據中的有效信息。在分離信息后,數據存儲在Work Data數組中?,F在我們需要的信息有:數據發送者短地址及其坐標(X,Y),就可以將Work Data(5),Work Data(6)組織為短地址。將Work Data(19),Work Data(20)組織成 X坐標,Work Data(21),Work Data(22)組織為Y坐標。
(1)節點坐標顯示
各節點的坐標信息發送到上位機后,經數據分離和信息提取后傳送到信息顯示模塊。信息顯示模塊在獲得各節點的坐標信息后直接將其和節點的短地址一起顯示。
(2)地圖顯示
信息顯示模塊在獲得坐標后,不但將其以文字的形式顯示出來,同時對坐標進行坐標變換后,還在火車的地圖中將其繪制出來,以方便查看,地圖顯示效果如圖5所示。

圖5 節點坐標顯示
其中,中間盒子形狀的為行李位置,其余為參考節點位置。
數據收發模塊。具有端口選擇功能,當選擇功能無效時會有彈出窗口警告。在選擇端口后能夠有效實現數據傳送和接收。
信息提取模塊。能夠在接收到數據后進行有效信息提取。當接收到的數據不符合格式時,能夠自動屏蔽。
信息存儲模塊。得到節點坐標后,能夠清晰地實現地圖繪制。查看方便,界面友好。
火車行李全程監控系統的上位機軟件,能夠有效實現對行李的全程監控,達到了方便用戶使用的目的。同時還具備數據存儲等功能,方便事后分析。由于時間問題和與鐵路部門的溝通協調問題,該軟件還未能實地到火車中測量繪制火車車廂內地圖,軟件中暫時未使用火車地圖,因此系統的完善還有待在火車運行中進行實地測試。
[1]尹天明,李也白,張球河,王宇鴿.基于Win API串行通信技術的應用研究[J].計算機技術與發展,2006,16(4):193-195.
[2]Jim Beveridge,Robert Wiener.Multithreading Application in Win32[M].候捷,譯.武漢:華中科技大學出版社,2002.
[3]黃澤建,林君.基于API的串行口通信軟件設計[J].吉林大學學報(信息科學版),2003,21(4):357-361.