GPS NMEA-0183 协议

一文读懂 GPS NMEA-0183 协议 - 知乎

GPRMC

Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐定位信息

 $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh

各字段描述如下:

  • <1> UTC 时间,格式 hhmmss.ssss,代表时分秒.毫秒
  • <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.0 版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
  • 最后两个字节是校验和

商品详情

SR1612Z2中科微AT6558R芯片GPS北斗双模高精授时测速导航定位模块

使用python接受串口数据

# 使用python串口库 接受串口数据import serial
from time import sleepdef recv(serial):while True:data = serial.read_all().decode()  # strif data == '':continueelse:breaksleep(0.02)return dataif __name__ == '__main__':serial = serial.Serial('COM16', 115200, timeout=0.5)if serial.isOpen():print("serial open success")else:print("serial open failed")while True:data = recv(serial)print(data)  # str

=============================python+json========================

# -*- coding: utf-8 -*-
"""
Created on Thu Aug  5 08:43:36 2021@author: huangcw
"""import serial
import time
import json
from datetime import datetime
import threadingclass SerialPort:def __init__(self, port, buand):self.data_bytes=bytearray()self.is_exit = Falseself.port = serial.Serial(port, buand)self.port.close()if not self.port.isOpen():self.port.open()def port_open(self):if not self.port.isOpen():self.port.open()def port_close(self):self.port.close()def send_data(self):self.port.write('')def read_data(self):"""从串口读取数据,并放到缓冲区中"""while not self.is_exit:count = self.port.inWaiting()if count > 0:rec_str = self.port.read(count)self.data_bytes=self.data_bytes+rec_strdef frame_process(self):"""提取json格式数据,若收到的数据中包含完整的json数据,每调用一次返回一条json数据。注意:仅支持一层 { }的json数据格式。"""self.head = -1self.tail = -1self.head = self.data_bytes.find(b'{')self.tail = self.data_bytes.find(b'}')if(self.head != -1):  #有json的头if(self.tail != -1):    #有尾if(self.tail < self.head):  #尾靠前,说明前面不是一个完整的报文,需要扔掉self.data_bytes[0:self.tail+1]=b''return -2if(self.tail > self.head): # 有头有尾,且头在尾前面self.rtn = self.data_bytes[self.head:self.tail+1]self.data_bytes[self.head:self.tail+1]=b''return self.rtn# 有头没有尾,说明还没有接收完一帧,不处理else:return -1# 没头,说明没接收到一帧,不处理else:return -1serialPort = 'COM13'  # 串口
baudRate = 115200  # 波特率if __name__ == '__main__':#打开串口mSerial = SerialPort(serialPort, baudRate)#开始数据读取线程t1 = threading.Thread(target=mSerial.read_data)t1.setDaemon(True)t1.start()frame_cnt = 0frame_error_cnt = 0try:while True:rtn = mSerial.frame_process()if rtn != -1 and rtn != -2:frame_cnt = frame_cnt + 1print("正确帧:{}  错误帧:{} 新数据:{}".format(frame_cnt,frame_error_cnt,rtn))elif rtn == -2:frame_error_cnt = frame_error_cnt +1except KeyboardInterrupt:if mSerial.port_open():mSerial.port_close()

# 参考了 Python接收串口数据 程序-CSDN博客

# 参考了 【python】python接收串口json格式数据并解析-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/200.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中可变个数形参的方法:初学者易懂的指南

Java中可变个数形参的方法&#xff1a;初学者易懂的指南 在Java编程中&#xff0c;可变个数形参&#xff08;Varargs&#xff0c;即variable number of arguments&#xff09;是一个非常实用的特性。它允许我们在定义方法时&#xff0c;指定一个参数可以接受任意数量的值。这对…

Java 合并两个相同的List集合多种方法解析

Java 合并两个相同的List集合多种方法解析 引言1. 使用addAll()方法方法说明 2. 使用concat()方法&#xff08;Java 8及以上版本&#xff09;3. 使用CopyOnWriteArrayList类&#xff08;线程安全场景&#xff09;4. 使用Collections.union()静态方法 引言 在Java编程中&#xf…

基于知识图谱的大学生就业能力评价和职位推荐系统——超详细要点总结(创作不易,还请点赞)

1. 职位节点&#xff08;Position&#xff09;&#xff1a; 软件工程师 数据科学家 系统架构师 网络安全专家 人工智能工程师 嵌入式系统工程师 物联网工程师 大数据工程师 前端/后端开发工程师 云计算工程师 区块链工程师 自然语言处理专家 软件测试工程师 人机交…

使用自己训练好的模型YOLOv8进行X-AnyLabeling自动标注

目录 1. 下载项目2. 创建环境3. 运行程序3.1 自行下载和添加官方模型3.2 使用自己训练好的模型标注自己的数据集 本机环境&#xff1a;win 10&#xff0c; GPU 1. 下载项目 git clone https://github.com/CVHub520/X-AnyLabeling.git2. 创建环境 仔细查看项目的README文件 …

游游的you矩阵

题目&#xff1a; 游游拿到了一个字符矩阵&#xff0c;她想知道有多少个三角形满足以下条件&#xff1a; 三角形的三个顶点分别是 y、o、u 字符。三角形为直角三角形&#xff0c;且两个直角边一个为水平、另一个为垂直。 输入描述&#xff1a; 第一行输入两个正整数n,m&#…

