当前位置:文档之家› 一种智能手机定位监控系统的设计和实现 (1)

一种智能手机定位监控系统的设计和实现 (1)

一种智能手机定位监控系统的设计和实现时间:2011-07-18 17:22:13 来源:维库作者:GPS业界流行这样一句话,"GPS的应用只受到人们想象力的限制".目前GPS的民用领域已经包括了陆地运输、海洋运输、民用航空、通信、测绘、建筑、采矿、农业、电力系统、医疗应用、科研、家电、娱乐等多个领域,而大家所熟知的汽车导航也只不过是其中的应用之一,2007年,我国GPS已经进入了一个全面爆发期。

目前市场上GPS相关产品已经很多,但由于各方面技术限制,普遍存在一些严重问题:大多数产品针对专用的硬件平台,成本高、可移植性差;系统开发难度大、开发周期长、软件支持少[2];采用本地地图,地图数据库更新困难。

本文针对上述问题,充分利用现有技术,整合各种现有资源,设计了基于Windows Mobile通用平台和网络电子地图的位置查询系统。

该系统通信部分采用SMS实现,具有地图数据更新获取方便、使用简单、成本低、操作方便等优点。

1 总体设计方案Windows Mobile,是Microsoft 用于Pocket PC 和Smartphone 的软件平台。

Windows Mobile 将熟悉的Windows 桌面扩展到了个人设备中。

Windows Mobile是微软为手持设备推出的"移动版Windows",使用Windows Mobile操作系统的设备主要有PPC手机、PDA、随身音乐播放器等。

Windows Mobile操作系统有三种,分别是Windows Mobile Standard、Windows Mobile Professional,Windows Mobile Classic.目前常用版本Windows Mobile 6.1,最新的版本是6.5.系统从功能上可以分为Pocket PC监控中心和Pocket PC监控对象两部分。

监控对象主要功能为接收GPS信号、提取所需信息和响应监控中心的监控命令。

监控中心通过短消息(SMS)向监控对象发送监控命令,接收来自监控对象的数据并对接收来的数据进行处理。

为了更好地显示监控对象所在位置,监控中心同时采用Google地图和Mapabc地图2种网络电子地图。

网络电子地图数据通过HTTP协议从Google地图或Mapabc地图服务器上实时下载。

系统框图如图1所示。

系统主要设计功能如下:(1)在Windows Mobile平台上实现了GPS定位;(2)网络电子地图实时下载、显示、拖动、放大/缩小;(3)监控对象的位置查询与显示;(4)实现了对监控对象的声音监控。

2 PPC监控对象设计与实现相对于PDA,PPC是一种狭隘得多的概念,专指使用微软Windows Mobile系列操作系统的PDA.最早的Windows Mobile操作系统是Poceket PC 1.0,一款不怎么成功的操作系统,但PPC由此得名。

随后的Poceket PC 2002、Windows Mobile 2003、Windows Mobile 2003 SE都是非常成功的操作系统。

2.1 GPS定位数据提取的实现传统GPS编程通过串口通信接收NMEA(National Marine Electronics Association)语句,然后通过解析NMEA语句[3]提取经纬度信息实现。

应用程序独占GPS设备,即同一时刻只允许一个应用程序访问GPS设备。

本文采用Windows Mobile提供的GID接口实现(GPS Intermediate Driver)。

GID是一个位于应用程序和GPS设备中间层的设备驱动。

使用GID时,允许多个应用程序同时使用GPS设备(所有的应用程序都通过GID间接访问GPS设备),不需要解析NMEA语句,且可以使用相同的代码访问几乎所有类型的GPS设备[4].采用GID实现的主要步骤为:(1)引用Device上的本地代码,在。

NET Compact Framework平台上使用,需要采用跨平台调用技术,引用相应的应用程序接口。

(2)用CreateEvent创建Windows CE事件对象,这样当有GPS设备获取了新的数据或者设备状态改变时就能收到通知。

(3)使用GPSOpenDevice与GID建立一个连接。

如果GPS设备关闭,则启动GPS设备。

(4)通过调用WaitForMultipleObjects(如果仅有一个事件则调用WaitForSingleObject),等待GPS设备获取新的位置数据或设备状态改变事件发生;当GPS设备获取了新的位置数据时,调用GPSGetPosition取回位置信息。

当GPS设备状态改变时,调用GPSGetDeviceState取回设备状态信息。

(5)重复第(4)步,直到不再需要GPS信息。

(6)调用GPSCloseDevice关闭与GID的连接。

如果这个连接是GID唯一的连接,则GID自动关闭GPS设备。

GPS设备耗电相当大,因此当不再需要访问GPS设备时要关闭与GID的连接。

GID全称:Group Identification 群体身份是一个通用的、适应性强和用户界面友好的图形用户界面,用于几何模拟、数据输入、模型转换、网格和可视化的结果,对所有类型的数值仿真包都适用。

一般多用于比如网游封测时期的账号,或者就是一些带有共享性质的资源使用者的帐号。

