ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:41.51KB ,
资源ID:9294643      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9294643.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(NMEA 0813标准数据格式的解释和模拟.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

NMEA 0813标准数据格式的解释和模拟.docx

1、NMEA 0813标准数据格式的解释和模拟NMEA 0813标准数据格式的解释和模拟NMEA是“National Marine Electronics Association”(国际海洋电子协会)的缩写,同时也是数据传输标准工业协会,该协会定制的GNSS数据格式是NMEA 0183数据格式,它是一套定义接收机输出的标准信息,有几种不同的格式,每种都是独立相关的ASCII格式,逗点隔开数据流,数据流长度从30-100字符不等,通常以每秒间隔选择输出。最常用的格式为“GGA”,它包含了定位时间、纬度、经度、高度、定位所用的卫星数、DOP值、差分状态和校正时段等,还有速度,跟踪,日期等。GPS接收机

2、根据NMEA 0183协议的标准规,将位置、速度等信息通过串口传送到PC机、PDA等设备。NMEA实际上已成为所有的GNSS接收机和最通用的数据输出格式,同时它也被用于与GNSS接收机接口的大多数软件包里。NMEA-0183协议是GNSS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议,大多数常见的GNSS接收机、GNSS数据处理软件、导航软件都遵守或者至少兼容这个协议。NMEA 0813格式与专业RTCM2.3/3.0和CMR+的GNSS数据格式不同,NMEA 0813格式主要针对民用定位导航设备,通过NMEA 0183格式,可以实现GNSS接收机与PC或PDA之间的数据交换

3、,可以通过USB和COM口等通用数据接口进行数据传输,其兼容性高,数据传输稳定。同时NMEA 0183可以作为民用差分GPS服务解算基础数据,通过CORS参考站和GPRS/CDMA公网通讯,直接接收NMEA 0183兼容格式的差分信息,实现一般差分GNSS服务。NMEA最基本的使用方式如图1所示。 图一NMEA-0183协议定义的语句非常多,但是常用的或者说兼容性最广的语句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。NMEA-0183 的每条语句的格式如下表1所示。表1 NMEA协议语句格式定义符号(ASCII)定义“$”语句起始位aaccc地址域

4、,前两位为识别符,后三位为语句名“,”域分隔符dddddd发送的数据容“*”效验和符号,后面的两位数是效验和hh效验和/终止符,回车或换行不同的GPSOEM接收板提供的NMEA语句有很大差异,主要表现在字段的意义和位置上。用户需要先弄清楚需要哪些信息,然后对照GPS OEM接收板的技术资料,寻找那些包括所需信息的NMEA语句。下面将介绍兼容性最广泛的6条NMEA语句(1)$GPGGA语句Global Positioning System Fix Data(GGA),即GPS定位信息。该语句中反映GPS定位主要数据,包括经纬度、质量因子、HDOP、高程、参考站号等字段。其标准格式如下:$GPGG

5、A,M,M,*hh各字段的含义和取值围见表2所示。表2 $GPGGA语句各字段的含义和取值围字段含义取值围UTC时间hhmmss.ss000000.00235959.99纬度,格式:ddmm.mmmm000000008959.9999南北半球N北纬;S南纬经度格式dddmm.mmmm00000.000017959.9999东西半球E表示东经;W表示西经GPS状态0=未定位,1=GPS单点定位固定解,2=差分定位,3=PPS解;4=RTK固定解;5=RTK浮点解;6=估计值;7=手工输入模式;8=模拟模式应用解算位置的卫星数0012HDOP, 水平图形强度因子0.50099.000(大于6不可用

6、)海拔高度-9999.999999.9地球椭球面相对水准面的高度(高程异常)-9999.999999.9差分时间从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空参考站号00001023;不使用DGPS时为空例句:$GPGGA,074529.82,2429.6717,N,11804.6973,E,1,8,1.098,42.110,M,M,*76(2)$GPGSA语句GPS DOP and Active Satellites(GSA)即当前卫星信息, 其标准格式如下:$GPGSA,*hh各字段的含义和取值围见表3所示。表3 $GPGSA语句各字段的含义和取值围字段含义取值围模式M=手动,

7、A=自动定位类型1=没有定位,2=2D定位,3=3D定位PRN码(伪随机噪声码),正在用于解算位置的卫星号0132PDOP位置精度因子0.599.9HDOP水平精度因子0.599.9VDOP垂直精度因子0.599.9例句:$GPGSA,A,3,19,11,03,23,27,13,16,3.43,1.67,2.99*0E(3)$GPGSV语句GPS Satellites in View(GSV)可见卫星信息,反映GPS可见星的方位角、俯仰角、信噪比等。其标准格式如下:$GPGSV,*hh各字段的含义和取值围见表4所示。表4 $GPGSV语句各字段的含义和取值围字段含义取值围总的GSV语句电文数0

8、12当前GSV语句号1-3可视卫星总数0012卫星号0132卫星仰角0090度卫星方位角000359度信噪比0099dB,没有跟踪到卫星时为空注:,信息将按照每颗卫星进行循环显示,每条GSV语句最多可以显示4颗卫星的信息。其他卫星信息将在下一序列的NMEA0183语句中输出。例句:$GPGSV,3,1,11,1,83,54,32,3,19,192,28,6,26,57,36,7,51,140,37*7D$GPGSV,3,2,11,14,40,136,34,16,64,266,36,20,21,293,22,2,168,*4C$GPGSV,3,3,11,23,10,321,25,53,7,40,

9、30,2,46,*48(4)$GPRMC 语句Recommended Minimum Specific GPS/TRANSIT Data(RMC),即推荐定位信息。其标准格式如下:$GPRMC,*hh各字段的含义和取值围见表5所示。表5 $GPRMC语句各字段的含义和取值围字段含义取值围UTC时间, hhmmss.ss000000.00235959.99定位状态A=有效定位,V=无效定位纬度,格式:ddmm.mmmm000000008959.9999南北半球N表示北纬;S表示南纬经度格式dddmm.mmmm00000.000017959.9999东西半球E表示东经;W表示西经地面速率000.0

10、999.9节地面航向000.0359.9,以真北为参考基准UTC日期,格式:ddmmyy日月年磁偏角000.0180.0度磁偏角E表示偏东;W表示偏西模式指示(NMEA0183 3.00版本输出)A=自主定位,D=差分,E=估算,N=数据无效例句:$GPRMC,074529.82,A,2429.6717,N,11804.6973,E,12.623,32.122,010806,W,A*08(5)$GPVTG 语句Track Made Good and Ground Speed(VTG),即地面速度信息。其标准格式为:$GPVTG,T,M,N,K,*hh各字段的含义和取值围见表6所示。表6 $GP

11、VTG 语句各字段的含义和取值围字段含义取值围以真北为参考基准的地面航向000359度以磁北为参考基准的地面航向000359度地面速率000.0999.9节地面速率0000.01851.8公里/小时模式指示(仅NMEA0183 3.00版本输出)A=自主定位,D=差分,E=估算,N=数据无效例句:$GPVTG,257.314,T,257.314,M,10.739,N,19.888,K,A*2F(6)$GPGLL语句Geographic Position(GLL),即定位地理信息。其标准格式如下:$GPGLL,*hh各字段的含义和取值围见表7所示。表7 $GPGLL语句各字段的含义和取值围字段含

12、义取值围纬度,格式:ddmm.mmmm000000008959.9999南北半球N表示北半球;S表示南半球经度,格式:dddmm.mmmm00000.000017959.9999东西半球E表示东经;W表示西经UTC时间,格式:hhmmss000000.00235959.99定位状态A=有效定位,V=无效定位模式指示(NMEA0183 3.00版本输出)A=自主定位,D=差分,E=估算,N=数据无效5 NMEA 0183数据模拟该源代码为VC+源代码,是对一个模拟NMEA数据的类的定义。struct CNmeaDataCNmeaData ();void ResetData ();/ Data r

13、etrieved from the NMEA sentences.double lat; / 纬度,单位为度(正数为北纬,负数为南纬)double lon; / 经度,单位为度(正数为东经,负数为西经)double altitude; / 海拔高度,米double speed; / 速度,节double track; /追踪卫星高度角,度double magVariation; / 磁偏角,度double hdop; / HDOP值int numSats; / 追踪卫星数int UTCYear; / UTC年int UTCMonth; / UTC月int UTCDay; / UTC日int U

14、TCHour; / UTC时int UTCMinute; / UTC分int UTCSecond; / UTC秒CSatData satDataMAC_SATS;/ 卫星锁定数:/ 0 = 无效, 1 = 卫星锁定, 2 = DGPS状态GPS_FIX_QUALITY lastFixQuality;/ 有效卫星数bool isValidLat; / 纬度bool isValidLon; / 经度bool isValidAltitude; / 高程bool isValidSpeed; / 速度bool isValidDate; / 日期bool isValidTime; / 时间bool isV

15、alidTrack; / 追踪卫星角bool isValidMagVariation; / 磁偏角变化bool isValidHdop; / HDOP值bool isValidSatData; / 卫星数/ 确定是否有有效的坐标数据发送到数据端口bool hasCoordEverBeenValid;class CNmeaParserpublic:CNmeaParser ();SENTENCE_STATUS ParseSentence (const char* sentence);void GetData (CNmeaData& data)const;void ResetData ()m_dat

16、a.ResetData ();private:bool ParseDegrees (double& degrees, const char* degString)const;bool ParseDate (int& year, int& month, int& day,const char* dateString)const;bool ParseTime (int& hour, int& minute, int& second,const char* timeString)const;void ParseAndValidateAltitude (const char* field, const

17、 char unit);void ParseAndValidateDate (const char* field);void ParseAndValidateFixQuality (const char* field);void ParseAndValidateLat (const char* field, const char hem);void ParseAndValidateLon (const char* field, const char hem);void ParseAndValidateHdop (const char* field);void ParseAndValidateS

18、peed (const char* field);void ParseAndValidateMagVariation(const char* field,const char direction);void ParseAndValidateTime (const char* field);void ParseAndValidateTrack (const char* field);void ParseGGA (const char* sentence);void ParseGLL (const char* sentence);void ParseRMC (const char* sentenc

19、e);void ParseGSV (const char* sentence);bool GetNextField (char* data, const char* sentence,uint& currentPosition)const;bool IsValidSentenceType (const char* sentence)const;bool IsCorrectChecksum (const char* sentence)const;CNmeaData m_data;/ 需要分解GSV语句int m_lastSentenceNumber;/ 确定结束语句int m_numSenten

20、ces; / 处理语句数int m_numSatsExpected; / 分析捕获卫星数int m_numSatsLeft; / 分析失锁卫星数int m_satArrayPos; / 下一次捕获卫星位置预测CSatData m_tempSatDataMAC_SATS;class CNmeaSerialpublic:CNmeaSerial ();CNmeaSerial (HWND hMsgWnd, DWORD timeout);CNmeaSerial ();SERIAL_RESULT_TYPE CloseConnection ();SERIAL_RESULT_TYPE OpenConnecti

21、on ();SERIAL_RESULT_TYPE OpenConnection (uint8 comPort, uint32 baudRate,uint8 dataBits, SETPARITY parity, STOPBITS stopBits);SERIAL_RESULT_TYPE GetData (CNmeaData& data)const;SERIAL_RESULT_TYPE GetSettings (uint8& comPort, uint32& baudRate,uint8& dataBits, SETPARITY& parity, STOPBITS& stopBits)const

22、;unsigned long GetThreadHandle ()const return m_hThread;BOOL IsConnected ()const return m_isConnected;private:SERIAL_RESULT_TYPE InitThread ();BOOL KillThread ();BOOL LockData ()const;void SetDefaults ();BOOL UnlockData ()const;/ 元函数描述语句,并运行该语句/ 进入另外线程static void ProcessSentences (void* currentObject);uint8 m_comPort;uint32 m_baudRate;uint8 m_dataBits;SETPARITY m_parity;STOPBITS m_stopBits;BOOL m_isConnected;DWORD m_timeout;unsigned long m_hThread;HANDLE m_hPort;HANDLE m_hMutex;DWORD m_threadId;CNmeaParser m_parser;/ 接收描述信息窗口HWND m_hMsgWnd;/ 如果值为True,则进行线程分析/ 否则结束状态BOOL m_terminateThread;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1