reduce用法

//实现一个repeat方法&#xff0c;要求如下&#xff1a; // 需要实现的函数 // const repeatFunc repeat(console.log, 4, 3000); // repeatFunc(“hello world”); //会输出4次 hello world, 每次间隔3秒 //利用map实现 function repeat(func, times, wait) { // 补全 re…

CSS简单的选择器

标签选择器 与网页元素同名的选择器。常用于与设置网页默认效果&#xff0c;或者统一常用元素的基本样式。 p{font-size&#xff1a;10px&#xff1b; }类选择器 可以为网页对象定义不同的样式&#xff0c;实现不同元素拥有相同的样式&#xff0c;相同元素的不同对象拥有不同…

Root mapping definition has unsupported parameters: [all : {analyzer=ik_max_wor

你们好&#xff0c;我是金金金。 场景 我正在使用Springboot整合elasticsearch&#xff0c;在创建索引(分词器) 运行报错&#xff0c;如下 排查 排查之前我先贴一下代码 import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; // 注意这个包SpringBootTe…

文字转语音工具:GPT-SoVITS

诸神缄默不语-个人CSDN博文目录 OpenAI官方的TTS模型我在这篇博文中给出了使用教程&#xff1a;ChatGPT 3.5 API的调用不全指南&#xff08;持续更新ing…&#xff09; - 知乎 但是OpenAI的TTS对中文支持不好&#xff0c;有一种老外说中文的美&#xff0c;所以本文介绍另一个…

windows@允许挂载http链接@挂载局域网http链接

文章目录 资源管理器挂载网络驱动器&#x1f47a;允许http链接映射为磁盘驱动器&#x1f60a;可选更改:文件大小限制 刷新使配置生效重启webclient服务 基本操作执行映射取消映射 资源管理器挂载网络驱动器&#x1f47a; 对于共享文件夹(smb)协议(\\server\sharefolder)类型的…

自己的事情自己做:使用 Python Turtle 绘制 Python Logo

以下代码中&#xff0c;将向你展示一个有趣的程序&#xff0c;如何使用 Python Turtle 中绘制 Python Logo。Python 翻译成汉语是蟒蛇的意思&#xff0c;Python 的 Logo 也是两条缠绕在一起的蟒蛇。 import turtlepen turtle.Turtle() turtle.bgcolor("black") pe…

ins视频批量下载,instagram批量爬取视频信息【爬虫实战课1】

简介 Instagram 是目前最热门的社交媒体平台之一,拥有大量优质的视频内容。但是要逐一下载这些视频往往非常耗时。在这篇文章中,我们将介绍如何使用 Python 编写一个脚本,来实现 Instagram 视频的批量下载和信息爬取。 我们使用selenium获取目标用户的 HTML 源代码,并将其保存…

Python路面车道线识别偏离预警

程序示例精选 Python路面车道线识别偏离预警 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《Python路面车道线识别偏离预警》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易…

AOP动态修改注解值及异步子线程请求头丢失问题

1、动态注入参数&#xff1a;通过AOP注解占位符&#xff0c;匹配目标方法参数&#xff0c;可用于日志记录等场景 AOP 注解动态注入参数 - 简书 2、spel表达式匹配目标方法的参数进行动态入参 自定义注解动态入参绑定_注解参数值动态注入-CSDN博客 3、Java没有提供直接设置线…

Leetcode 225:用队列实现栈

请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int to…

tsconfig.json文件常用配置

最近在学ts&#xff0c;因为tsconfig的配置实在太多啦&#xff0c;所以写此文章用作记录&#xff0c;也作分享 作用&#xff1f; tsconfig.jsono是ts编译器的配置文件&#xff0c;ts编译器可以根据它的信息来对代码进行编译 初始化一个tsconfig文件 tsc -init配置参数解释 …

测试 rtpengine 的 sip-source 参数

修改 /etc/rtpengine/rtpengine.conf 文件&#xff0c;增加一行配置&#xff1a; sip-source true # 一般不需要这样配置&#xff0c;本文仅为说明问题 offfer 部分的日志如下&#xff1a; [1713246486.390578] DEBUG: [1-5025192.168.43.126]: [control] Dump for offer from…

HZNUCTF第五届校赛实践赛初赛 Web方向 WriteUp

ezssti 很简单的ssti 源码给了&#xff0c;调用Eval即可执行命令 package mainimport ("fmt""net/http""os/exec""strings""text/template" )type User struct {Id intName stringPasswd string }func (u User) Ev…

Python学习从0开始——项目一day01爬虫

Python学习从0开始——项目一day01爬虫 一、导入代码二、使用的核心库三、功能测试3.1初始代码3.2新建文件3.3代码调试 四、页面元素解析4.1网页4.2修改代码4.3子页面4.4修改代码 一、导入代码 在Inscode新建一个python类型的项目&#xff0c;然后打开终端&#xff0c;粘贴以下…

WINFORM画笔实现画板(如何实现橡皮擦和清空画板功能)

C#内部并没有提供橡皮擦功能所以&#xff0c;只能使用画笔和颜色填充来实现橡皮擦和清空画板功能。 此次小编写了一个简易的画板功能其中包含橡皮擦&#xff0c;清空面板&#xff0c;在窗体运行中修改画笔颜色和像素等功能。 代码如下: using Sunny.UI; using Sunny.UI.Win32…