惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
WordPress大学
WordPress大学
C
Check Point Blog
GbyAI
GbyAI
U
Unit 42
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
J
Java Code Geeks
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Hugging Face - Blog
Hugging Face - Blog
Vercel News
Vercel News
博客园 - 【当耐特】
美团技术团队
小众软件
小众软件
S
SegmentFault 最新的问题
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Cloudflare Blog
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
python 解析 GPS 模块数据
Yiwei Zhang · 2024-05-17 · via 又见苍岚

本文记录如何用 python 接收串口 gps 数据并解析。

需求

  • GPS 北天 PL2303G Chip
  • 驱动安装完成,后需要用 Python 连接获取串口 GPS 信号数据

设备准备

接入设备

将 GPS 模块插入 USB 等接口中,并正确配置驱动程序

获取设备信息

在 Ubuntu 中,插入 USB 的设备会出现在 /dev/tty* 中,首先需要确认该 GPS 设备的设备名称

可以使用几种不同的方法来确定接入的GPS模块是哪个设备:

  1. 列出所有串口: 使用lsusb命令可以列出所有连接到电脑的USB设备,但可能不会直接显示GPS模块的详细信息。如果您知道GPS模块是通过USB连接的,这个命令可以作为一个起点。

    bash

    复制

    1
    lsusb
  2. 使用dmesgdmesg命令可以显示内核相关的日志信息,包括新插入的USB设备。当您插入GPS模块时,运行这个命令可以帮助您找到设备的信息。

    bash

    复制

    1
    dmesg | grep tty
  3. 使用usb-devicesusb-devices命令可以提供关于USB设备的详细信息,包括设备的名字、制造商、型号和串行号。

    bash

    复制

    1
    usb-devices
  4. 查看/dev目录: 在Linux系统中,串口设备通常位于/dev目录下。您可以列出这个目录下的文件,看看是否有新出现的串口设备。

    bash

    复制

    1
    ls -l /dev/tty*

经过一番确认,我的 gps 设备是 /dev/ttyUSB0

开放设备权限

访问设备有时需要较高的权限,为了方便 python 读取,这里做一些权限开放:

1
chmod 666 /dev/ttyUSB0

Python 实现

安装库:

1
2
pip install serial
pip install pynmea2

源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import serial
import pynmea2

# 配置串口参数
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # 请根据您的设备修改串口路径和波特率

# 检查串口是否已打开
if not ser.is_open:
ser.open()

try:
while True:
# 读取串口数据
line = ser.readline().decode('utf-8')
if line.startswith('$GPGGA'):
# 解析NMEA 0183数据
msg = pynmea2.parse(line)

# 提取经纬度
lat = msg.latitude
lon = msg.longitude

# 打印解析后的数据
print(f"经度:{lon}, 纬度:{lat}")

except KeyboardInterrupt:
# 按Ctrl+C时退出程序
print("程序已中断")

finally:
# 关闭串口
ser.close()

msg.latitude 和 msg.longitude 已经包含度分秒信息。

参考资料

文章链接:
https://www.zywvvd.com/notes/coding/python/python-gps/python-gps/