0 引言
随着第三代移动通信技术的飞速发展,基于蜂窝网络的移动端定位技术成为了目前研究和应用的热点,手机作为目前日常生活中的通信工具,被广泛应用于其中。基站定位技术不仅应用于消费者自身的定位,而且用于紧急救援、汽车导航、智能交通、蜂窝系统优化设计等方面,实现对安全事故的及时反应,从而保障人民的生命和财产安全[1]。手机基站定位作为无需手机额外硬件只需软件支持的功能软件,其优点明显,受到移动供应商及开发人员的亲睐。
基站定位技术主要有:①COO(单基站定位),即根据设备当前连接的蜂窝基站的位置来确定设备的位置;②TOA(到达时间)、TDOA(到达时间差)都是基于电波传播时间的定位方法,同时也都是三基站定位方法,二者的定位需要同时有三个已知位置的基站合作才能进行;③AOA(Angle of Arrival,到达角度)定位是一种两基站定位方法,基于信号的入射角度进行定位;④基于场强的定位,该方法是通过测出接收到的信号场强和已知的信道衰落模型及发射信号的场强值估计收发信短的距离,根据多个三个距离值就可以得到设备的位置;⑤混合定位,就是同时使用两种以上的定位方法来进行定位。本文采用COO(Cell of Origin,单基站定位)方法,通过连接Google服务器获得单基站的主要信息,进而获得基站地址和经纬度,并利用该信息在手机地图上标出当前经纬度以及坐标,实现手机定位。
1 单基站定位技术原理
1.1 GSM蜂窝通信
GSM网络包括移动业务交换中心MSC,基站系统BSS,以及移动台MS[2]。蜂窝网络中的移动台处在“小区”中,每个BSS能提供一个或多个小区,这取决于厂商的设备。小区一般被画作六边形,但实际上小区是不规则形状,这主要是受周围地形干扰的影响或是取决于网络规划者的设计。小区全球识别码(Cell Global Identity)主要由MCC、MNC、LAC、CELL_ID几部分构成[3]。其中,LAC与CELL_ID之间的关系如图1所示。
[
LAC\&][CELL_ID
… …\&]
图1 LAC与CELL-ID关系
每个LAC包含多个基站小区,它们均为二字节编码,共同确定一个基站位置信息。为了在同一地理区域内获得更大的容量,可以采用一种称为“扇区化”的技术,扇区化即是将一个基站分成多个小区,每个小区都有自己的发射和接收天线。扇区化的小区使用特制的定向天线,使该小区发射的无线电波集中在一个特定的方向上[4]。这样做可以使小区发射的无线电波能量集中到了一个更小的区域如60度,120度,而不是以360度全向发射,便于获得更强的信号,有利于“室内覆盖”等。基站小区扇区化几种方式如图2所示。 图2 基站小区扇区化
1.2 获取基站信息的数据结构介绍
为了方便获取基站信息,定义一个数据结构PS_BASIC_T如表1所示。
表1 基站信息数据结构
移动国家码(MCC),中国的编码为460;移动网码(MNC),中国移动公司为00,而中国联通公司为01;位置区域码(LAC)和基站小区编码(CELL-ID)可以共同确定惟一一个基站的位置信息;时间前置量(TA),显示手机和基站间距离。该数值乘以500可换算为米,TA值范围0~63。定义获取当前基站信息的API函数为:MNPHONE_GetCurrentPLMNInfoEx (MN_DUAL_SYS_E)。通过此函数可以获得数据结构PS_BASIC_T中结构体成员变量的值,其中MN_DUAL_SYS_E为一枚举类型,取值范围为MN_DUAL_SYS_1和MN_DUAL_SYS_2,分别表示SIM卡1和SIM卡2。
1.3 单基站定位技术流程
单基站定位技术的基本流程如图3所示。
[开始][手机搜索进入GSM网][开启定位][获取基站cell-id][获取基站经纬度][地图显示当前位置][结束并返回]
图3 单基站定位基本流程
基站定位技术是基于蜂窝网络的无线定位技术。由于每个基站都有其惟一的CELL-ID,手机每次开机入网时工程模式中的信息被储存在手机内存的特定区域。通过基站定位得到工程模式中的CELL-ID、LAC(位置区编码)、TA(经纬度)等一些参数,并将CELL-ID与基站所在的地区相对应,其中还需要一个数据库的支持,这个数据库是CELL-ID、LAC与具体的基站位置间的对应,通过CELL-ID、LAC可以在这个数据库中查处相应的基站位置[5],它可以是本地创建的数据库,也可以同网上服务器链接,访问数据库得到基站位置的详细信息。本研究选择的是google服务器(http://www.google.com/loc/json)。
基站的位置确定后,通过TA换算得到移动台距离基站的大概距离。根据移动台与基站的大概距离就可得到移动台所处的轨迹如图4所示。
[酒店][大楼] [商店] [cell-id] [TA×500] [市场][Phone] [某某大道]
图4 移动台位置确定原理图
2 基站定位软件的实现
2.1 获取基站地址及经纬度
基站地址及经纬度信息的获取是通过访问google服务器获得的,其流程如下。
⑴ 创建Json串
Json的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。Json易于人编写和阅读,易于机器生成和解析,它完全独立于编程语言,使用文本格式保存[6]。本文采用C语言组合创建Json串,创建Json串默认的为中国移动的基站信息。
⑵ 激活手机GPRS
MNGPRS_SetAndActivePdpContextEx()为激活手机GPRS的API函数,激活GPRS,需要开通相关业务。
⑶ 连接google服务器
连接到google服务器并不是直接和其连接,而是通过代理服务器连接(中国移动为“cmwap”)。同代理服务器连接成功后,向其发送http请求,代理服务器将代为访问目的服务器,再将收到的信息发送到手机客服端。
⑷ POST发送请求报文
向http服务器发送请求报文有多种方式,常见的有三种方式,定义枚举类型HTTP_METHOD,如表2所示。
表2 http请求方式
[成员变量\&成员变量说明\&GET\&请求读取由URL标志的信息\&HEAD\&请求方式请求读取由URL所标志的信息的首部\&POST\&给服务器添加信息\&]
URL是用来表示从因特网上得到的资源位置和访问这些资源的方法。HTTP的URL的一般形
式是:http://<主机>:<端口>/<路径>。HTTP的默认端口号为80,通常可省略。本研究访问的URL为:http://www.google.com/loc/json。HTTP的报文结构有:请求报文和响应报文。它们都由开始行、首部行、实体主体三部分组成。开始行用于区分这两种报文,首部行用来说明浏览器、服务器或报文主体的一些信息,实体主体在请求报文中一般不使用这个字段,而在响应报文中也可能没有这个字段[7],本研究的基站信息Json串就位于此字段。
⑸ 接收google响应报文(图5)
[创建定时器][定时器监听socket][是否有数据] [调用回调函数接收][是否都接收] [关闭socket][关闭定时器][结束] [是][是] [否][否]
图5 接收响应报文
图6 google返回Json串格式
接收响应报文需要时刻监听socket中是否有数据到来,如果有则接收,直到将响应报文中的所有内容接收完毕。如果接收数据较多则需不停调用回调函数,回调函数中标识HTTP事件状态的成员变量应包括连接事件、发送数据事件、接收头部事件、接收报文实体事件、缓存区溢出事件、报文接收完事件以及关闭连接。接收报文时,首先接收报文头部,必须先对报文首部字段的“content-type”和“content-length”进行解析。“content-type”判断报文实体部分的文本类型,便于对其进行解码;“content-length”判断报文实体部分所占空间大小,便于分配内存接收数据。其流程如图7。 ⑹ 解析返回Json串
解析google返回的Json串实际是从报文实体文本类型中提取有用信息,google返回的Json串格式如图8所示,在解析时通过编程提取有用信息并连接起来组成基站地址。
2.2 地图标示
2.2.1 地图标示的基本原理
地图是由许多的相同大小的图片按照一定的规律拼凑起来的。在地图上显示位置,实际上是在图片上画出所在地方的点。这个点的位置是根据图片的经纬度信息和基站所在经纬度的值计算出来的。地图共分“四层”,可以放大缩小,越往下一层,图片给出的地址信息越详细。每点击放大,便调出下一层中对应的图片,将其显示出来,反之,缩小则调出上一层中对应的图片。每点击上下左右键,地图便相应的移动,所在位置的点也会随之移动。因为每张图片的大小确定,所以在移动时如若到达图片的边缘,则会调用对应相邻的图片显示。
2.2.2 地图标示的实现方法
定义一个结构体IMAGE_INFO_T用来描述每张图片的信息。结构体应包含每张图片的横向纵向序号、宽度、高度、经纬度等。在调用每张图片时,必须对其显示区域初始化。变量image_rect为结构体类型GUI_RECT_T,四个成员变量left、right、top、bottom分别表示区域左、右、顶端和底部坐标。当坐标点不在图片上时,便做相应的调整。display_point为显示位置的点,当显示区域变化时,显示点也要做相应的变化。对地图进行放大缩小,实际上是对层数和图片的更换。让地图上下左右移动,实际是每点击一次移动键,立马更新图片的显示区域,如果到达一张图片的边缘,则换相邻图片。
2.3 实验结果
将程序拷入手机中,安装SIM卡并开通GPRS业务,进入基站定位主界面,点击“查询”出现界面如图7所示,点击“刷新”键,手机重新对当前位置进行定位。如果要用地图显示当前位置,则点击“地图”键,地图显示效果如图8所示,通过放大/缩小键更进一步定位。
图7 基站定位结果 图8 地图显示效果
3 结束语
本文研究了单基站定位技术的实现原理以及技术流程,通过单基站定位技术获取手机当前地址以及经纬度信息,并进一步介绍了将当前地址标示在地图上的基本原理和实现方法,最终实现对移动端的定位。通过实验手机定位和地图标示验证了本技术的有效性,可为手机定位提供一定程度上的帮助,但该方法只能用于手机基站定位的粗定位,对于精确定位技术有待进一步探索与研究。
参考文献:
[1] 何林娜,尹伟.CDMA蜂窝网无线定位技术的研究[J].无线电工程,
2001.5:36-37,41
[2] 韩斌杰,杜新颜,张建斌.GSM通信原理及网络优化[M].机械工业出
版社,2009.
[3] GSM原理基础培训(初级)[Z],2004.1.
[4] 3GPP TS 25.331(V7.2.0) Radio Resource Control(RRC)Protocol
Specification(Release 7)[J],2006.
[5] Robert Berezdivin, Robert Breinig, and Randy Topp,Raytheon.
Next-Generation Wireless Communications Concepts and Technologies[J].IEEE Communications Magazine,March 2002.