,,,
(大連海事大學 航海學院,遼寧大連 116026)
目前各類航標自動監控系統大都采用臺式電腦。這些監控系統基本都是在電子海圖系統的基礎上,連接航標動態數據庫,實現航標的自動監控[1]。這種系統一般功能強大但不易移動,常年運行于監控中心的值班室等,需要值班人員輪值值守。當有航標出現異常時再聯系工作船上相關人員進行維護,工作船一般很難自行發現異常的航標,一旦值班人員失誤或沒有值守就會造成異常航標維護的延后從而影響船舶的航行安全。基于以上問題,開發基于Android系統的移動航標動態監控系統,采用Webservice的方式實時獲取航標動態數據庫的信息,并將這些信息疊加顯示到本地海圖上,一旦有異常航標發生則及時報警提示,實現全天候的航標動態監控。本系統適宜工作船上人員隨身攜帶,隨時發現問題隨時解決,同時也可以和監控中心聯動,提高航標的維護效率,節省養護成本。
航標遙測監控系統是“長江南京至瀏河口段數字航道與智能航運建設示范工程”(以下簡稱“示范工程”)的子系統,由航標遙測終端、航標信息處理服務器、航標信息數據庫及航標監控系統組成。
航標遙測終端負責航標信息的采集并上傳到服務器,每個航標上配備具有GPS定位(僅對浮標)、數據采集、航標控制和遠程通信功能的專用設備(航標遙測終端),主要功能是通過多種傳感器獲得航標現場有關信息,發送狀態和報警信息、接受并執行遙控指令[2]。
航標信息處理服務器負責接收并處理航標遙測終端上傳的航標動態信息,并把處理信息存入航標信息數據庫。
航標信息數據庫負責航標信息的存儲,為應用系統提供數據支持。
航標監控系統提供航標的監視功能,利用航標信息數據庫的數據,把航標的動靜態信息呈現到二維電子海圖上,遇到異常航標及時報警提示管理人員,方便航道管理部門對航標進行維護管理。
目前該系統已經在南京航道局可靠穩定的運行了幾年,為航道管理人員提供統計分析與輔助決策功能,極大地提高了航標的維護管理水平。本文工作是利用該系統的航標信息數據庫信息建立移動航標動態監控系統。
Android是一種以Linux為內核的自由及開放源代碼的移動操作系統,主要應用在智能手機和平板電腦上,由于Android平臺的開放性,使其得到迅速的普及。
Android的應用使用Java語言編寫,同時還提供JNI的編程方式,為熟悉C/C++開發語言的開發者提供了便利。在開發過程中,有許多的例子程序和開源應用提供下載,并且IDE使用開源的Eclipse,集成開發環境有豐富的源代碼模型,使得應用程序的開發難度大大降低,縮短了開發周期。
本監控系統選擇Android作為移動航標監控系統的基礎平臺。
移動航標動態監控系統的結構見圖1。該系統主要由航標、數據庫、服務器和移動航標監控終端組成。

圖1 總體結構示意
系統的工作原理是通過安裝在航標上的數據采集器(監控終端)采集航標工作參數,并利用GPS獲得航標的經緯度數據,再通過公網GSM通信模塊,按照設定傳輸方式將航標工作參數、航標位置等數據數字化后實時傳輸到航標監控中心,監控中心由高性能計算機、收發設備、GPS后差分處理器組成,監控中心負責航標數據的處理和存儲。
Webservice服務器負責響應移動航標監控終端的請求,將請求的航標動態數據從數據庫取出返回給終端處理。
移動航標監控終端的功能包括電子海圖的顯示和航標的動態監控與報警顯示,終端從Webservice服務器獲取航標動態信息后,將航標動態信息實時疊加顯示到電子海圖上,并將報警航標以醒目的提示顯示給用戶。
由圖1可見,本系統是C/S結構,由客戶端和服務器端組成,服務器端由Webservice服務器實現,接受客戶端的請求,返回航標動態信息到客戶端;客戶端就是航標移動監控終端,負責請求和接收航標動態信息,并實時將航標動態信息疊加顯示到本地電子海圖上,實現航標的動態監控。
電子海圖顯示是航標監控系統的基礎,可以很好地為航標提供定位背景,Android平臺上的電子海圖顯示是以Java語言實現,通過解析符合IHO S-57標準的電子海圖數據獲取各個物標的空間及特征屬性,通過投影與坐標轉換,將這些物標以IHO S-52標準要求的方式繪制到屏幕上,形成電子海圖的顯示。

