|
楼主 |
发表于 2014-5-24 15:16:43
|
显示全部楼层
本帖最后由 岗本科技 于 2014-5-24 15:18 编辑
原始数据如下:
$GNRMC,094211.00,A,2429.34150,N,11710.49027,E,0.341,,160514,,,A*6F
$GNRMC,094215.00,A,2429.34151,N,11710.49092,E,0.370,,160514,,,A*66
$GNRMC,094215.00,A,2429.34151,N,11710.49092,E,0.370,,160514,,,A*66
$GNRMC,094215.00,A,2429.34151,N,11710.49092,E,0.370,,160514,,,A*66
$GNRMC,093546.00,A,3119.24689,N,11724.84510,E,1.688,42.69,160514,,,A*5C
数据帧说明:
$GPRMC,<UTC时间>,<有效状态>,<纬度>,<纬度半球>,<经度>,<经度半球>,<地面速率>,<地面航向>,<UTC日期>,<磁偏角>,<磁偏角方向>,<模式指示>*<校验和><CR><LF>
<1> UTC时间,hhmmss.sss(时分秒.毫秒)格式
<2> 定位状态,A=有效定位,V=无效定位
<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<4> 纬度半球N(北半球)或S(南半球)
<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<6> 经度半球E(东经)或W(西经)
<7> 地面速率(000.0~999.9节,前面的0也将被传输)
<8> 地面航向(000.0~359.9度,以正北为参考基准,前面的0也将被传输)
<9> UTC日期,ddmmyy(日月年)格式
<10> 磁偏角(000.0~180.0度,前面的0也将被传输)
<11> 磁偏角方向,E(东)或W(西)
<12> 模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
函数运行环境:IAR STM32
函数需求:
/*------------------------------------------------------------------------------------------*-
* 函数名称: GNRMC_ZIP()
* 参 数: Buffer:需要压缩的GNRMC数据,Len:需压缩的GNRMC长度,zipBuffer:压缩后的成果数据
* 返 回: 压缩后的数组长度
* 函数功能: GNRMC数据提取与压缩
*
* 说 明:
*
* 当前版本: V1.0 * 取代版本:
* 作 者: * 修 改:
* 版本信息: 2014-05-22 * 修改信息:
-*-------------------------------------------------------------------------------------------*/
extern uint8_t GNRMC_ZIP(uint8_t const *Buffer, uint8_t Len,uint8_t *zipBuffer);
GNRMC_ZIP函数收到 完整的GNRMC数据后,
如果 <12> 模式指示==A or D or E /*A=自主定位,D=差分,E=估算,N=数据无效)*/ and <2>定位状态==A /*A=有效定位,V=无效定位*/ 进行数据压缩处理,否则不处理返回0;
GNRMC_ZIP函数只对以下4项数据进行提取与压缩
<1> UTC时间,hhmmss.sss(时分秒.毫秒)格式
<3> 纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<5> 经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<7> 地面速率(000.0~999.9节,前面的0也将被传输)
<8> 地面航向(000.0~359.9度,以正北为参考基准,前面的0也将被传输) 可以1.5度一个单位
/*------------------------------------------------------------------------------------------*-
* 函数名称: GNRMC_UNZIP()
* 参 数: Buffer:需要解压缩的GNRMC数据,
Len:需解压缩的GNRMC长度,
unzipBuffer:压缩后的成果数据
ddmmyy:年月日
mode:模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
* 返 回: 压缩后的数组长度
* 函数功能: GNRMC数据提取与压缩
*
* 说 明:
*
* 当前版本: V1.0 * 取代版本:
* 作 者: * 修 改:
* 版本信息: 2014-05-22 * 修改信息:
-*-------------------------------------------------------------------------------------------*/
extern uint8_t GNRMC_UNZIP(uint8_t const *Buffer, uint8_t Len,uint8_t *unzipBuffer,uint8_t *ddmmyy,uint8_t mode);
GNRMC_UNZIP函数收到 压缩的GNRMC数据后,根据参数输出完整的GNRMC数据 |
|