2.2 短消息发送与接收实现短消息收发一般采用AT(Attention)指令实现,本系统采用Pocket Outlook实现。

Windows Mobile SDK对Pocket Outlook提供的服务进行了托管封装,可以方便地完成所有的个人信息管理功能[3],所有这些类型构成了POOM(Pocket Outlook Object Model)。

(1)短消息发送。

POOM中的SmsAccount类可以方便地实现短消息的发送。

首先,使用SmsMessage类构造一条短消息;然后,使用SmsAccount类中的Send方法即可发送短消息。

(2)短消息的接收和截获。

Pocket Outlook可以实现短消息的接收和截获,且只接收满足特定条件的短消息。

短消息接收和截获过程如下:①创建一个MessageInterceptor类型的对象。

②设置MessageCondition属性,指定MessageInterceptor对象截获条件。

③设置InterceptionAction属性,指定截获到消息后Pocket Outlook执行的动作。

本系统中,通过将InterceptionAction属性设置为NotifyAndDelete实现截获所需的监控短消息,并且其他程序不会收到监控短消息,这样监控短消息就不会进入短消息收件箱。

④为MessageInterceptor对象添加截获短消息事件处理方法。

截获短消息事件定义如下:public event MessageInterceptorEventHandler MessageReceived当有满足截获条件的短消息到达设备时触发此事件。

添加了事件处理方法后,当有满足截获条件的短消息到达时,就会触发MessageReceived事件,然后自动调用事件处理方法进行处理。

3 监控中心设计与实现PPC端监控中心通过GPRS网络,主要以短消息的形式向监控对象发送监控命令,并通过处理来自监控对象的数据实现对监控对象的位置查询及显示、声音监控等功能。

3.1 网络电子地图实现目前,Windows Mobile不支持脚本,故PPC端监控中心电子地图不能使用含接口的地图实现。

本系统PPC端监控中心网络电子地图采用Google地图和北京图盟科技有限公司的Mapabc地图。

(1)地图数据下载Google地图由0~17级不同比例尺的256×256像素的小地图拼块拼接而成,每一个Google地图拼块叫做一个tile.tile的URI类似如下:其中,,x、y、z分别表示tile的坐标和放大因子。

Google地图服务器有4台,分别为,本系统从4台服务器轮流下载。

(2)地图显示任给一个经纬度,要将其代表的位置在地图上显示出来,就要将该经纬度转换为对应放大因子的tile坐标。

本系统采用一种近似的方法转换,经过分析发现,经度与x坐标呈线性对应关系,其计算公式为:其中,longitude为经度值,其范围为-180~+180,西经用负值表示,东经用正值表示;0.0063为校正值;z为放大因子。

纬度与y坐标转换公式为:其中,latitude为纬度值,其范围为-90~+90,北纬用正值表示,南纬用负值表示;z为放大因子。

将经纬度转化为tile坐标后,就能将经纬度与地图匹配了,这样就可以将经纬度对应的位置在地图上显示出来。

本系统采用的Windows Mobile Pocket PC的窗体客户区宽度和高度分别为240像素和268像素,每个tile为256×256像素,这样客户区就需要4个或6个tile拼接而成,如图2和图3所示。

(3)地图拖动地图移动相当于改变地图的中心坐标。

本系统实现地图拖动的方法为:当在触摸屏上点击地图某一点时,将地图的中心坐标移到点击处。

如图4所示,设点O为窗口客户区中心,点P为点击处,计算点P与点O的水平和垂直像素距离△Px和△Py,然后将地图中心分别沿水平方向和垂直方向移动△Px和△Py像素,即可实现地图的拖动功能,拖动后地图如图5所示。

(4)地图放大/缩小Google地图的放大因子z的取值为0~17,分别代表0~17级不同比例尺的地图。

0~17级地图分别用18张不同详细程度的地图实现,故实现地图的放大/缩小功能只需要改变放大因子的大小,将当前现实的地图切换到改变后的放大因子所对应的比例尺的地图上,中心点经纬度不变。

3.2 监控中心界面设计及主要功能测试结果点击"操作"菜单,依次选择"监控"、"位置",然后在弹出的菜单中设置监控对象手机号、报告次数、报告时间间隔,如图6所示。

按图6所示设置,点击"开始"按钮,PPC端监控中心发送监控命令,监控对象收到位置查询命令后,就按监控命令向监控中心报告自己的位置。

PPC端监控中心收到监控对象发来的位置信息后即在地图上显示出来。

图7为目标位于深圳大学办公楼前测试的结果,图中地图为Google地图,点击"设置"菜单,然后选择"使用Mapabc地图"切换到Mapabc地图,如图8所示。

PPC端监控中心构造监控命令短消息如下:SmsMessage msg=new SmsMessage(,″*定◎位*″+interval);其中,interval指定监控对象报告位置信息的时间间隔,此处为"1".本系统基于Windows Mobile通用平台,充分利用了Windows Mobile界面友好、使用简单和支持软件丰富等特点。

相关主题