首页 > 编程语言 >Python如何获取GPS经纬度信息?

Python如何获取GPS经纬度信息?

时间:2023-09-22 19:00:38浏览次数:42  
标签:经纬度 Python res RMC 字段 print serial 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
  • 这里我们用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)

 

第三步:验证成功!

 

标签:经纬度,Python,res,RMC,字段,print,serial,GPS
From: https://www.cnblogs.com/liqi175/p/17723174.html

相关文章

  • python 生成二维码 插入 excel
    生成二维码defmake_qrcode(data:str,path:str):qr=qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=10,border=4)qr.add_data(data)qr.make(fit=True)img=qr.make_i......
  • nicegui:Python 图形界面库,简单好用
    #前言在现代计算机应用程序开发中,图形用户界面(GUI)是用户与程序交互的重要组成部分。然而,GUI开发往往需要大量的代码和复杂的布局,给开发者带来了一定的挑战。在本篇博文中,将介绍nicegui,它是一个简单易用的图形用户界面库,提供了一种简化GUI开发的方式,使开发者能够更快速地构......
  • Python-day15
    1、动态语言classanimal:defeat(self):print('animalwilleat')classdog(animal):defeat(self):print('dogiseatingbone')classcat(animal):defeat(self):print('catiseatingfish')class......
  • Python functools模块:提升函数式编程的5个常用函数
    Python的functools模块是标准库中的一个强大工具,提供了一系列函数,用于优化和增强函数式编程的能力。这些函数可以帮助我们处理函数、操作装饰器、缓存结果等。介绍functools模块中的五个常用函数,包括 partial、wraps、lru_cache、reduce和compose,并提供相关的代码示例,帮助更好......
  • Python中统计、拷贝等方法的使用
    一、统计方法的使用#coding=utf-8#统计出list中正数和负数的个数list=[1,2,3,-1,-2,-3]#count()函数--统计列表中某个元素出现的次数#print(list.count(2))#len()函数--统计列表长度即列表中的元素总个数#print(len(list))list1=[iforiinlistifi>0]print(l......
  • python mimetext 参数
    Pythonmimetext参数详解在Python3中,使用mimetext模块可以轻松地创建电子邮件消息。在发送电子邮件时,我们需要设置邮件的主题、收件人、发件人、正文和附件等信息。而mimetext模块就是用来处理邮件中的文本和附件的。本文将详细介绍mimetext模块中的参数及其用法。安装步骤pip3......
  • Python——24days
    序列化模块pickle模块hashilb模块(加密)————————————————————————————————————————————————什么是序列化?什么是序列? 序列就是字符串序列化是把其他数据类型转为json字符串的过程什么是反序列化? 把json字符串转为其他数......
  • 实验1:SDN拓扑实践进阶部分(使用python循环语句)
    #!/usr/bin/envpythonfrommininet.topoimportTopoclassMyTopo(Topo): def__init__(self): Topo.__init__(self) #host foriinrange(1,9): self.addHost("h"+str(i)) #switch foriinrange(1,11): self.addSwitch("s&quo......
  • 【Python】递归算法
    定义递归是一种解决问题的有效方法,在递归过程中,函数将自身作为子例程调用。思想函数调用函数本身,直到不能调用为止注意事项基本情况用于保证程序调用及时返回,不在继续递归,保证了程序可终止。递推关系,可将所有其他情况拆分到基本案例。​递推关系​:一个问题的结......
  • python问题汇总
    执行python文件报错:File"E:/ProgramFiles(x86)/PyCharm2021.1/fmz_zp/Python/基础/test.py",line531SyntaxError:Non-UTF-8codestartingwith'\xe4'infileE:/ProgramFiles(x86)/PyCharm2021.1/fmz_zp/Python/基础/test.pyonline531,butnoe......