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 信息,对其进行解析,并输出。

相关推荐

#include <TinyGPSPlus.h> /* This sample sketch should be the first you try out when you are testing a TinyGPSPlus (TinyGPSPlus) installation. In normal use, you feed TinyGPSPlus objects characters from a serial NMEA GPS device, but this example uses static strings for simplicity. */ // A sample NMEA stream. const char *gpsStream = "$GPRMC,045103.000,A,3014.1984,N,09749.2872,W,0.67,161.46,030913,,,A*7C\r\n" "$GPGGA,045104.000,3014.1985,N,09749.2873,W,1,09,1.2,211.6,M,-22.5,M,,0000*62\r\n" "$GPRMC,045200.000,A,3014.3820,N,09748.9514,W,36.88,65.02,030913,,,A*77\r\n" "$GPGGA,045201.000,3014.3864,N,09748.9411,W,1,10,1.2,200.8,M,-22.5,M,,0000*6C\r\n" "$GPRMC,045251.000,A,3014.4275,N,09749.0626,W,0.51,217.94,030913,,,A*7D\r\n" "$GPGGA,045252.000,3014.4273,N,09749.0628,W,1,09,1.3,206.9,M,-22.5,M,,0000*6F\r\n"; // The TinyGPSPlus object TinyGPSPlus gps; void setup() { Serial.begin(115200); Serial.println(F("BasicExample.ino")); Serial.println(F("Basic demonstration of TinyGPSPlus (no device needed)")); Serial.print(F("Testing TinyGPSPlus library v. ")); Serial.println(TinyGPSPlus::libraryVersion()); Serial.println(F("by Mikal Hart")); Serial.println(); while (*gpsStream) if (gps.encode(*gpsStream++)) displayInfo(); Serial.println(); Serial.println(F("Done.")); } void loop() { } void displayInfo() { Serial.print(F("Location: ")); if (gps.location.isValid()) { Serial.print(gps.location.lat(), 6); Serial.print(F(",")); Serial.print(gps.location.lng(), 6); } else { Serial.print(F("INVALID")); } Serial.print(F(" Date/Time: ")); if (gps.date.isValid()) { Serial.print(gps.date.month()); Serial.print(F("/")); Serial.print(gps.date.day()); Serial.print(F("/")); Serial.print(gps.date.year()); } else { Serial.print(F("INVALID")); } Serial.print(F(" ")); if (gps.time.isValid()) { if (gps.time.hour() < 10) Serial.print(F("0")); Serial.print(gps.time.hour()); Serial.print(F(":")); if (gps.time.minute() < 10) Serial.print(F("0")); Serial.print(gps.time.minute()); Serial.print(F(":")); if (gps.time.second() < 10) Serial.print(F("0")); Serial.print(gps.time.second()); Serial.print(F(".")); if (gps.time.centisecond() < 10) Serial.print(F("0")); Serial.print(gps.time.centisecond()); } else { Serial.print(F("INVALID")); } Serial.println(); }给以上代码写中文注释

最新推荐

recommend-type

GPS数据协议NMEA0183.pdf

GSP数据协议NMEA0183格式说明,需要可自行查阅、对照,例如$GPGGA,$GPGSA,$GPGLL,$GPVTG,$GPRMC等
recommend-type

GPS数据接收与提取流程图

GPS数据接收与提取流程图 GPS QT设计 最佳路径计算 电子地图绘制
recommend-type

GPS数据格式 NMEA-0183协议

GPS上电后,每隔一定的时间就会返回一定格式的数据,数据格式为: $信息类型,x,x,x,x,x,x,x,x,x,x,x,x,x 每行开头的字符都是‘$’,接着是信息类型,后面是数据,以逗号分隔开。一行完整的数据如下: ...
recommend-type

微信小程序-番茄时钟源码

微信小程序番茄时钟的源码,支持进一步的修改。番茄钟,指的是把工作任务分解成半小时左右,集中精力工作25分钟后休息5分钟,如此视作种一个“番茄”,而“番茄工作法”的流程能使下一个30分钟更有动力。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依