智能手機定位監控系統的設計
GPS業(yè)界流行這樣一句話(huà),GPS的應用只受到人們想象力的限制.目前GPS的民用領(lǐng)域已經(jīng)包括了陸地運輸、海洋運輸、民用航空、通信、測繪、建筑、采礦、農業(yè)、電力系統、醫療應用、科研、家電、娛樂(lè )等多個(gè)領(lǐng)域,而大家所熟知的汽車(chē)導航也只不過(guò)是其中的應用之一,2007年,我國GPS已經(jīng)進(jìn)入了一個(gè)全面爆發(fā)期。
本文引用地址:http://dyxdggzs.com/article/201706/351151.htm目前市場(chǎng)上GPS相關(guān)產(chǎn)品已經(jīng)很多,但由于各方面技術(shù)限制,普遍存在一些嚴重問(wèn)題:大多數產(chǎn)品針對專(zhuān)用的硬件平臺,成本高、可移植性差;系統開(kāi)發(fā)難度大、開(kāi)發(fā)周期長(cháng)、軟件支持少[2];采用本地地圖,地圖數據庫更新困難。
本文針對上述問(wèn)題,充分利用現有技術(shù),整合各種現有資源,設計了基于Windows Mobile通用平臺和網(wǎng)絡(luò )電子地圖的位置查詢(xún)系統。該系統通信部分采用SMS實(shí)現,具有地圖數據更新獲取方便、使用簡(jiǎn)單、成本低、操作方便等優(yōu)點(diǎn)。
1 總體設計方案
Windows Mobile,是 Microsoft 用于 Pocket PC 和 Smartphone 的軟件平臺。Windows Mobile 將熟悉的 Windows 桌面擴展到了個(gè)人設備中。Windows Mobile是微軟為手持設備推出的移動(dòng)版Windows,使用Windows Mobile操作系統的設備主要有PPC手機、PDA、隨身音樂(lè )播放器等。Windows Mobile操作系統有三種,分別是Windows Mobile Standard、Windows Mobile Professional,Windows Mobile Classic.目前常用版本W(wǎng)indows Mobile 6.1,最新的版本是6.5.
系統從功能上可以分為Pocket PC監控中心和Pocket PC監控對象兩部分。監控對象主要功能為接收GPS信號、提取所需信息和響應監控中心的監控命令。監控中心通過(guò)短消息(SMS)向監控對象發(fā)送監控命令,接收來(lái)自監控對象的數據并對接收來(lái)的數據進(jìn)行處理。為了更好地顯示監控對象所在位置,監控中心同時(shí)采用Google地圖和Mapabc地圖2種網(wǎng)絡(luò )電子地圖。網(wǎng)絡(luò )電子地圖數據通過(guò)HTTP協(xié)議從Google地圖或Mapabc地圖服務(wù)器上實(shí)時(shí)下載。系統框圖如圖1所示。
系統主要設計功能如下:
(1)在Windows Mobile平臺上實(shí)現了GPS定位;
(2)網(wǎng)絡(luò )電子地圖實(shí)時(shí)下載、顯示、拖動(dòng)、放大/縮??;
(3)監控對象的位置查詢(xún)與顯示;
(4)實(shí)現了對監控對象的聲音監控。
2 PPC監控對象設計與實(shí)現
相對于PDA,PPC是一種狹隘得多的概念,專(zhuān)指使用微軟Windows Mobile系列操作系統的PDA.最早的Windows Mobile操作系統是Poceket PC 1.0,一款不怎么成功的操作系統,但PPC由此得名。隨后的Poceket PC 2002、Windows Mobile 2003、Windows Mobile 2003 SE都是非常成功的操作系統。
2.1 GPS定位數據提取的實(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í)現的主要步驟為:
(1)引用gpsapi.dll.GID是一套在Mobile Device上的本地代碼,在。NET Compact Framework平臺上使用,需要采用跨平臺調用技術(shù),引用相應的應用程序接口。
(2)用CreateEvent創(chuàng )建Windows CE事件對象,這樣當有GPS設備獲取了新的數據或者設備狀態(tài)改變時(shí)就能收到通知。
(3)使用GPSOpenDevice與GID建立一個(gè)連接。如果GPS設備關(guān)閉,則啟動(dòng)GPS設備。
(4)通過(guò)調用WaitForMultipleObjects(如果僅有一個(gè)事件則調用WaitForSingleObject),等待GPS設備獲取新的位置數據或設備狀態(tài)改變事件發(fā)生;當GPS設備獲取了新的位置數據時(shí),調用GPSGetPosition取回位置信息。當GPS設備狀態(tài)改變時(shí),調用GPSGetDeviceState取回設備狀態(tài)信息。
(5)重復第(4)步,直到不再需要GPS信息。
(6)調用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)。
(1)短消息發(fā)送。POOM中的SmsAccount類(lèi)可以方便地實(shí)現短消息的發(fā)送。首先,使用SmsMessage類(lèi)構造一條短消息;然后,使用SmsAccount類(lèi)中的Send方法即可發(fā)送短消息。
(2)短消息的接收和截獲。Pocket Outlook可以實(shí)現短消息的接收和截獲,且只接收滿(mǎn)足特定條件的短消息。短消息接收和截獲過(guò)程如下:
①創(chuàng )建一個(gè)MessageInterceptor類(lèi)型的對象。
②設置MessageCondition屬性,指定MessageInterceptor對象截獲條件。
③設置InterceptionAction屬性,指定截獲到消息后Pocket Outlook執行的動(dòng)作。本系統中,通過(guò)將InterceptionAction屬性設置為NotifyAndDelete實(shí)現截獲所需的監控短消息,并且其他程序不會(huì )收到監控短消息,這樣監控短消息就不會(huì )進(jìn)入短消息收件箱。
④為MessageInterceptor對象添加截獲短消息事件處理方法。截獲短消息事件定義如下:
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地圖。
(1)地圖數據下載
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ù)器輪流下載。
(2)地圖顯示
任給一個(gè)經(jīng)緯度,要將其代表的位置在地圖上顯示出來(lái),就要將該經(jīng)緯度轉換為對應放大因子的tile坐標。本系統采用一種近似的方法轉換,經(jīng)過(guò)分析發(fā)現,經(jīng)度與x坐標呈線(xiàn)性對應關(guān)系,其計算公式為:
其中,longitude為經(jīng)度值,其范圍為-180~+180,西經(jīng)用負值表示,東經(jīng)用正值表示;0.0063為校正值;z為放大因子。
緯度與y坐標轉換公式為:
其中,latitude為緯度值,其范圍為-90~+90,北緯用正值表示,南緯用負值表示;z為放大因子。將經(jīng)緯度轉化為tile坐標后,就能將經(jīng)緯度與地圖匹配了,這樣就可以將經(jīng)緯度對應的位置在地圖上顯示出來(lái)。
本系統采用的Windows Mobile Pocket PC的窗體客戶(hù)區寬度和高度分別為240像素和268像素,每個(gè)tile為256×256像素,這樣客戶(hù)區就需要4個(gè)或6個(gè)tile拼接而成,如圖2和圖3所示。
3)地圖拖動(dòng)
地圖移動(dòng)相當于改變地圖的中心坐標。本系統實(shí)現地圖拖動(dòng)的方法為:當在觸摸屏上點(diǎn)擊地圖某一點(diǎn)時(shí),將地圖的中心坐標移到點(diǎn)擊處。如圖4所示,設點(diǎn)O為窗口客戶(hù)區中心,點(diǎn)P為點(diǎn)擊處,計算點(diǎn)P與點(diǎn)O的水平和垂直像素距離△Px和△Py,然后將地圖中心分別沿水平方向和垂直方向移動(dòng)△Px和△Py像素,即可實(shí)現地圖的拖動(dòng)功能,拖動(dòng)后地圖如圖5所示。
(4)地圖放大/縮小
Google地圖的放大因子z的取值為0~17,分別代表0~17級不同比例尺的地圖。0~17級地圖分別用18張不同詳細程度的地圖實(shí)現,故實(shí)現地圖的放大/縮小功能只需要改變放大因子的大小,將當前現實(shí)的地圖切換到改變后的放大因子所對應的比例尺的地圖上,中心點(diǎn)經(jīng)緯度不變。
3.2 監控中心界面設計及主要功能測試結果
點(diǎn)擊操作菜單,依次選擇監控、位置,然后在彈出的菜單中設置監控對象手機號、報告次數、報告時(shí)間間隔,如圖6所示。
按圖6所示設置,點(diǎn)擊開(kāi)始按鈕,PPC端監控中心發(fā)送監控命令,監控對象收到位置查詢(xún)命令后,就按監控命令向監控中心報告自己的位置。PPC端監控中心收到監控對象發(fā)來(lái)的位置信息后即在地圖上顯示出來(lái)。圖7為目標位于深圳大學(xué)辦公樓前測試的結果,圖中地圖為Google地圖,點(diǎn)擊設置菜單,然后選擇使用Mapabc地圖切換到Mapabc地圖,如圖8所示。PPC端監控中心構造監控命令短消息如下:
SmsMessage msg=new SmsMessage(15914175891,″*定◎位*″+interval);
其中,interval指定監控對象報告位置信息的時(shí)間間隔,此處為1.
本系統基于Windows Mobile通用平臺,充分利用了Windows Mobile界面友好、使用簡(jiǎn)單和支持軟件豐富等特點(diǎn)。GPS數據通過(guò)Windows Mobile提供的GID接口實(shí)現,可以使多個(gè)應用程序同時(shí)使用GPS設備,通用性好,可移植性強。經(jīng)實(shí)際測試,本系統獲取地圖數據方便快捷、成本低、維護方便、定位精度高,能滿(mǎn)足人們日益增長(cháng)的應用需求。
評論