一種智能手機定位監控系統的設計和實(shí)現
傳統GPS編程通過(guò)串口通信接收NMEA(National Marine Electronics Association)語(yǔ)句,然后通過(guò)解析NMEA語(yǔ)句[3]提取經(jīng)緯度信息實(shí)現。應用程序獨占GPS設備,即同一時(shí)刻只允許一個(gè)應用程序訪(fǎng)問(wèn)GPS設備。
本文采用Windows Mobile提供的GID接口實(shí)現(GPS Intermediate Driver)。GID是一個(gè)位于應用程序和GPS設備中間層的設備驅動(dòng)。使用GID時(shí),允許多個(gè)應用程序同時(shí)使用GPS設備(所有的應用程序都通過(guò)GID間接訪(fǎng)問(wèn)GPS設備),不需要解析NMEA語(yǔ)句,且可以使用相同的代碼訪(fǎng)問(wèn)幾乎所有類(lèi)型的GPS設備[4].
采用GID實(shí)現的主要步驟為:
?。?)引用gpsapi.dll.GID是一套在Mobile Device上的本地代碼,在。NET Compact Framework平臺上使用,需要采用跨平臺調用技術(shù),引用相應的應用程序接口。
?。?)用CreateEvent創(chuàng )建Windows CE事件對象,這樣當有GPS設備獲取了新的數據或者設備狀態(tài)改變時(shí)就能收到通知。
?。?)使用GPSOpenDevice與GID建立一個(gè)連接。如果GPS設備關(guān)閉,則啟動(dòng)GPS設備。
?。?)通過(guò)調用WaitForMultipleObjects(如果僅有一個(gè)事件則調用WaitForSingleObject),等待GPS設備獲取新的位置數據或設備狀態(tài)改變事件發(fā)生;當GPS設備獲取了新的位置數據時(shí),調用GPSGetPosition取回位置信息。當GPS設備狀態(tài)改變時(shí),調用GPSGetDeviceState取回設備狀態(tài)信息。
?。?)重復第(4)步,直到不再需要GPS信息。
?。?)調用GPSCloseDevice關(guān)閉與GID的連接。如果這個(gè)連接是GID唯一的連接,則GID自動(dòng)關(guān)閉GPS設備。GPS設備耗電相當大,因此當不再需要訪(fǎng)問(wèn)GPS設備時(shí)要關(guān)閉與GID的連接。
GID全稱(chēng):Group Identification 群體身份是一個(gè)通用的、適應性強和用戶(hù)界面友好的圖形用戶(hù)界面,用于幾何模擬、數據輸入、模型轉換、網(wǎng)格和可視化的結果,對所有類(lèi)型的數值仿真包都適用。 一般多用于比如網(wǎng)游封測時(shí)期的賬號,或者就是一些帶有共享性質(zhì)的資源使用者的帳號。
2.2 短消息發(fā)送與接收實(shí)現
短消息收發(fā)一般采用AT(Attention)指令實(shí)現,本系統采用Pocket Outlook實(shí)現。Windows Mobile SDK對Pocket Outlook提供的服務(wù)進(jìn)行了托管封裝,可以方便地完成所有的個(gè)人信息管理功能[3],所有這些類(lèi)型構成了POOM(Pocket Outlook Object Model)。
?。?)短消息發(fā)送。POOM中的SmsAccount類(lèi)可以方便地實(shí)現短消息的發(fā)送。首先,使用SmsMessage類(lèi)構造一條短消息;然后,使用SmsAccount類(lèi)中的Send方法即可發(fā)送短消息。
?。?)短消息的接收和截獲。Pocket Outlook可以實(shí)現短消息的接收和截獲,且只接收滿(mǎn)足特定條件的短消息。短消息接收和截獲過(guò)程如下:
?、賱?chuàng )建一個(gè)MessageInterceptor類(lèi)型的對象。
?、谠O置MessageCondition屬性,指定MessageInterceptor對象截獲條件。
?、墼O置InterceptionAction屬性,指定截獲到消息后Pocket Outlook執行的動(dòng)作。本系統中,通過(guò)將InterceptionAction屬性設置為NotifyAndDelete實(shí)現截獲所需的監控短消息,并且其他程序不會(huì )收到監控短消息,這樣監控短消息就不會(huì )進(jìn)入短消息收件箱。
?、転镸essageInterceptor對象添加截獲短消息事件處理方法。截獲短消息事件定義如下:
public event MessageInterceptorEventHandler MessageReceived
當有滿(mǎn)足截獲條件的短消息到達設備時(shí)觸發(fā)此事件。添加了事件處理方法后,當有滿(mǎn)足截獲條件的短消息到達時(shí),就會(huì )觸發(fā)MessageReceived事件,然后自動(dòng)調用事件處理方法進(jìn)行處理。
3 監控中心設計與實(shí)現
PPC端監控中心通過(guò)GPRS網(wǎng)絡(luò ),主要以短消息的形式向監控對象發(fā)送監控命令,并通過(guò)處理來(lái)自監控對象的數據實(shí)現對監控對象的位置查詢(xún)及顯示、聲音監控等功能。
3.1 網(wǎng)絡(luò )電子地圖實(shí)現
目前,Windows Mobile不支持腳本,故PPC端監控中心電子地圖不能使用含接口的地圖實(shí)現。本系統PPC端監控中心網(wǎng)絡(luò )電子地圖采用Google地圖和北京圖盟科技有限公司的Mapabc地圖。
?。?)地圖數據下載
Google地圖由0~17級不同比例尺的256×256像素的小地圖拼塊拼接而成,每一個(gè)Google地圖拼塊叫做一個(gè)tile.tile的URI類(lèi)似如下:
其中,mt2.google.com為Google地圖服務(wù)器,x、y、z分別表示tile的坐標和放大因子。Google地圖服務(wù)器有4臺,分別為mt0.google.com、mt1.google.com、mt2.google.com和mt3.google.com.為了提高地圖下載速度,本系統從4臺服務(wù)器輪流下載。
評論