GPS $GPRMC
时间: 2023-11-11 20:50:05 浏览: 54
GPS $GPRMC是一种特定的GPS/TRANSIT数据格式,用于提供最低定位信息。它包含了如下字段:
- field 0:$GPRMC,表示格式ID,表示该格式为建议的最低特定GPS/TRANSIT数据(RMC)推荐最低定位信息
- field 1:UTC时间,格式为hhmmss.ssss,代表时分秒.毫秒
- field 2:定位状态,A代表定位成功,V代表定位失败
- field 3:纬度,格式为ddmm.mmmmmm 度格式(如果前导位数不足,则用0填充)
- field 4:纬度方向,N代表北纬,S代表南纬
- field 5:经度,格式为dddmm.mmmmmm 度格式(如果前导位数不足,则用0填充)
- field 6:经度方向,E代表东经,W代表西经
- field 7:速度,单位为节(也可转换为1.852 km/h)
- field 8:方位角,单位为度(二维方向,等效于二维罗盘)
- field 9:UTC日期,格式为DDMMYY,代表天月年
- field 10:磁偏角,单位为度(000-180)(如果前导位数不足,则用0填充)
- field 11:磁偏角方向,E代表东,W代表西
- field 12:模式,A代表自动,D代表差分,E代表估计,AND代表无效数据(3.0协议内容)
- field 13:校验和
相关问题
GPS GPRMC语句
GPRMC语句是GPS接收机输出的一种标准语句,包括了接收机位置、速度、时间等信息。其中,GPRMC是语句的类型标识符,其含义为Recommended Minimum Specific GPS/Transit Data(推荐最小特定GPS/过境数据)。GPRMC语句的格式如下:
$GPRMC,time,status,lat,NS,long,EW,spd,crs,date,mv,mvEW,posMode*cs<CR><LF>
其中,各字段含义如下:
- time: UTC时间,格式为hhmmss.sss
- status: 定位状态,A=有效定位,V=无效定位
- lat: 纬度,格式为ddmm.mmmm
- NS: 纬度半球N或S
- long: 经度,格式为dddmm.mmmm
- EW: 经度半球E或W
- spd: 速度,单位为节,格式为nnn.n
- crs: 地面航向,以真北为参考,格式为ddd.d
- date: UTC日期,格式为ddmmyy
- mv: 磁偏角,格式为ddd.d
- mvEW: 磁偏角方向,E或W
- posMode: 定位模式,N=没有定位信息,A=自主定位,D=差分定位
示例:$GPRMC,082445.000,A,3152.1043,N,11708.4522,E,0.00,0.00,280714,,,A*7B
解释代码if (cInputChar == '$') { if(i != 0) { if(!strncmp(nStrBuf,"$GPRMC ", 6)) { nStrBuf[i] = cInputChar; gps_info(MSG_GPRMC,&nStrBuf[6]); } } i = 0; } nStrBuf[i] = cInputChar; i++; }
这段代码出现在之前提到的 `gps_test` 函数内部的死循环中。
代码的作用是解析从串口接收到的 GPS 模块发送的信息,并将其存储到 `nStrBuf` 字符数组中。
首先,代码判断从串口接收到的字符是否为 '$',如果是,则表示接收到了一个新的 GPS 信息。接着,判断 `nStrBuf` 数组中是否有已接收的信息,如果有,则认为其为上一条 GPS 信息,将其解析并输出。判断的方式是通过 `strncmp` 函数比较 `nStrBuf` 数组前 6 个字符是否为 "$GPRMC ",如果是,则表示其为 GPRMC 信息,将其解析并通过调用 `gps_info` 函数输出。
然后,将 `i` 的值重置为 0,表示开始存储新的 GPS 信息。接着,将从串口接收到的字符存储到 `nStrBuf` 数组中,并将 `i` 的值加 1,指向下一个可用的位置。
这个过程会一直循环,直到接收到 '\n' 字符为止。整个过程的目的是实时获取 GPS 信息,对其进行解析,并输出。