NMEA信息的读取与处理

来源:互联网 发布:c语言生成一个随机数 编辑:程序博客网 时间:2024/05/16 12:12
 
NMEA 0183协议的所有信息都是一行ASCII字符。NMEA 0183信息的所有字符为可打印字符(代码从0X20到0X7F),’$’(代码0X24),‘,’(代码0X2A)和<CR><LF>(0X0D0A)为NMEA 0183的特别保留字符。
信息构成 描述
$ 信息起始标志
ID 信息源起始标志(2个字符)接收GPS信号=‘GP’接收GLONASS信号=‘GL’接收几个卫星系统=‘GN’
MSG 信息标志(3个字符),数据的内容、数量、序号
, 数据的分隔符号
D1, … ,Dn 信息中的数据
* 校验和标志
CS 校验和(2个ASCII字符)
<CR><LF> 数据和信息的结束标志
语句起始:‘$’。
语句标志:‘$’与第一个‘,’之间的字符。
校验和:在本字节前,‘$’后所有字节按位异或。
语句结束:回车<CR>换行<LF>。

以下是$GPGGA语句:

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>
<1> UTC 当前时间,格式为 hhmmss(时时分分秒秒)
<2> 纬度格式为ddmm.mmmm(度度分分.分分分分,不足位数时前面的0会被省略)
<3> 纬度的属性,南北半球,N/S
<4> 经度格式为dddmm.mmmm
<5> 经度的属性,东西半球,E/W
<6> 接收机定位标志(1为单点定位成功,0为未定位)
<7> 跟踪到的GPS卫星数,从00到12(不足10个前面的0省略)
<8> 水平精度因子,0.5到99.9
<9> GPS+GLONASS天线所处海拔高度,-9999.9到99999.9米
<M> 表示单位米
<10> 大地水准面高度 -999.9 到 9999.9
<M> 表示单位米
<11> 有效数据年龄,最后一次有效差分定位时和现在的时间间隔,单位为秒。若是单点定位,则此信息位为空
<12> 代号 0000 到1023
<*> 校验和标志,其后面的一个字节即后面的<hh>表示校验和

以下是$GPRMC语句:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
<1> UTC 当前时间,格式为 hhmmss
<2> 状态字, A 表示定位成功, V表示目前没有定位
<3> 纬度格式为ddmm.mmmm
<4> 纬度的属性,南北半球, N/S
<5> 经度格式为dddmm.mmmm
<6> 经度的属性,东西半球, E/W
<7> 天线移动速度,从 000.0到999.9 节
<8> 相对地面方向, 000.0 到 359.9 度
<9>当前日期(UTC时间),格式为:ddmmyy
<10> 磁偏角 000.0 到180.0度
<11> 磁偏方向 E or W
<12> 模式字(只有NMEA 2.30 有输出)