1. 前言
随着手机软件硬件技术的发展,手机的功能越来越强大,同时手机与外界的数据连通显的愈发重要。 蓝牙 通信作为一种短距离无线通信技术标准,正逐渐普及,现在部分中高档手机已经配置了蓝牙模块。蓝牙有着比红外更快的速度、更远的传输距离、无角度等限制,为数据连通和交换提供了极大的便利,这为蓝牙发展和基于蓝牙的应用提供了广阔应用的前景。
2. GPS 系统介绍
通常的GPS定位信息格式是NEMA0183格式,数据内容较少,因此多用RS-232串口将定位信息从GPS接收机传送到计算机中进行信息提取处理。对于嵌入式设备,采用CF卡GPS或者SD卡GPS信号接收机,该类型设备被映射为一个标准的串行口设备,GPS数据的获取也与通常的串行口通信相同。从串口读取数据有多种实现方法,在这里对串口数据读取部分不做详细的说明。下面对GPS接收机的接受数据过程做一个介绍。
正常工作状态下,GPS接
收机就会不断地把接收并计算出的GPS导航定位信息传送到计算机中。没有进一步处理之前缓存中是一长串字节流,这些信息在没有经过分类提取之前是无法加以利用的。因此,必须通过程序将各个字段的信息从缓存字节流中提取出来,将其转化成有实际意义的,可使用的信息。同其它通讯协议类似,对GPS进行信息提取必须首先明确其帧的数据结构,然后才能根据其结构完成对各定位信息的提取,现对该规范中作者用到的$GPRMC格式举例介绍如下:
3. GPS数据获取通常解决方法
通常情况下,PDA的蓝牙通信一般是虚拟串口连了一个GPS,所以要做的主要工作是找出PDA上蓝牙模块模拟出的对应串口,找到对用的串口后,我需要从串口中将GPS数据读出来。
通常的GPS数据的读取如下:
void ProcessGPSData(CString & strGPS)
{
CString sTime,sPositionX,sPositionY,sGpsStatus; //读取到的gps数据
sTime = ""; //当前GPS时间
sPositionX = ""; //当前位置X
sPositionY = "";
www.55dianzi.com
//当前位置Y
int iPosiRMC = str GPS .Find(_T("$GPRMC,")); //获取位置时间信息
int iGPSlength = strGPS.GetLength();
if (iPosiRMC!= -1) & nbsp; //获取位置、时间信息
{ int SectionID="0"; //记录当前读取位置
for (int i= iPosiRMC;i { if ((strGPS.GetAt(i))==','){ SectionID++; continue; } else { { case 1: &n
bsp; //提取出时间 sTime+=str GPS .GetAt(i); break; case 2: //判断GPS信号是否可信 if(strGPS.GetAt(i)=='A') {sGpsStatus = "A";……} else if(strGPS.GetAt(i)=='V') { sGpsStatus = "V";……} break;
sPositionY+=str GPS .GetAt(i); break; &n
bsp; case 5://提取出经度
www.55dianzi.com
www.55dianzi.com
case 3: //提取出纬度