网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC++实现GPS全球定位系统定位数据的提取
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
定位信息数据。同其他通讯协议类似,对GPS进行信息提取必须首先明确其帧结构,然后才能根据其结构完成对各定位信息的提取。对于本文所使用的GARMIN GPS天线板,其发送到计算机的数据主要由帧头、帧尾和帧内数据组成,根据数据帧的不同,帧头也不相同,主要有"$GPGGA"、"$GPGSA"、"$GPGSV"以及"$GPRMC"等。这些帧头标识了后续帧内数据的组成结构,各帧均以回车符和换行符作为帧尾标识一帧的结束。对于通常的情况,我们所关心的定位数据如经纬度、速度、时间等均可以从"$GPRMC"帧中获取得到,该帧的结构及各字段释义如下:

  $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh

  <1> 当前位置的格林尼治时间,格式为hhmmss

  <2> 状态, A 为有效位置, V为非有效接收警告,即当前天线视野上方的卫星个数少于3颗。

  <3> 纬度, 格式为ddmm.mmmm

  <4> 标明南北半球, N 为北半球、S为南半球

  <5> 径度,格式为dddmm.mmmm

  <6> 标明东西半球,E为东半球、W为西半球

  <7> 地面上的速度,范围为0.0到999.9

  <8> 方位角,范围为000.0到 359.9 度

  <9> 日期, 格式为ddmmyy

  <10> 地磁变化,从000.0到 180.0 度

  <11> 地磁变化方向,为E 或 W

  至于其他几种帧格式,除了特殊用途外,平时并不常用,虽然接收机也在源源不断地向主机发送各种数据帧,但在处理时一般先通过对帧头的判断而只对"$GPRMC"帧进行数据的提取处理。如果情况特殊,需要从其他帧获取数据,处理方法与之也是完全类似的。由于帧内各数据段由逗号分割,因此在处理缓存数据时一般是通过搜寻ASCII码"contentquot;来判断是否是帧头,在对帧头的类别进行识别后再通过对所经历逗号个数的计数来判断出当前正在处理的是哪一种定位导航参数,并作出相应的处理。下面就是对缓存Data中的数据进行解帧处理的主要代码,本文在此只关心时间(日期和时间)和地理坐标(经、纬度):
for(int i=0;i<DATALENGTH;I++){
 if(Data[i]==''''
  • 上一篇资讯: 深入浅出单元测试
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号
    ''') file://帧头,SectionID为逗号计数器
      SectionID=0;
      if(Data[i]==10){ file://帧尾
    }
     if(Data[i]=='''','''') file://逗号计数
      SectionID++;
     else {
      switch(SectionID){
       case 1: file://提取出时间
        m_sTime+=Data[i];
        break;
       case 2: file://判断数据是否可信(当GPS天线能接收到有3颗GPS卫星时为A,可信)
        if(Data[i]==''''A'''')
         GPSParam[m_nNumber].m_bValid=true;
         break;
       case 3: file://提取出纬度
         m_sPositionY+=Data[i];
         break;
       case 5: file://提取出经度
         m_sPositionX+=Data[i];
         break;
       case 9: file://提取出日期
         m_sDate+=Data[i];
         break;
         default:
         break;
      }
     }
    }



      现在已将所需信息提取到内存,即时间、日期以及经纬度分别保存在CString型变量 m_sTime、m_Data、m_sPositionY和m_sPositionX中。在实际应用中往往要根据需要对其做进一步的运算处理,比如从GPS接收机中获得的时间信息为格林尼治时间,因此需要在获取时间上加8小时才为我国标准时间。而且GPS使用的WGS-84坐标系也与我国采用的坐标系不同,有时也要对此加以变换。而这些变换运算必须通过数值运算完成,因此需要将前面获取的字符型变量转化为数值型变量,这部分工作可放在检测到帧尾完成:
    ::strcpy(buf,m_sTime);
    str.Format("%c%c",buf[0],buf);
    GPSParam
    上一页123下一页
    点击进入论坛和大家一起交流设计,分享设计素材,结交设计朋友
  • 上一篇资讯: 深入浅出单元测试
  • 下一篇资讯: 基于Visual C++6.0的DLL编程实现
  • 相关资讯

    网学推荐

    免费论文

    原创论文

    文章排行榜

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号