python 解析 GPS 模块数据

2024-05-18 09:32:38 浏览数 (2)

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

需求

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

设备准备

接入设备

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

获取设备信息

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

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

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

bash

复制

1

lsusb

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

bash

复制

1

dmesg | grep tty

使用**usb-devices**: usb-devices命令可以提供关于USB设备的详细信息,包括设备的名字、制造商、型号和串行号。

bash

复制

1

usb-devices

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

bash

复制

1

ls -l /dev/tty*

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

开放设备权限

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

1

chmod 666 /dev/ttyUSB0

Python 实现

安装库:

12

pip install serialpip install pynmea2

源码:

123456789101112131415161718192021222324252627282930313233

import serialimport 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://blog.csdn.net/dz221100/article/details/125447518

文章链接: https://cloud.tencent.com/developer/article/2418522

0 人点赞