NMEA-0183协议介绍以及常见报文解析

2024-03-12 04:44

本文主要是介绍NMEA-0183协议介绍以及常见报文解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

NMEA 协议是一种用于海上和航空领域的数据通信协议。它的全称是 National Marine Electronics Association (美国国家海洋电子协会),是一种标准化的数据格式,用于传输位置、速度、时间等信息。在船舶导航和 GPS 接收器中经常使用 NMEA 协议来实现设备之间的数据交换和通信。NMEA 协议最常见的是 0183 版本,除此还有其他版本:

1. NMEA 0183: 这是最常见和广泛使用的NMEA协议版本,定义了一系列标准数据格式,用于在不同海洋电子设备之间进行数据交换,如GPS接收器、雷达、自动驾驶系统等。2. NMEA 2000: 这是 NMEA 协议的更新版本,也称为 NMEA 2000,采用基于控制器局域网(CAN)的通信协议,提供更高的数据传输速度和更好的可靠性,用于连接船舶上的各种电子设备。3. NMEA 0183 HS: 这是NMEA 0183协议的高速版本,用于支持更快的数据传输速度,适用于需要更高精度和更快更新率的应用。

本文主讲 NMEA 0183 版本,0183协议有多个版本包括 V1.0、V1.5、V2.0、V3.0 和最新的 V4.11 ,等等,协议向前兼容。

由于未找到 4.11 版本,本文主要讲 4.10 版本,协议结构来源参考英文原版《NMEA 0183-Standard for Interfacing Marine Electronic Devices(June 2012 VERSION 4.10)》。

本文主要介绍整体的协议结构组成和常见的 NMEA 报文,NMEA 还包含了其他大量的报文格式,但相对都少用,有兴趣的可以去看原版协议。

帧格式和分类

协议帧说明

$aaccc ,ddd ,ddd ,...... ,ddd*hh<CR><LF>1、“$”——帧命令起始位
2、aaccc——地址域,前两位为识别符,后三位为语句名
3、ddd...ddd——数据
4、“*”——校验和前缀
5、hh——校验和(check sum),$与*之间所有字符ASCII码的校验和(各字节做异或运算,得到校验和后,在转换16进制格式的ASCII字符。)
6<CR><LF>——CR(Carriage  Return)+ LF (Line Feed)帧结束,回车换行。

NMEA 协议可以分为通用语句专用语句

分类-通用语句

通用语句包括:GGA、RMC、GSV、GSA、VTG、GLL、ZDA 、TXT 等,GPS 系统还含有一些未在此列出的其它信号,这里不多做列举。

通用语句还需要加上所使用的定位系统前缀,具体如下表:

GNSS 系统GNSS系统发送器标识(NMEA3.01)GNSS系统发送器标识(V4.1)
GalileoGAGA
BeiDouBDGB
GPSGPGP
QZSSGPGQ
NAVICIRGI
GLONASSGLGL
Combination of Multiple Satellite SystemsGNGN

分类-专用语句

专用语句是各个接收机生产商自定义的语句,以$P开头,如$PSTM、$PMTK、$PQ等。

$PMTK104*37 	
$PQEPE,W,1,1*2A

本文只介绍通用的语句,下面对几个常见的语句进行解析介绍。

GGA-GPS定位信息

GGA(Global Positioning System Fix Data)GPS 定位信息,格式如下:

$XXGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*hh<CR><LF>
<1> UTC 时间,hhmmss(时分秒)格式,和北京时间差 8 个小时。
<2> 纬度 ddmm. mmmm(度分)格式(前面的 0 也将被传输)
<3> 纬度半球 N(北半球)或 S(南半球)
<4> 经度 dddmm. mmmm(度分)格式(前面的 0 也将被传输)
<5> 经度半球 E(东经)或 W(西经)
<6> GPS 状态:0=未定位,1=单点定位,2=SBAS 差分定位,4=RTK 固定解,5=RTK 浮点解,6=惯导定位,7=手动输入模式,8=模拟模式
<7> 正在使用解算位置的卫星数量(00~12)(前面的 0 也将被传输)
<8> HDOP 水平精度因子(0.5~99.9<9> 海拔高度(-9999.9~99999.9)M :单位,米
<10> 地球椭球面相对大地水准面的高度M :单位,米
<11> 差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
<12> 差分站 ID 号 0000~1023(前面的 0 也将被传输,如果不是差分定位将为空)

例子:

$GPGGA,1661229.478,3723.2475,N,12158.3416,W,1,07,1.0,9.0,M,7.3,M,,0000*18

RMC-推荐定位信息

RMC(Recommended Minimum Specific GNSS Data)推荐定位信息,4.10 相比 3.0增加<13>导航状态标识字段,具体格式如下:

// 3.0
$XXRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
// 4.1
$XXRMC,<1>,<2>,<3>,<4

这篇关于NMEA-0183协议介绍以及常见报文解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/800170

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1