经典-python串口读取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