本文最后更新于:2024年5月17日 晚上

本文记录如何用 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/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

python 解析 GPS 模块数据
https://www.zywvvd.com/notes/coding/python/python-gps/python-gps/
作者
Yiwei Zhang
发布于
2024年5月17日
许可协议