Python如何获取GPS经纬度信息?
需求:
- 来了一个GPS设备: 获取GPS经纬度信息
解决:
- 用serial库
步骤:
第0步:GPS 协议介绍
- 这里简单介绍xxRMC,是推荐最小定位信息。【红色,是要找的字段】
-
$GPRMC
例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息
字段1:UTC时间,hhmmss.sss格式
字段2:状态,A=定位,V=未定位
字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
字段4:纬度N(北纬)或S(南纬)
字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)
字段6:经度E(东经)或W(西经)
字段7:速度,节,Knots
字段8:方位角,度
字段9:UTC日期,DDMMYY格式
字段10:磁偏角,(000 - 180)度(前导位数不足则补0)
字段11:磁偏角方向,E=东W=西
字段16:校验值
-----------------------------------
参考资料: GPS 0183协议GGA、GLL、GSA、GSV、RMC、VTG解释
第一步:插上GPS设备,检查能否正常获取:
- 用cat查看
cat /dev/ttyACM0
# 过滤查看 cat /dev/ttyACM0 | grep RMC
- 这里我们用RMC这个维度来获取。
第二步:编写Python代码利用serial库
-
# pip3 install pyserial # 记得安装 import serial import time ser = serial.Serial('/dev/ttyACM0', baudrate=4800, timeout=1) while True: data = ser.readline() # print(data) if data[0:6] == b'$GNRMC': # RMC数据 msg = data.decode('utf-8') # print(msg) # $GNRMC,095938.00,V,,,,,,,220923,,,N,V*1F res = msg.split(",") if res[2] == "V": print("未定位") # pass else: print("定位到了") # ['3028.84027', 'N', '11424.30721', 'E'] # print(res[3:7]) gps = "".join(res[3:7]) print(gps) time.sleep(0.5)
第三步:验证成功!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!