




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目前GPS(全球定位系统)定位应用市场日趋成熟,正在进入应用的高速发展时期。看到论坛里不断有人提问关于GPS的问题。现将个人对GPS的了解写出来跟大家一块探讨。 1、 GPS应用简介 近年来GPS系统,已经在大地测绘、海上渔用、车辆定位监控、建筑、农业等各个领域得到广泛应用。从九十年代我国引进GPS定位技术开始,经过十多年的市场培育,GPS定位应用进入了发展的最好时机,未来十年基于GPS的应用将会改变我们的生活和工作方式。 目前市场上的大部分GPS接受模块都是通过RS232串口与MCU进行数据传输的。这些数据包括经度、纬度、海拔高度、时间、卫星使用情况等基本信息。开发人员再依据这些基本数据,进行数据处理来完成整套的定位系统软件。 2、 数据格式 在进行数据接受编程之前,先介绍一下该模块的数据格式。它支持NMEA-0183输出格式。信息如下: GGA位置测定系统定位资料(Global Positioning System Fix Data) GSV 导航卫星资料(GNSS Satellites in View) RMC导航卫星特定精简资料(Recommended Minimum Specific GNSS Data) VTG 方向及速度等相关资料(Course Over Ground and Ground Speed) 由于文章篇幅问题,笔者在这里只以接收GGA数据为例,格式如下: $GPGGA,hhmmss,dddmm.mmmm,a,dddmm.mmmm,a,x,xx,x.x,x.x,M,M,x.x,xxxx*CS 例:$GPGGA,033744,2446.5241,N,12100.1536,E,1,10,0.8,133.4,M,*1F 说明见表: 上面例子中,我们可读出位置信息:北纬24度46.5241分,西经121度00.1536分 格林威治时间:3点37分44秒 3 部分程序代码(c+) /初始化串口 /入口:strComm(串口名) /返回:TRUE(成功);FALSE(失败) BOOL CGPSDlg:InitComm(CString strComm) int i; DCB dcb; COMMTIMEOUTS TimeOuts; for (i=0; i3; i+) /串口最多初始化3次 m_hComm = CreateFile(strComm, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (m_hComm != INVALID_HANDLE_VALUE) break; if (i = 3) /串口初始化失败 AfxMessageBox(串口初始化失败.); return FALSE; SetupComm(m_hComm, MAXLENGTH, MAXLENGTH); /设置发送接收缓冲区大小 TimeOuts.ReadIntervalTimeout = 0; /设定5个超时参数 TimeOuts.ReadTotalTimeoutMultiplier = 0; TimeOuts.ReadTotalTimeoutConstant = 500; TimeOuts.WriteTotalTimeoutMultiplier = 0; TimeOuts.WriteTotalTimeoutConstant = 500; SetCommTimeouts(m_hComm, &TimeOuts); /设置超时参数 GetCommState(m_hComm, &dcb); /获得通信状态 dcb.fAbortOnError = FALSE; /有错误不停止 dcb.BaudRate = CBR_4800; /波特率4800 dcb.ByteSize = 8; /8位 dcb.Parity = NOPARITY; /奇校验 dcb.StopBits = ONESTOPBIT; /1位停止位 SetCommState(m_hComm, &dcb); /设置通信状态 PurgeComm(m_hComm, PURGE_TXCLEAR|PURGE_RXCLEAR); /清空发送和接收缓冲区 return TRUE; /获得GPS参数 /注意:从GPS接收到的字符串已经在m_strRecv中,由于是定时接收,所以在这个字符串的头和尾都可能存在 / 不完整的NMEA输出字符串,在处理时要特别注意 /返回:TRUE(格式正确);FALSE(格式错误) BOOL CGPSDlg:GetGPSParam() int i,j; CString str,strNEMA; /先判断是否接收到数据 if (m_strRecv.IsEmpty() return FALSE; /若字符串不是以$开头的,必须删掉这部分不完整的 if (m_strRecv0 != $) i = m_strRecv.Find(n, 0); if (i = -1) return FALSE; /尾部未接收完整,必须等接收完后才能删除 m_strRecv.Delete(0, i+1); /尾部已接收完整(尾部为rn结束),删除不完整的部分 /截取完整的NMEA-0183输出语句(m_strRecv中可能有多条语句,每条间以rn分隔) for (;) i = m_strRecv.Find(n, 0); if (i = -1) break; /所有的完整输出语句都已经处理完毕,退出循环 /截取完整的NMEA-0183输出语句 strNEMA = m_strRecv.Left(i+1); m_strRecv.Delete(0, i+1); /下面对各种输出语句进行分别处理 if (strNEMA.Find($GPRMC,0) = 0) /该输出语句中的各项以,分隔 for (i=j=0; strNEMA!=r; i+) /j为逗号的计数器 if (strNEMA = ,) j+; str = ; for (i+; strNEMA!=,&strNEMA!=r; i+) str += strNEMA; /str为某项的值 i-; /对各项数据分别处理 switch (j) case 1: /时间(UTC) m_strTime = str.Left(6); m_strTime.Insert(2, :); m_strTime.Insert(5, :); break; case 2: /状态(A-数据有效;V-数据无效,还未定位) if (str = A) m_strStatus = 有效数据; else if(str = V) m_strStatus = 正在定位.; else m_strStatus = 非法数据格式; break; case 3: /纬度(ddmm.mmmm) str.Insert(2, 度); str += 分; m_strLatitude = str; break; case 4: /纬度指示(N-北纬;S-南纬) if (str = N) m_strLatitude.Insert(0, 北纬); else m_strLatitude.Insert(0, 南纬); break; case 5: /经度(dddmm.mmmm) str.Insert(3, 度); str += 分; m_strLongitude = str; break; case 6: /经度指示(E-东经;W-西经) if (str = E) m_strLongitude.Insert(0, 东经); else m_strLongitude.Insert(0, 西经); break; case 7: /速度(单位:节) m_strSpeed = str; break; case 8: /航向(单位:度) m_strCourse = str; break; case 9: /日期(UTC) m_strDate = ; m_strDate += 20; m_strDate += str4; m_strDate += str5; m_strDate += -; m_strDate += str2; m_strDate += str3; m_strDate += -; m_strDate += str0; m_strDate += str1; break; default: break; else if (strNEMA.Find($GPGGA,0) = 0) else if (strNEMA.Find($GPGSA,0) = 0) else if (strNEMA.Find($GPGSV,0) = 0) else if (strNEMA.Find($GPGLL,0) = 0) else if (strNEMA.Find($GPVTG,0) = 0) else return FALSE; /格式错误 return TRUE; 相关的主题文章:-一、 NMEA0183标准语句1、 Global Positioning System Fix Data(GGA)GPS定位信息$GPGGA,M,M,*hh UTC时间,hhmmss(时分秒)格式 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 经度半球E(东经)或W(西经) GPS状态:0=未定位,1=非差分定位,2=差分定位,6=正在估算 正在使用解算位置的卫星数量(0012)(前面的0也将被传输) HDOP水平精度因子(0.599.9) 海拔高度(-9999.999999.9) 地球椭球面相对大地水准面的高度 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空) 差分站ID号00001023(前面的0也将被传输,如果不是差分定位将为空)2、 GPS DOP and Active Satellites(GSA)当前卫星信息$GPGSA,*hh 模式,M=手动,A=自动 定位类型,1=没有定位,2=2D定位,3=3D定位 PRN码(伪随机噪声码),正在用于解算位置的卫星号(0132,前面的0也将被传输)。 PDOP位置精度因子(0.599.9) HDOP水平精度因子(0.599.9) VDOP垂直精度因子(0.599.9)3、 GPS Satellites in View(GSV)可见卫星信息$GPGSV,*hh GSV语句的总数 本句GSV的编号 可见卫星的总数(0012,前面的0也将被传输) PRN码(伪随机噪声码)(0132,前面的0也将被传输) 卫星仰角(0090度,前面的0也将被传输) 卫星方位角(000359度,前面的0也将被传输) 信噪比(0099dB,没有跟踪到卫星时为空,前面的0也将被传输)注:,信息将按照每颗卫星进行循环显示,每条GSV语句最多可以显示4颗卫星的信息。其他卫星信息将在下一序列的NMEA0183语句中输出。4、 Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐定位信息$GPRMC,*hh UTC时间,hhmmss(时分秒)格式 定位状态,A=有效定位,V=无效定位 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 经度半球E(东经)或W(西经) 地面速率(000.0999.9节,前面的0也将被传输) 地面航向(000.0359.9度,以真北为参考基准,前面的0也将被传输) UTC日期,ddmmyy(日月年)格式 磁偏角(000.0180.0度,前面的0也将被传输) 磁偏角方向,E(东)或W(西) 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)5、 Track Made Good and Ground Speed(VTG)地面速度信息$GPVTG,T,M,N,K,*hh 以真北为参考基准的地面航向(000359度,前面的0也将被传输) 以磁北为参考基准的地面航向(000359度,前面的0也将被传输) 地面速率(000.0999.9节,前面的0也将被传输) 地面速率(0000.01851.8公里/小时,前面的0也将被传输) 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)6、 Geographic Position(GLL)定位地理信息$GPGLL,*hh 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 经度半球E(东经)或W(西经) UTC时间,hhmmss(时分秒)格式 定位状态,A=有效定位,V=无效定位 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)二、 GARMIN定义的语句7、 Estimated Error Information(PGRME)估计误差信息$PGRME,M,M,M*hh HPE(水平估计误差),0.0999.9米 VPE(垂直估计误差),0.0999.9米 EPE(位置估计误差),0.0999.9米8、 GPS Fix Data Sentence(PGRMF)GPS定位信息$PGRMF,*hh GPS周数(01023) GPS秒数(0604799) UTC日期,ddmmyy(日月年)格式 UTC时间,hhmmss(时分秒)格式 GPS跳秒数 纬度ddmm.mmmm(度分)格式(前面的0也将被传输) 纬度半球N(北半球)或S(南半球) 经度dddmm.mmmm(度分)格式(前面的0也将被传输) 经度半球E(东经)或W(西经) 模式,M=手动,A=自动 定位类型,0=没有定位,1=2D定位,2=3D定位 地面速率(01851公里/小时) 地面航向(000359度,以真北为参考基准) PDOP位置精度因子(09,四舍五入取整) TDOP时间精度因子(09,四舍五入取整)9、 Map Datum(PGRMM)坐标系统信息$PGRMM,*hh 当前使用的坐标系名称(数据长度可变,如“WGS 84”)注:该信息在与MapSource进行实时连接的时候使用。10、 Sensor Status Information(PGRMT)工作状态信息$PGRMT,*hh 产品型号和软件版本(数据长度可变,如“GPS 15L/15H VER 2.05”) ROM校验测试,P=通过,F=失败 接收机不连续故障,P=通过,F=失败 存储的数据,R=保持,L=丢失 时钟的信息,R=保持,L=丢失 振荡器不连续漂移,P=通过,F=检测到过度漂移 数据不连续采集,C=正在采集,如果没有采集则为空 GPS接收机温度,单位为摄氏度 GPS接收机配置数据,R=保持,L=丢失注:本语句每分钟发送一次,与所选择的波特率无关。11、 3D velocity Information(PGRMV)三维速度信息$PGRMV,*hh 东向速度,514.4514.4米/秒 北向速度,514.4514.4米/秒 上向速度,999.99999.9米/秒12、 DGPS Beacon Information(PGRMB)信标差分信息$PGRMB,K,*hh 信标站频率(0.0,283.5325.0kHz,间隔为0.5kHz) 信标比特率(0,25,50,100或200bps) SNR信标信号信噪比(031) 信标数据质量(0100) 与信标站的距离,单位为公里 信标接收机的通讯状态,0=检查接线,1=无信号,2=正在调谐,3=正在接收,4=正在扫描 差分源,R=RTCM,W=WAAS,N=非差分定位 差分状态,A=自动,W=仅为WAAS,R=仅为RTCM,N=不接收差分信号三、TEXT文本格式说明: 区域描述: 长度: 注释: - - - 句头起始符 1 始终为 - - - /年 2 UTC年的最后两位数字 | - - - | 月 2 UTC月, 01.12T | - - -i | 日 2 UTC日, 01.31m | - - -e | 时 2 UTC时, 00.23 | - - - | 分 2 UTC分, 00.59 | - - - 秒 2 UTC秒, 00.59 - - - /纬度半球 1 N 或 S | - - - | 纬度坐标 7 WGS84坐标系统,坐标格式ddmmmmm, | 在第4位数字后省略了一个小数点。 | - - - | 经度半球 1 E 或 W | - - - | 经度坐标 8 WGS84坐标系统,坐标格式dddmmmmm,P | 在第5位数字后省略了一个小数点。o | - - -s | 定位状态 1 d 2维差分定位i | D 3维差分定位t | g 2维定位i | G 3维定位o | S 模拟状态n | _ 无效 | - - - | 水平定位误差 3 单位为“米” | - - - | 高度符号 1 + 或 - | - - - 高度 5 海拔高,单位为“米” - - - /东/西速度方向 1 E 或 W | - - - | 东/西速度 4 单位是“米/秒”,在第三位后省略了一个小数点, | (1234 = 123.4 m/s)V | - - -e | 南/北速度方向 1 S 或 Nl |o | - - -c | 南/北速度 4 单位是“米/秒”,在第三位后省略了一个小数点,i | (1234 = 123.4 m/s)t | - - -y | 垂直速度方向 1 U (上) 或 D (下) | - - - | 垂直速度 4 单位是“米/秒”,在第二位后省略了一个小数点, (1234 = 12.34 m/s) - - - 句尾结束符 2 回车, 0x0D, 和换行0x0A - - -如果某字段的数值没有达到所定义的长度,将在前面添加0。任何无效的数字将以下划线来代替。-我用的GPS输出的是NMEA0183数据格式,别的格式我也不清楚。GPS有效时发的一组数据是:$GPGSV,3,1,12,18,72,335,38,21,41,211,27,24,19,179,23,09,76,068,28*77$GPGSV,3,2,12,22,35,313,31,29,11,070,27,26,19,065,32,12,21*49$GPGSV,3,3,12,14,16,271,05,16,159,30,05,171,32,03,308,*7B$GPGGA,010101.130,3606.6834,N,12021.7778,E,1,07,1.2,32.00,M,*0C$GPGSA,A,3,09,18,21,22,24,26,29,2.0,1.2,1.6*3E$GPRMC,010101.130,A,3606.6834,N,12021.7778,E,0.0,238.3,010807,A*6CGPS无效时发的一组数据是:$GPGSV,3,1,12,01,64,334,22,31,56,301,29,14,70,092,32,50,218,*71$GPGSV,3,2,12,30,48,050,05,30,046,07,27,120,22,26,184,*7D$GPGSV,3,3,12,06,26,114,16,19,211,12,12,041,20,08,321,*7E$GPGGA,011035.002,3606.6971,N,12021.8015,E,0,00,50.0,83.72,M,*37$GPGSA,A,1,*1E$GPRMC,011035.002,V,3606.6971,N,12021.8015,E,240907,N*7CGPS复位时发的一组数据(只取到了$GPRMC这组):$GPRMC,011035.002,V,3606.6971,N,12021.8015,E,N*7C我取得是$GPRMC这组数据,个人认为这组数据提供信息是比较详细的,而且在程序代码里好提取。格式为:$GPRMC,010101.130, A, 3606.6834, N, 12021.7778, E, 0.0, 238.3, 010807,A*6C$GPRMC, , , , , , , , , , 当前位置的格林尼治时间,即世界时间,与北京时间差8个小时,格式为hhmmss.ms 状态, A 为有效位置, V为非有效接收警告,即当前天线视野上方的卫星个数少于3颗。 纬度, 格式为ddmm.mmmm 标明南北半球, N 为北半球、S为南半球 径度,格式为dddmm.mmmm 标明东西半球,E为东半球、W为西半球 地面上的速度,范围为0.0到999.9 方位角,范围为000.0到 359.9 度 日期, 格式为ddmmyy 注意几点:1、当GPS数据有效时第17位(一般情况下,程序里最好是找第二个逗号在取下一位判断)为“A”,无效时为“V”;2、GPS有效时,当速度为0时显示0.0(两位数),当速度不为0时小数点前面数据根据情况变化,最大为三位,此处速度单位为节(海里),需要做处理才能得到我们习惯的单位(公里/小时);3、GPS无效时,除了第17位显示V以外,不输入速度,角度数据;4、当给GPS复位时第17位为V,不输出速度,角度,时间数据。我了解的也就这么多了,有哪里说的不详细的可以直接问我。加我QQ请加说明。-GPS固定数据输出语句(GPGGA) 这是一帧GPS定位的主要数据,也是使用最广的数据。为了便于理解,下面举例说明GPGGA语句各部分的含义。例1是用GN77N和笔者开发的软硬件接口,在笔者所在地接收到的GPGGA语句的内容。例1:GPGGA,050901,3931.4449,N,11643.5123,E,1,07,1.4,76.2,M,7.0,M,65 其标准格式为:GPGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)hh(CR)(LF) 各部分所对应的含义为: (1)定位UTC时间:05时09分01秒 (2)纬度(格式ddmm.mmmm:即dd度,mm.mmmm分); (3)N/S(北纬或南纬):北纬39度31.4449分; (4)经度(格式dddmm.mmmm:即ddd度,mm.mmmm分); (5)E/W(东经或西经):东经116度43.5123分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高速车道车速考试题及答案
- 高级焊工考试题及答案app
- 阜阳中考试题及答案数学
- 佛山模拟中考试题及答案
- 法语最简单考试题及答案
- 中国甲基磺酰胺项目创业计划书
- 中国电池管理系统项目创业计划书
- 电商装修考试题及答案
- 2025年直驱电机市场调查报告
- 电机与电器考试题及答案
- 护理事业十五五发展规划(2026-2030)
- T/CTRA 01-2020废轮胎/橡胶再生油
- 2019抽水蓄能电站工程施工工艺标准手册:土建分册
- 大健康项目商业计划书
- 西安教师入编协议书
- 《高龄卧床高危静脉血栓栓塞症防治中国专家共识》解读
- 比亚迪汽车出口合同协议
- 2025至2030年中国LNG加气站行业深度调研及投资前景预测报告(上下卷)
- 招投标程序审计报告范文
- 《劳动教育》 课件 专题二 夯实劳动技能 第三节 提高社会技能
- 课题开题报告:生成式人工智能在教育的应用现状与优化策略研究
评论
0/150
提交评论