EC20 GPS RMC格式数据转化
文章目录
目录
前言
一、RMC是什么?
二、EC20 输出的RMC解析
1.EC20返回的RMC报文
2.RMC报文解析
3.NMEA数据ddmm.mmmm转换成dd.ddddd
4.RMC UTC时间转化成北京时间
总结
前言
在调试EC20 4G模块的定位功能时,对输出的RMC格式的坐标信息产生了疑惑。带着疑问,在网上查找了资料,总算是解开了心中的疑问。
一、RMC是什么?
从百度百科上获知,RMC全称推荐定位信息(GPRMC)。
基本的格式如下:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
<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=数据无效)
*后hh为$到*所有字符的异或和
二、EC20 输出的RMC解析
1.EC20返回的RMC报文
$GPRMC, 150101.00, A,3438.162431, E,11224. 500999, E, 0.0, 208. 4, 050520,3.9, W, A*22
2.RMC报文解析
由RMC的报文定义所知
1)定位的时间格式为hhmmss.sss(时分秒.毫秒),当前报文的时间为150101.00,即15:01:01。这个时间为UTC时间,和我们的时区北京时间相差了8小时,所以换成北京时间小时要加上8,即北京时间为23:01:01.。
2)定位状态:A,有效。
3)纬度ddmm.mmmm,由格式可以看出,维度的度分模式小数点后面只有4个小数,而返回的报文里面有6位小数,这是怎么一回事呢。其实也是一样的,只不过GPS输出的格式变成了ddmm.mmmmmm,当前报文的数据为3438.162431。
4)纬度半球N。
5)经度dddmm.mmmm,和维度同理,GPS输出的格式dddmm.mmmmmm,当前报文的数据为11224. 500999。
6)经度半球E。
7)地面速率0节。
8)地面航向208. 4°。
9)UTC日期:20年5月5日,转换成北京日期要配合上面的UTC时间进行加减。
10)磁偏角3.9度。
11)磁偏角方向:W(西)。
12) 模式指示A=自主定位。
3.NMEA数据ddmm.mmmm转换成dd.ddddd
实际如果想要在百度地图或Google地图中显示,需要将ddmm.mmmm转换成dd.ddddd经纬度格式
转化公式为:dd.ddddd = dd + mm.mmmm/60。
4.RMC UTC时间转化成北京时间
最后附上UTC转成北京时间C语言代码
typedef struct rdss21Data_t
{uint8_t seconds;uint8_t minutes;uint8_t hours;uint8_t day;uint8_t month;uint8_t year;
}rdss21Data;void UTCToBeijing(rdss21Data* time)
{uint8_t days = 0;if (time->month == 1 || time->month == 3 || time->month == 5 || time->month == 7 || time->month == 8 || time->month == 10 || time->month == 12){days = 31;}else if (time->month == 4 || time->month == 6 || time->month == 9 || time->month == 11){days = 30;}else if (time->month == 2){if ((time->year % 400 == 0) || ((time->year % 4 == 0) && (time->year % 100 != 0))) /* 判断平年还是闰年 */{days = 29;}else{days = 28;}}time->hours += 8; /* 北京时间比格林威治时间快8小时 */if (time->hours >= 24) /* 跨天 */{time->hours -= 24;time->day++;if (time->day > days) /* 跨月 */{time->day = 1;time->month++;if (time->month > 12) /* 跨年 */{time->year++;}}}
}
总结
RMC格式只要明白具体格式的含义,解析起来并不困难,注意UTC时间转化和经纬度的转化即可。
参考资料:
https://blog.csdn.net/qingfengxd1/article/details/105946479
http://blog.sina.com.cn/s/blog_6b2252130102wc0h.html
https://www.cnblogs.com/sekon/p/4609258.html
http://wiki.waaax.top/index.php?title=EC20Demo
EC20 GPS RMC格式数据转化相关推荐
- GPS(rinex格式)数据解析详细解读
RINEX格式现如今已成为GPS测量应用中的标准数据格式,目前应用最为广泛.最普遍的是RINEX格式的第2个版本,该版本能够用于包括静态和动态GPS测量在内的不同观测模式数据.在该版本中定义了6种不同 ...
- 关于通过前端xslx解析excel日期格式数据转化问题以及自定义时间格式YYYY-MM-DD转化
如果excel中内容如下,需要解析时间格式的内容 XLSX.read会默认解析为天数的时间戳字符串(从1900年算起到当前日期的天数) 如果想让xlsx帮我们解析时,就完成解析时间格式,只需要加上如下 ...
- Pandas使用to_dict函数将dataframe转化为字典(dict)格式数据并指定orientation参数生成不同形式的字典
Pandas使用to_dict函数将dataframe转化为字典(dict)格式数据并指定orientation参数生成不同形式的字典 目录
- pandas使用strftime函数将dataframe的日期格式数据列按照指定格式(format)转化为日期(时间)字符串数据列
pandas使用strftime函数将dataframe的日期格式数据列按照指定格式(format)转化为日期(时间)字符串数据列 目录
- GPS NMEA-0183标准数据介绍
http://blog.sina.com.cn/s/blog_490bf1700102uw9r.html GPS数据遵循NMEA-0183协议,该数据标准是由NMEA(National Marine ...
- java json数据输出,java服务器端输出JSON格式数据
java服务器端输出JSON格式数据 本文我们讨论如何在服务器端输出 JSON 格式的数据.以 Java 为例,我们将演示将一个 Java 对象编码为 JSON 格式的文本. 将 String 对象编 ...
- JSON格式数据与数据组件
1.将JSON格式数据转化为wex5data数据组件中的数据,且数据列数不必一 一对应,但转化的列数据的列名与数据表字段相同. Model.prototype.goodsDataCustomRefre ...
- php json 默认值,php操作JSON格式数据的实现代码
知识点: 1.JSON数据格式介绍 2.对数据编码成JSON格式 3.对JSON数据进行解码,并操作 JSON数据格式表示方式如下: { "programmers": [ { &q ...
- Python数据处理(一):处理 JSON、XML、CSV 三种格式数据
Python 数据处理系列博客来啦! 本系列将以<Python数据处理>这本书为基础,以书中每章一篇博客的形式带大家一起学习 Python 数据处理.书中有些地方讲的不太详细,我会查阅其他 ...
最新文章
- python 数字循环
- get 和 post
- poj1201(差分约束+SPFA)
- 敏捷项目管理工具实践
- 避免在Swift Struct中使用闭包
- (转)Django ==== 实战学习篇五 模板系统说明
- Linux - 网络相关指令
- oracle,导入,导出数据
- 中国系统集成商名单大全
- 使用 C# 9 的records作为强类型ID - 路由和查询参数
- 【开源】OSharpNS,轻量级.net core快速开发框架发布
- listrecord根据某个属性去重_去哪网开发实战记录(9):城市选择页(中)
- flutter输入框TextField中文本textAlign对齐分析篇
- Python直接调用C库的printf()函数打印一条消息
- 清华硕士分享思维导图:机器学习所需的数学基础
- Spark SQL从入门到精通
- mysql年龄数据类型_MySql 数据类型
- “变速齿轮”研究手记
- 坚果云 我的电脑图标_坚果云使用教程
- Phoenix错误信息: Malformed connection url
热门文章
- 峰值检测电路和精密整流电路
- 北斗定位,定位追踪,防盗追踪系统设计方案
- PAT 乙级 1033 旧键盘打字 python
- ubuntu teamviewer
- 并发编程知识总结,软件开发架构,socket套接字模板,粘包问题,struct解决粘包问题,上传大文件数据,socketserver,关于操作系统的发展史,进程,线程。...
- 惠普笔记本U盘重装系统教程(转载)
- 世嘉VR虚拟乐园即将开业,位于二次元天堂秋叶原
- go gorm获取数据库报错:goexit: BYTE $0x90 // NOP
- 数据分析:大数据时代的必备技能之Power BI
- 链路不通或服务器没响应,连不通服务器服务怎么办(理论篇)