WEB开发网
开发学院手机开发Windows Mobile 开发 Windows Mobile 获取基站信息(LAC,CellID) 阅读

Windows Mobile 获取基站信息(LAC,CellID)

 2010-06-01 15:56:00 来源:WEB开发网   
核心提示:前言:在做手机定位应用软件,有两种方法可以实行定位:1.利用基站定位,Windows Mobile 获取基站信息(LAC,CellID),通过手机获取基站信息,再根据该信息获取经纬度;2.利用GPS定位,另外并不是所有的设备都可以取到CELLID,本文章是利用COM口来获取CELLID,直接获取经纬度信息,利弊:1.基

前言:

在做手机定位应用软件,有两种方法可以实行定位:

1.利用基站定位,通过手机获取基站信息,再根据该信息获取经纬度;

2.利用GPS定位,直接获取经纬度信息。

利弊:

1.基站定位精确度低,误差范围估计500米以内(这种情况还是在大城市下的,如果是小城市,估计误差更大),但是基站定位可以实现处处定位,即不会因为建筑物等原因而无法获取基站信息。

2.GPS定位精确度高,误差范围估计10米以内,但是需要在空旷的地方,如果周围建筑物多,或者在室内,没法获取GPS信息。

通常用定位这两种方法都采用,也会增加第三种WIFI定位或者小区定位,这是后话。

在windows mobile下获得CELLID、LAC的途径有两条:利用串口发送AT指令或是利用RIL来获取。RIL(Radio Interface Layer)是微软自己开发的一个库,它的程序有固有的特点,在获取CELLID上,它其实是对第一种方法的封装,两者本质是一样的。但要注意是:串口一旦打开,就难以关闭,除非重启机器(可能涉及到底层的中断),另外并不是所有的设备都可以取到CELLID。

本文章是利用COM口来获取CELLID,并不保证所有的设备都支持。

测试平台:

VS2005 + WM 6.0

开发语言:

C++

正文:

定义基站信息结构体:

复制到剪贴板 C/C++代码

typedef struct

{

char CountryCode[12];

char AreaCode[4];

char NetworkCode[4];

char CellID[4];

} TCREG_DATA;

获取基站信息:

复制到剪贴板 C/C++代码

void Get_Cellid(void)

{

char m_sTemp[12] = {0};

strcat(m_sTemp,"COM");

for(int i = 9; i > 0; -- i)

{

char ch1;

_itoa(i,&ch1,10);

strcat(m_sTemp,&ch1);

strcat(m_sTemp,":");

TCREG_DATA* pData = (TCREG_DATA*)GetCREG(m_sTemp);

if(!pData)

continue;

char szNum1[8] = {0};

char szNum2[8] = {0};

strcpy(szNum1,pData->AreaCode);

strcpy(szNum2,pData->CellID);

1 2 3  下一页

Tags:Windows Mobile 获取

编辑录入:coldstar [复制链接] [打 印]
赞助商链接