网站开发合同变更,重庆seo案例,建立网站最好的模板,网站功能建设GPS接收机只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到计算机中。前面的代码只负责从串口接收数据并将其放置于缓存#xff0c;在没有进一步处理之前缓存中是一长串字节流#xff0c;这些信息在没有经过分类提取之前是无法加以利用的。因此…GPS接收机只要处于工作状态就会源源不断地把接收并计算出的GPS导航定位信息通过串口传送到计算机中。前面的代码只负责从串口接收数据并将其放置于缓存在没有进一步处理之前缓存中是一长串字节流这些信息在没有经过分类提取之前是无法加以利用的。因此必须通过程序将各个字段的信息从缓存字节流中提取出来将其转化成有实际意义的可供高层决策使用的定位信息数据。同其他通讯协议类似对GPS进行信息提取必须首先明确其帧结构然后才能根据其结构完成对各定位信息的提取。对于本文所使用的GARMIN GPS天线板其发送到计算机的数据主要由帧头、帧尾和帧内数据组成根据数据帧的不同帧头也不相同主要有$GPGGA、$GPGSA、$GPGSV以及$GPRMC等。这些帧头标识了后续帧内数据的组成结构各帧均以回车符和换行符作为帧尾标识一帧的结束。对于通常的情况我们所关心的定位数据如经纬度、速度、时间等均可以从$GPRMC帧中获取得到该帧的结构及各字段释义如下$GPRMC,1,2,3,4,5,6,7,8,9,10,11*hh1 当前位置的格林尼治时间格式为hhmmss2 状态, A 为有效位置, V为非有效接收警告即当前天线视野上方的卫星个数少于3颗。3 纬度, 格式为ddmm.mmmm4 标明南北半球, N 为北半球、S为南半球5 径度格式为dddmm.mmmm6 标明东西半球E为东半球、W为西半球7 地面上的速度范围为0.0到999.98 方位角范围为000.0到 359.9 度9 日期, 格式为ddmmyy10 地磁变化从000.0到 180.0 度11 地磁变化方向为E 或 W至于其他几种帧格式除了特殊用途外平时并不常用虽然接收机也在源源不断地向主机发送各种数据帧但在处理时一般先通过对帧头的判断而只对$GPRMC帧进行数据的提取处理。如果情况特殊需要从其他帧获取数据处理方法与之也是完全类似的。由于帧内各数据段由逗号分割因此在处理缓存数据时一般是通过搜寻ASCII码$来判断是否是帧头在对帧头的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数并作出相应的处理。下面就是对缓存Data中的数据进行解帧处理的主要代码本文在此只关心时间(日期和时间)和地理坐标(经、纬度)for(int i0;i if(Data$) file://帧头SectionID为逗号计数器SectionID0;if(Data10){ file://帧尾}if(Data,) file://逗号计数SectionID;else {switch(SectionID){case 1: file://提取出时间m_sTimeData;break;case 2: file://判断数据是否可信(当GPS天线能接收到有3颗GPS卫星时为A可信)if(DataA)GPSParam[m_nNumber].m_bValidtrue;break;case 3: file://提取出纬度m_sPositionYData;break;case 5: file://提取出经度m_sPositionXData;break;case 9: file://提取出日期m_sDateData;break;default:break;}}}现在已将所需信息提取到内存即时间、日期以及经纬度分别保存在CString型变量 m_sTime、m_Data、m_sPositionY和m_sPositionX中。在实际应用中往往要根据需要对其做进一步的运算处理比如从GPS接收机中获得的时间信息为格林尼治时间因此需要在获取时间上加8小时才为我国标准时间。而且GPS使用的WGS84坐标系也与我国采用的坐标系不同有时也要对此加以变换。而这些变换运算必须通过数值运算完成因此需要将前面获取的字符型变量转化为数值型变量这部分工作可放在检测到帧尾完成::strcpy(buf,m_sTime);str.Format(%c%c,buf[0],buf[1]);GPSPar