圖2 電子海圖顯示
利用電子海圖就可以對航標進行準確的定位和標繪,本系統采用在自主開發的基于Android系統的S-57電子海圖顯示平臺上疊加顯示航標動態信息,將航標的動態信息,如漂移、欠壓、無法定位等動態信息實時顯示到電子海圖上,同時還可以實時給出報警信息,實現航標的動態監控。
在服務器的數據庫中存有航標的狀態或屬性,包括航標名稱、終端ID、航標類別、基準緯度、基準經度、接收時間、工作狀態、管理狀態、GPS定位是否有效、GPS是否正常、EPROM是否正常、AD是否正常、串口芯片是否正常、電量測量芯片是否正常、燈器控制器是否正常、充電狀態是否正常、燈質測量是否正常、電源是否過壓、電源是否欠壓、燈質是否正常、是否被撞擊、當前緯度、當前經度、位移門限等。這些信息有的是靜態的,如航標名稱、ID等;有的是動態的,是經過終端上報的短信息解析入庫形成的,如當前經緯度、燈器狀態等。
本系統的服務器端采用Webservice的方式部署。當有客戶端請求某個或全部航標信息的時候,通過Webservice獲取客戶端的請求參數,根據參數從數據庫獲取請求航標的狀態和屬性,處理后的結果以XML形式返回來給客戶端;客戶端程序解析這些XML數據,然后進行顯示或報警。
在監控系統中,電子海圖的繪制和刷新會占用很多的系統的開銷,而通過網絡不斷地更新航標動態信息在網絡不是太暢通的情況下也會占用大量的資源,如果將兩者放在同一線程來做,就很容易影響電子海圖的繪制與刷新,造成系統反應遲鈍,影響用戶的使用感受。
為解決這個問題,系統采用Android的Service組件,Service運行在后臺新的線程,也可以設定開啟新的進程,利用Service可以實現不間斷的網絡訪問進行數據的動態更新而不影響前臺的操作。
Service后端的數據最終還是要呈現在前端Activity(顯示電子海圖及航標)之上的,在啟動Service時,系統會重新開啟一個新的進程,這就涉及到不同進程間通信的問題,有兩種方法可以實現:一是通過AIDL(Android Interface Definition Language ,即Android接口定義語言);二是通過Android的廣播機制來完成。本系統采用第二種方式,在后臺Service獲取到一個航標動態信息后通過sendBroadcast(Intent)方法將該信息廣播出去,然后通過在前端Activity中注冊的BroadcastReceiver接收該廣播消息,獲取航標動態信息,然后更新顯示。
不同于臺式設備有鼠標和鍵盤來進行人機交互,移動智能設備主要靠觸摸的方式來完成各個功能的操作。就本系統而言,觸控操作分為兩部分:電子海圖的操作,包括漫游和縮放以及航標的選定操作。
觸控操作通過重寫電子海圖的主顯示窗口MainChartView類的onTouchEvent (MotionEvent event)方法來實現,當觸摸事件發生的時候會觸發該函數,通過參數event及ACTION_MASK可以區分單點及多點觸摸事件,進而對事件進行處理。
電子海圖操作的實現主要通過Matrix來完成。在拖動和縮放過程中,通過移動及縮放的距離來修改Matrix參數,通過屏幕的刷新使得內存電子海圖圖像進行相應的移動和縮放;在移動或縮放動作結束的時候,再根據最終的移動或縮放參數來重繪電子海圖形成新的內存圖像顯示出來。這樣就實現了電子海圖的漫游和縮放操作。
在航標的選定操作上,為了查看屏幕上一個報警航標的詳細信息,首先要選定該航標,為了和電子海圖的漫游操作相區別,航標的選定操作通過單點觸控的“長按”事件來完成,具體實現過程如下。
1)當屏幕觸摸發生,即啟動一個計時器。
2)在計時器結束之前,如果有移動或者縮放操作的發生,則放棄該計時器;否則在計時器結束的時候開始航標的搜索操作。
3)將觸控點的屏幕坐標轉換為地理坐標。
4)遍歷航標動態列表,搜索與該地理坐標距離在設定范圍內的航標;如果找到則彈出該航標的詳細信息框,見圖3。
航標監控系統重點監測航標燈的充電電流、充電電壓、工作電流、運行燈質以及航標位置、航標的意外碰撞等信息。通過定時輪詢的方式可以獲取這些重要物理參數或信息,航標遙測終端收到輪詢指令后,這些重要的物理參數、指標等通過專業電子元件、傳感器和GPS設備實時測量,然后按設定好的編碼方式通過GPRS/GSM模塊以短信的形式發送到監控中心,監控中心將這些動態信息解析后存入數據庫以備后用[3]。
在網絡條件正常的情況下,移動終端以一定的時間頻率動態請求航標信息,同時根據獲取的信息實時分析航標的工作狀態。本系統中對航標的異常情況根據嚴重程度分為三級:一級報警是距離報警;二級報警有超時、電壓欠壓、燈質錯誤、GPS定位無效和GPS異常等;其它情況為三級報警。其中一級和二級報警是需要監控人員及時處理的異常,在電子海圖上航標符號以警戒色閃爍提示報警。另外還可以通過統計頁面查看所有的三級報警的航標數量及報警的詳細信息。

圖3 航標定位查詢
本系統的顯示效果見圖3、4。圖3是航標的動態標繪與詳細信息查詢界面,通過“長按”事件來選定航標,某個航標被選定后會彈出如圖3所示的詳細信息,并且航標的異常信息會以紅色標注提示用戶,十分醒目。在航標的詳細信息界面點擊“定位”按鈕,會將該航標居中顯示在電子海圖界面中,方便查看航標的方位。

圖4 航標報警統計
圖4為航標的報警統計與查詢界面。通過該界面可詳細查看各級報警航標的數量,同時還可以通過航標名稱模糊查詢某個航標。在列表中點擊某個航標可以顯示該航標的詳細信息,同樣通過定位按鈕可以將選定的航標居中顯示在電子海圖上。
以Android移動平臺為依托,實現了電子海圖的顯示,利用Webservice技術以及Android的Service組件和廣播機制實現了航標動態信息的獲取與更新顯示。本文所實現的系統界面美觀,操作方便,可以為航標維護人員提供極大的便利,同時提高航標的維護效率。耗電量大是本系統的不足之處,監控狀態下,屏幕長亮及持續的網絡訪問會耗費很多的電力,這些問題還有待于在實踐中進一步探索,繼續研究。
[1] 茅志兵,孫玉龍,錢蘇芬,等.橋區航標燈同步閃及監控管理系統設計[J].交通與計算機,2007,25(2):87-89.
[2] 陳 宏,彭國均.航標遙測遙控系統的設計與實現[J].船海工程,2007,36(2):126-128.
[3] 艾廷華,王 洪.電子航道圖與航標遙測監控系統[J].武漢大學學報,2008,33(4):347-352.