ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

经典-python串口读取gps

2021-08-23 19:03:12  阅读:381  来源: 互联网

标签:jingdu python List weidu GETSTR GPRMC 串口 print gps


 

 

1使用ucenter设置gps输出

默认gps  9600  或者115200

 

 选择串口链接

 

 

2 设置波特率

 

 

 

 send之后重新连接gps模块,波特率修改成115200,send只是当前有效,断电恢复原来的.

 

 

3 修改GPS输出频率

 

 

 断电生效,保存在gps的内存里

 

 

 

 

4修改gps输出帧

 

 默认输出很多帧

有关于卫星信号质量的帧

有定位信息帧

有速度帧

其中包含gps的最全的是,但是没有关于卫星是否有效的信息

黑色的是正在输出,灰色的是没有输出

 

 

 

设置某些帧输出信息

 

 

 

 

 断电参数保存

 

 

另外一个GxRMC帧包含了

 

 

针对帧h解析 代码

# -*- coding: utf-8 -*
 
 
#  117.410465,31.768830
 

# 使用前先使用u-center设置GPS输出,去掉多余的输出
# GxGAA 有海拔高度
# GX


import os
import time
import serial
import serial.tools.list_ports
  
os.system('cls')
serial_portlist = list(serial.tools.list_ports.comports())
if len(serial_portlist) <= 0 :
    print('未发现可用串口')
else :
    for i in range (len(serial_portlist)):
        print(serial_portlist[i])
    #port_gps = '/dev/ttyUSB'+input('请输入GPS模块所在串口:')
    port_gps = 'COM'+input('请输入GPS模块所在串口:')
    
    ser = serial.Serial(port_gps,115200,timeout = 2)
  
    #----------------------------------------------
  
    os.system('cls')
    init = 3
    while True :
        if ser.in_waiting > 0 :
            '''
            time.sleep(0.6)#请在0.4-0.8范围内调试修改
            #过低数据不完整,过高数据被覆盖!
            os.system('cls')
            GETBYTES = ser.read(ser.in_waiting)
  
            if init :#跳过前三次数据
                print('稳定串口接收中 %d'%init)
                init = init - 1
                continue
  
            GETSTR = GETBYTES.decode()
            print('原始数据:')
            print(GETSTR) #检查接收情况
  
            #-------------------------------------
            
            GETSTR_List = GETSTR.split('\n')
            #print('共接收 %d 行数据'%len(GETSTR_List)) #检查换行分割情况  8
            '''

            line = str(ser.readline().decode("utf-8"))
            
            GETSTR_List=[]

            
            GETSTR_List.append(line)
            
            GPRMC_List = GETSTR_List[0].split(',')
            #print('$GPRMC 有 %d 个字段'%len(GPRMC_List)) #检查','分割情况   13
  
            if len(GPRMC_List)!=13:
                print('数据不完整')
                continue#检查数据完整度
            #------------------------------------------------
            print('')
            if GPRMC_List[2] == 'V' :
                print('当前卫星定位无效')

                
            elif GPRMC_List[2] == 'A' :
                print('定位正常')
                print(GETSTR_List[0])
                print('')
  
                #--------------------------------------------
                  
                UTC = GPRMC_List[1][0:2] + ':' + GPRMC_List[1][2:4] + ':' + GPRMC_List[1][4:6]
                UTC = UTC +' '+ GPRMC_List[9][0:2] + '/' + GPRMC_List[9][2:4] + '/20' + GPRMC_List[9][4:6]
                print('卫星UTC时间:'+UTC)
                  
                #---------------------------------------------
  
                weidu_xy = int(GPRMC_List[3][0:2])+float(GPRMC_List[3][2:11])/60
                jingdu_xy = int(GPRMC_List[5][0:3])+float(GPRMC_List[5][3:12])/60
                  
                #---------------------------------------------
  
                weidu_du = int(GPRMC_List[3][0:2])
                weidu_fen = int(GPRMC_List[3][2:4])
                weidu_miao = float('0'+GPRMC_List[3][4:11])*60
                weidu = '%d°%d\'%.3f\"'%(weidu_du,weidu_fen,weidu_miao)
                print('')
                print('纬度:')
                print('%.6f'%weidu_xy)
                print(weidu)
                #----------------------------------------------
  
                jingdu_du = int(GPRMC_List[5][0:3])
                jingdu_fen = int(GPRMC_List[5][3:5])
                jingdu_miao = float('0'+GPRMC_List[5][5:12])*60
                jingdu = '%d°%d\'%.3f\"'%(jingdu_du,jingdu_fen,jingdu_miao)
                print('')
                print('经度:')
                print('%.6f'%jingdu_xy)
                print(jingdu)
                print('')
  
            else :
                print('数据有误,等待刷新')

  

 

标签:jingdu,python,List,weidu,GETSTR,GPRMC,串口,print,gps
来源: https://www.cnblogs.com/gooutlook/p/15177300.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有