李舉文
摘要:在某些情況下,對(duì)一些特殊人群的位置,我們需要實(shí)施監(jiān)測,了解他們的動(dòng)向,現(xiàn)代智能設(shè)備的普及使得這項(xiàng)功能的應(yīng)用擺脫了專業(yè)設(shè)備的束縛和掣肘,提供了低成本高效率的實(shí)施平臺(tái)。文中以使用Basic4ppc開發(fā)平臺(tái),結(jié)合網(wǎng)絡(luò)功能對(duì)Windows Mobile系統(tǒng)的智能設(shè)備實(shí)現(xiàn)這項(xiàng)功能以及類似功能的擴(kuò)展。
關(guān)鍵詞:Windows Mobile設(shè)備;Basic4ppc開發(fā)平臺(tái);位置監(jiān)測;GPS;電子地圖API
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)05-1049-03
1概述
時(shí)代的進(jìn)步,使各式各樣的智能設(shè)備在大眾中普及,其中,用于智能手機(jī)和掌上電腦的微軟的Windows Mobile系統(tǒng)是比較有影響的一種智能設(shè)備操作系統(tǒng)。在這個(gè)平臺(tái)上可以開發(fā)出各種功能復(fù)雜的智能設(shè)備應(yīng)用程序,擴(kuò)展智能設(shè)備的功能。BASIC4PPC是開發(fā)智能設(shè)備應(yīng)用程序的高效平臺(tái)和程序設(shè)計(jì)語言,使用它可以方便高效的實(shí)現(xiàn)復(fù)雜的應(yīng)用方案。
2項(xiàng)目用到技術(shù)概念2 .1 BASIC4PPC簡介
Basic4ppc是一種用于Windows Mobile移動(dòng)設(shè)備開發(fā)應(yīng)用程序的編程工具,系統(tǒng)本身提供了大量的可視化控件,可以很方便的使用可視化方式直接繪制用戶的圖形界面,系統(tǒng)使用面向?qū)ο蟮木幊趟悸?,事件?qū)動(dòng)的編程機(jī)制,提供了大量的運(yùn)行庫文件,能簡單的實(shí)現(xiàn)復(fù)雜的功能,例如,控制系統(tǒng)的各種的傳感器,gps設(shè)備,網(wǎng)絡(luò)應(yīng)用等。
2.2 GPS
GPS,Global Positioning System,全球定位系統(tǒng)的簡稱,利用衛(wèi)星,在全球范圍內(nèi)實(shí)時(shí)進(jìn)行定位、導(dǎo)航的系統(tǒng)。GPS功能必須具備GPS終端、傳輸網(wǎng)絡(luò)和監(jiān)控平臺(tái)三個(gè)要素;這三個(gè)要素缺一不可;通過這三個(gè)要素,可以提供車輛輔助決策,追蹤,防盜、反劫、行駛路線監(jiān)控及呼叫指揮等功能。2.3異步JavaScript和XML
異步JavaScript和XML,即Ajax,是一種是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。Ajax的核心是JavaScript對(duì)象Xml? HttpRequest。該對(duì)象在Internet Explorer 5中首次引入,它是一種支持異步請(qǐng)求的技術(shù)。簡而言之,XmlHttpRequest使您可以使用Ja? vaScript向服務(wù)器提出請(qǐng)求并處理響應(yīng),而不阻塞用戶。
3基于網(wǎng)絡(luò)的GPS應(yīng)用
3.1項(xiàng)目目標(biāo)
本項(xiàng)目實(shí)踐通過移動(dòng)設(shè)備的網(wǎng)絡(luò)功能和GPS定位功能,實(shí)時(shí)把gps定位數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)中的伺服器,通過伺服器對(duì)數(shù)據(jù)進(jìn)行計(jì)算,處理,存儲(chǔ),備查。伺服器能根據(jù)查詢指令通過集成百度地圖的API,以地圖方式顯示GPS數(shù)據(jù),清楚指示出移動(dòng)設(shè)備的當(dāng)前位置和歷史位置。此項(xiàng)目標(biāo)的實(shí)現(xiàn)將帶來富有意義的應(yīng)用,例如尋找丟失的移動(dòng)設(shè)備,尋找?guī)в幸苿?dòng)設(shè)備的走失兒童等。
3.2項(xiàng)目框架
GPS和衛(wèi)星的通信由智能設(shè)備的物理層實(shí)現(xiàn),GPS使用NMEA-0183協(xié)議和智能設(shè)備通信,NMEA-0183協(xié)議是GPS接收機(jī)遵守的標(biāo)準(zhǔn)協(xié)議,此協(xié)議在不同的GPS導(dǎo)航設(shè)備中建立了統(tǒng)一的RTCM標(biāo)準(zhǔn)。NAEA 0183語句以ASCII格式輸出。智能設(shè)備上的應(yīng)用程序使用NAEA 0183協(xié)議從GPS上獲取定位數(shù)據(jù),并使用網(wǎng)絡(luò)連接服務(wù)提供商的網(wǎng)絡(luò),使用基于HTTP協(xié)議的應(yīng)用層協(xié)議和架設(shè)在Internet上的伺服器通信,伺服器則負(fù)責(zé)記錄和處理通信數(shù)據(jù)備查。為了實(shí)現(xiàn)應(yīng)用,需要專門的UI實(shí)現(xiàn)對(duì)收集到的定位數(shù)據(jù)進(jìn)行聚類,分析和顯示,如圖1所示。
3.3項(xiàng)目分析
3.3.1 BASIC4PPC從GPS獲取定位數(shù)據(jù)
項(xiàng)目中使用BASIC4PPC平臺(tái)開發(fā)智能設(shè)備的應(yīng)用程序,應(yīng)用程序使用GPSDriver.dll模塊訪問設(shè)備中的GPS設(shè)備,獲取定位數(shù)據(jù)。
圖1
采用GPSDriver.dll實(shí)現(xiàn)的使用步驟:
1)創(chuàng)建GPSDriver.dll實(shí)例
2)定時(shí)使用GetDeviceData啟動(dòng)GPS并獲取數(shù)據(jù),GPS啟用并搜星成功后,GetDeviceData返回有效定位數(shù)據(jù),并根據(jù)NAEA 0183協(xié)議自動(dòng)處理。關(guān)鍵部分形式描述如下:
定時(shí)過程
gps.GetDeviceData
If gps.GetGpsData(6000) = True Then處理定位數(shù)據(jù)
過程結(jié)束
3)關(guān)閉GPSDriver.dll實(shí)例。
在實(shí)際使用中,由于GPS需要消耗相當(dāng)?shù)碾娏?,所以需要在根?jù)實(shí)際情況,在不需要使用定位服務(wù)時(shí)候關(guān)閉和GPS對(duì)象的通信。
3.3.2利用GPRS或3G網(wǎng)絡(luò)使用HTTP協(xié)議和伺服器通信
BASIC4PPC平臺(tái)的HTTP.DLL模塊很好的封裝了HTTP協(xié)議,利用WebRequest和WebResponse對(duì)象能方便的向伺服器發(fā)送和接收數(shù)據(jù)。使用HTTP協(xié)議需要設(shè)備支持GPRS網(wǎng)絡(luò),能支持3G網(wǎng)絡(luò)更好,通信效率更高。HTTP.DLL使用注意要點(diǎn)包括:
①創(chuàng)建WebRequest和WebResponse實(shí)例。
②構(gòu)造好通信參數(shù)并使用WebRequest對(duì)象的GET方法向伺服器發(fā)送數(shù)據(jù)。
③使用WebResponse處理從伺服器收到的確認(rèn)信息。
④重復(fù)②和③的過程。
⑤關(guān)閉創(chuàng)建的WebRequest和WebResponse
HTTP協(xié)議的GET方法格式為http://伺服器主機(jī)域名或IP/頁面?參數(shù)1=X&參數(shù)2=Y......,例如向主機(jī)地址為www.myhost.com的主機(jī)getparamer.asp頁面發(fā)送x坐標(biāo)123和y坐標(biāo)456,參數(shù)名為px和py,則GET方法的通信串為:http://www.myhost.com/getparamer. asp?px=123&py=456
在伺服器中獲取的px和py數(shù)值是字符串形式的,因?yàn)槭褂肏TTP協(xié)議通信,通常伺服器架設(shè)為web服務(wù)器,例如可以為IIS,Apache等,服務(wù)器上的腳本語言可以有許多選擇,例如ASP,PHP,PERL,CGI等。
為了詳細(xì)的報(bào)告當(dāng)前智能設(shè)備的狀態(tài)和位置,應(yīng)該向伺服器報(bào)告當(dāng)前的通信時(shí)間和GPS坐標(biāo),具體的參數(shù)格式根據(jù)具體情況確定。當(dāng)然根據(jù)具體項(xiàng)目的實(shí)施可能還需要傳遞更多的參數(shù)或信息。
3.3.3 Ajax技術(shù)應(yīng)用框架
jQuery是一個(gè)JavaScript庫,它有助于簡化JavaScript以及Ajax編程。jQuery使用Ajax的一般框架可以如下。
$.ajax({
url: 處理地址,
type: GET,
dataType: xml,
timeout: 1000,
error: function(){
alert(Error loading XML document);},
success: function(xml){
//獲取數(shù)據(jù)后處理
});
配合setinterval函數(shù)定時(shí)進(jìn)行和GPS數(shù)據(jù)服務(wù)器通信,對(duì)處理的結(jié)果進(jìn)行無刷新更新頁面內(nèi)容。其中ajax中的function(xml)是回調(diào)函數(shù),應(yīng)根據(jù)不同的GPS應(yīng)用模式進(jìn)行對(duì)應(yīng)的代碼設(shè)計(jì)。結(jié)合使用Ajax技術(shù)可以使系統(tǒng)得到更佳的體驗(yàn)效果。
3.3.4電子地圖API
伺服器得到gps數(shù)據(jù)后需要通過某個(gè)手段轉(zhuǎn)換為可視數(shù)據(jù),電子地圖是體現(xiàn)數(shù)據(jù)很好的一個(gè)手段,國內(nèi)外有多個(gè)地圖數(shù)據(jù)提供商,幾乎都是以API(應(yīng)用程序接口)方式提供接入。這些提供商主API要包括Google Maps API、Microsoft Virtual Earth API、Yahoo Maps API、MapABC API、MapBar API、51地圖API,都提供了詳細(xì)的開發(fā)文檔和范例。
3.4項(xiàng)目實(shí)現(xiàn)總結(jié)
根據(jù)上述框架和思路,在移動(dòng)智能設(shè)備上使用基于BASIC4PPC平臺(tái)開發(fā)的gps數(shù)據(jù)采集模塊,并使用http協(xié)議和伺服器通信。伺服器采用Web服務(wù)接收gps數(shù)據(jù)存儲(chǔ)、統(tǒng)計(jì)并通過電子地圖API,把gps數(shù)據(jù)可視化。由于伺服器采用Web技術(shù)開發(fā),可以應(yīng)用現(xiàn)代主流Web設(shè)計(jì)技術(shù),在UI上可以容易的實(shí)現(xiàn)人性化的用戶界面。在系統(tǒng)實(shí)際應(yīng)用中,由于地球環(huán)境的復(fù)雜性,現(xiàn)代勘測條件的局限,還應(yīng)該對(duì)gps數(shù)據(jù)的進(jìn)行修正,進(jìn)行誤差補(bǔ)償。同時(shí)應(yīng)該考慮gps信號(hào)比較弱的區(qū)域的處理手段,結(jié)合GSM蜂窩網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行修正。
參考文獻(xiàn):
[1]劉大杰.全球定位系統(tǒng)(GPS)的原理與數(shù)據(jù)處理[M].上海:同濟(jì)大學(xué)出版社, 1997.
[2]鄧中衛(wèi).世界GPS接收手冊[M].北京:航空工業(yè)出版社, 1994
[3]江寬,龔小鵬.Google API開發(fā)詳解:Google Maps與Earth雙劍合璧[M].北京:電子工業(yè)出版社,2008
[4]Anywhere Software公司. Basic4PPC文檔中心[OL]. http://www.basic4ppc.com/Documentation_Center.html
[5]RFC2068.Hypertext Transfer Protocol-HTTP/1.1[S].