,,,
(大連海事大學 航海學院,遼寧大連 116026)
目前各類航標自動監(jiān)控系統(tǒng)大都采用臺式電腦。這些監(jiān)控系統(tǒng)基本都是在電子海圖系統(tǒng)的基礎上,連接航標動態(tài)數(shù)據(jù)庫,實現(xiàn)航標的自動監(jiān)控[1]。這種系統(tǒng)一般功能強大但不易移動,常年運行于監(jiān)控中心的值班室等,需要值班人員輪值值守。當有航標出現(xiàn)異常時再聯(lián)系工作船上相關人員進行維護,工作船一般很難自行發(fā)現(xiàn)異常的航標,一旦值班人員失誤或沒有值守就會造成異常航標維護的延后從而影響船舶的航行安全?;谝陨蠁栴},開發(fā)基于Android系統(tǒng)的移動航標動態(tài)監(jiān)控系統(tǒng),采用Webservice的方式實時獲取航標動態(tài)數(shù)據(jù)庫的信息,并將這些信息疊加顯示到本地海圖上,一旦有異常航標發(fā)生則及時報警提示,實現(xiàn)全天候的航標動態(tài)監(jiān)控。本系統(tǒng)適宜工作船上人員隨身攜帶,隨時發(fā)現(xiàn)問題隨時解決,同時也可以和監(jiān)控中心聯(lián)動,提高航標的維護效率,節(jié)省養(yǎng)護成本。
航標遙測監(jiān)控系統(tǒng)是“長江南京至瀏河口段數(shù)字航道與智能航運建設示范工程”(以下簡稱“示范工程”)的子系統(tǒng),由航標遙測終端、航標信息處理服務器、航標信息數(shù)據(jù)庫及航標監(jiān)控系統(tǒng)組成。
航標遙測終端負責航標信息的采集并上傳到服務器,每個航標上配備具有GPS定位(僅對浮標)、數(shù)據(jù)采集、航標控制和遠程通信功能的專用設備(航標遙測終端),主要功能是通過多種傳感器獲得航標現(xiàn)場有關信息,發(fā)送狀態(tài)和報警信息、接受并執(zhí)行遙控指令[2]。
航標信息處理服務器負責接收并處理航標遙測終端上傳的航標動態(tài)信息,并把處理信息存入航標信息數(shù)據(jù)庫。
航標信息數(shù)據(jù)庫負責航標信息的存儲,為應用系統(tǒng)提供數(shù)據(jù)支持。
航標監(jiān)控系統(tǒng)提供航標的監(jiān)視功能,利用航標信息數(shù)據(jù)庫的數(shù)據(jù),把航標的動靜態(tài)信息呈現(xiàn)到二維電子海圖上,遇到異常航標及時報警提示管理人員,方便航道管理部門對航標進行維護管理。
目前該系統(tǒng)已經在南京航道局可靠穩(wěn)定的運行了幾年,為航道管理人員提供統(tǒng)計分析與輔助決策功能,極大地提高了航標的維護管理水平。本文工作是利用該系統(tǒng)的航標信息數(shù)據(jù)庫信息建立移動航標動態(tài)監(jiān)控系統(tǒng)。
Android是一種以Linux為內核的自由及開放源代碼的移動操作系統(tǒng),主要應用在智能手機和平板電腦上,由于Android平臺的開放性,使其得到迅速的普及。
Android的應用使用Java語言編寫,同時還提供JNI的編程方式,為熟悉C/C++開發(fā)語言的開發(fā)者提供了便利。在開發(fā)過程中,有許多的例子程序和開源應用提供下載,并且IDE使用開源的Eclipse,集成開發(fā)環(huán)境有豐富的源代碼模型,使得應用程序的開發(fā)難度大大降低,縮短了開發(fā)周期。
本監(jiān)控系統(tǒng)選擇Android作為移動航標監(jiān)控系統(tǒng)的基礎平臺。
移動航標動態(tài)監(jiān)控系統(tǒng)的結構見圖1。該系統(tǒng)主要由航標、數(shù)據(jù)庫、服務器和移動航標監(jiān)控終端組成。
圖1 總體結構示意
系統(tǒng)的工作原理是通過安裝在航標上的數(shù)據(jù)采集器(監(jiān)控終端)采集航標工作參數(shù),并利用GPS獲得航標的經緯度數(shù)據(jù),再通過公網GSM通信模塊,按照設定傳輸方式將航標工作參數(shù)、航標位置等數(shù)據(jù)數(shù)字化后實時傳輸?shù)胶綐吮O(jiān)控中心,監(jiān)控中心由高性能計算機、收發(fā)設備、GPS后差分處理器組成,監(jiān)控中心負責航標數(shù)據(jù)的處理和存儲。
Webservice服務器負責響應移動航標監(jiān)控終端的請求,將請求的航標動態(tài)數(shù)據(jù)從數(shù)據(jù)庫取出返回給終端處理。
移動航標監(jiān)控終端的功能包括電子海圖的顯示和航標的動態(tài)監(jiān)控與報警顯示,終端從Webservice服務器獲取航標動態(tài)信息后,將航標動態(tài)信息實時疊加顯示到電子海圖上,并將報警航標以醒目的提示顯示給用戶。
由圖1可見,本系統(tǒng)是C/S結構,由客戶端和服務器端組成,服務器端由Webservice服務器實現(xiàn),接受客戶端的請求,返回航標動態(tài)信息到客戶端;客戶端就是航標移動監(jiān)控終端,負責請求和接收航標動態(tài)信息,并實時將航標動態(tài)信息疊加顯示到本地電子海圖上,實現(xiàn)航標的動態(tài)監(jiān)控。
電子海圖顯示是航標監(jiān)控系統(tǒng)的基礎,可以很好地為航標提供定位背景,Android平臺上的電子海圖顯示是以Java語言實現(xiàn),通過解析符合IHO S-57標準的電子海圖數(shù)據(jù)獲取各個物標的空間及特征屬性,通過投影與坐標轉換,將這些物標以IHO S-52標準要求的方式繪制到屏幕上,形成電子海圖的顯示。
圖2 電子海圖顯示
利用電子海圖就可以對航標進行準確的定位和標繪,本系統(tǒng)采用在自主開發(fā)的基于Android系統(tǒng)的S-57電子海圖顯示平臺上疊加顯示航標動態(tài)信息,將航標的動態(tài)信息,如漂移、欠壓、無法定位等動態(tài)信息實時顯示到電子海圖上,同時還可以實時給出報警信息,實現(xiàn)航標的動態(tài)監(jiān)控。
在服務器的數(shù)據(jù)庫中存有航標的狀態(tài)或屬性,包括航標名稱、終端ID、航標類別、基準緯度、基準經度、接收時間、工作狀態(tài)、管理狀態(tài)、GPS定位是否有效、GPS是否正常、EPROM是否正常、AD是否正常、串口芯片是否正常、電量測量芯片是否正常、燈器控制器是否正常、充電狀態(tài)是否正常、燈質測量是否正常、電源是否過壓、電源是否欠壓、燈質是否正常、是否被撞擊、當前緯度、當前經度、位移門限等。這些信息有的是靜態(tài)的,如航標名稱、ID等;有的是動態(tài)的,是經過終端上報的短信息解析入庫形成的,如當前經緯度、燈器狀態(tài)等。
本系統(tǒng)的服務器端采用Webservice的方式部署。當有客戶端請求某個或全部航標信息的時候,通過Webservice獲取客戶端的請求參數(shù),根據(jù)參數(shù)從數(shù)據(jù)庫獲取請求航標的狀態(tài)和屬性,處理后的結果以XML形式返回來給客戶端;客戶端程序解析這些XML數(shù)據(jù),然后進行顯示或報警。
在監(jiān)控系統(tǒng)中,電子海圖的繪制和刷新會占用很多的系統(tǒng)的開銷,而通過網絡不斷地更新航標動態(tài)信息在網絡不是太暢通的情況下也會占用大量的資源,如果將兩者放在同一線程來做,就很容易影響電子海圖的繪制與刷新,造成系統(tǒng)反應遲鈍,影響用戶的使用感受。
為解決這個問題,系統(tǒng)采用Android的Service組件,Service運行在后臺新的線程,也可以設定開啟新的進程,利用Service可以實現(xiàn)不間斷的網絡訪問進行數(shù)據(jù)的動態(tài)更新而不影響前臺的操作。
Service后端的數(shù)據(jù)最終還是要呈現(xiàn)在前端Activity(顯示電子海圖及航標)之上的,在啟動Service時,系統(tǒng)會重新開啟一個新的進程,這就涉及到不同進程間通信的問題,有兩種方法可以實現(xiàn):一是通過AIDL(Android Interface Definition Language ,即Android接口定義語言);二是通過Android的廣播機制來完成。本系統(tǒng)采用第二種方式,在后臺Service獲取到一個航標動態(tài)信息后通過sendBroadcast(Intent)方法將該信息廣播出去,然后通過在前端Activity中注冊的BroadcastReceiver接收該廣播消息,獲取航標動態(tài)信息,然后更新顯示。
不同于臺式設備有鼠標和鍵盤來進行人機交互,移動智能設備主要靠觸摸的方式來完成各個功能的操作。就本系統(tǒng)而言,觸控操作分為兩部分:電子海圖的操作,包括漫游和縮放以及航標的選定操作。
觸控操作通過重寫電子海圖的主顯示窗口MainChartView類的onTouchEvent (MotionEvent event)方法來實現(xiàn),當觸摸事件發(fā)生的時候會觸發(fā)該函數(shù),通過參數(shù)event及ACTION_MASK可以區(qū)分單點及多點觸摸事件,進而對事件進行處理。
電子海圖操作的實現(xiàn)主要通過Matrix來完成。在拖動和縮放過程中,通過移動及縮放的距離來修改Matrix參數(shù),通過屏幕的刷新使得內存電子海圖圖像進行相應的移動和縮放;在移動或縮放動作結束的時候,再根據(jù)最終的移動或縮放參數(shù)來重繪電子海圖形成新的內存圖像顯示出來。這樣就實現(xiàn)了電子海圖的漫游和縮放操作。
在航標的選定操作上,為了查看屏幕上一個報警航標的詳細信息,首先要選定該航標,為了和電子海圖的漫游操作相區(qū)別,航標的選定操作通過單點觸控的“長按”事件來完成,具體實現(xiàn)過程如下。
1)當屏幕觸摸發(fā)生,即啟動一個計時器。
2)在計時器結束之前,如果有移動或者縮放操作的發(fā)生,則放棄該計時器;否則在計時器結束的時候開始航標的搜索操作。
3)將觸控點的屏幕坐標轉換為地理坐標。
4)遍歷航標動態(tài)列表,搜索與該地理坐標距離在設定范圍內的航標;如果找到則彈出該航標的詳細信息框,見圖3。
航標監(jiān)控系統(tǒng)重點監(jiān)測航標燈的充電電流、充電電壓、工作電流、運行燈質以及航標位置、航標的意外碰撞等信息。通過定時輪詢的方式可以獲取這些重要物理參數(shù)或信息,航標遙測終端收到輪詢指令后,這些重要的物理參數(shù)、指標等通過專業(yè)電子元件、傳感器和GPS設備實時測量,然后按設定好的編碼方式通過GPRS/GSM模塊以短信的形式發(fā)送到監(jiān)控中心,監(jiān)控中心將這些動態(tài)信息解析后存入數(shù)據(jù)庫以備后用[3]。
在網絡條件正常的情況下,移動終端以一定的時間頻率動態(tài)請求航標信息,同時根據(jù)獲取的信息實時分析航標的工作狀態(tài)。本系統(tǒng)中對航標的異常情況根據(jù)嚴重程度分為三級:一級報警是距離報警;二級報警有超時、電壓欠壓、燈質錯誤、GPS定位無效和GPS異常等;其它情況為三級報警。其中一級和二級報警是需要監(jiān)控人員及時處理的異常,在電子海圖上航標符號以警戒色閃爍提示報警。另外還可以通過統(tǒng)計頁面查看所有的三級報警的航標數(shù)量及報警的詳細信息。
圖3 航標定位查詢
本系統(tǒng)的顯示效果見圖3、4。圖3是航標的動態(tài)標繪與詳細信息查詢界面,通過“長按”事件來選定航標,某個航標被選定后會彈出如圖3所示的詳細信息,并且航標的異常信息會以紅色標注提示用戶,十分醒目。在航標的詳細信息界面點擊“定位”按鈕,會將該航標居中顯示在電子海圖界面中,方便查看航標的方位。
圖4 航標報警統(tǒng)計
圖4為航標的報警統(tǒng)計與查詢界面。通過該界面可詳細查看各級報警航標的數(shù)量,同時還可以通過航標名稱模糊查詢某個航標。在列表中點擊某個航標可以顯示該航標的詳細信息,同樣通過定位按鈕可以將選定的航標居中顯示在電子海圖上。
以Android移動平臺為依托,實現(xiàn)了電子海圖的顯示,利用Webservice技術以及Android的Service組件和廣播機制實現(xiàn)了航標動態(tài)信息的獲取與更新顯示。本文所實現(xiàn)的系統(tǒng)界面美觀,操作方便,可以為航標維護人員提供極大的便利,同時提高航標的維護效率。耗電量大是本系統(tǒng)的不足之處,監(jiān)控狀態(tài)下,屏幕長亮及持續(xù)的網絡訪問會耗費很多的電力,這些問題還有待于在實踐中進一步探索,繼續(xù)研究。
[1] 茅志兵,孫玉龍,錢蘇芬,等.橋區(qū)航標燈同步閃及監(jiān)控管理系統(tǒng)設計[J].交通與計算機,2007,25(2):87-89.
[2] 陳 宏,彭國均.航標遙測遙控系統(tǒng)的設計與實現(xiàn)[J].船海工程,2007,36(2):126-128.
[3] 艾廷華,王 洪.電子航道圖與航標遙測監(jiān)控系統(tǒng)[J].武漢大學學報,2008,33(4):347-352.