微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

解析来自 SIM868 模块的 GPS 坐标

如何解决解析来自 SIM868 模块的 GPS 坐标

嗨,我用这是打印 GPS 数据的代码

import serial
import time
ser = serial.Serial("/dev/ttyUSB0",115200)
W_buff = ["AT+CGNSPWR=1\r\n","AT+CGNSSEQ=\"RMC\"\r\n","AT+CGNSINF\r\n","AT+CGNSURC=2\r\n","AT+CGNSTST=1\r\n"]
ser.write(W_buff[0])
ser.flushinput()
data = ""
num = 0
try:
    while True:
        #print ser.inWaiting()
        while ser.inWaiting() > 0:
            data += ser.read(ser.inWaiting())
        if data != "":
            print data
            if  num < 4:    # the string have ok
                print num
                time.sleep(0.5)
                ser.write(W_buff[num+1])
                num =num +1
            if num == 4:
                time.sleep(0.5)
                ser.write(W_buff[4])
            data = ""
except keyboardInterrupt:
    if ser != None:
        ser.close()

[在此处输入图片说明][1]

无论如何它给了我上面的数据,你可以看到我用红色突出显示,我试图只得到其中的两个然后我使用下面的代码提取坐标,但它给了我相同的输出作为附加图像而不是坐标

from gps import *
import time,inspect
gpsd = gps(mode=WATCH_ENABLE|WATCH_NEWSTYLE)
try:
    while True:
        report = gpsd.next()
        if report['class'] == 'TPV':
            GPStime =  str(getattr(report,'time',''))
            lat = str(getattr(report,'lat',0.0))
            lon = str(getattr(report,'lon',0.0))
            speed =  str(getattr(report,'speed','nan'))
            sats = str(len(gpsd.satellites))
            print  GPStime,"\t",print  lat,print  lon,print  speed,print  sats,"\t"
            time.sleep(2)
except (KeyboardInterrupt,SystemExit): 
    print "Done.\nExiting."
    f.close() 

当这不起作用时,我尝试了以下代码,试图将它们转换为 python 数组,但出现错误 UnicodeDecodeError: 'utf8' codec can't decode byte 0xa1 in position 0: invalid start byte

import io
import pynmea2
import serial
#ser.write("AT+CGNSPWR=1")
ser = serial.Serial('/dev/ttyUSB0',9600,timeout=2.0)
sio = io.TextIOWrapper(io.BufferedRWPair(ser,ser),newline=None)
ser.write("AT+CGNSPWR=1")
while 1:
    try:
        line = sio.readline()
        msg = pynmea2.parse(line)
        print(repr(msg))
    except serial.SerialException as e:
        print('Device error: {}'.format(e))
        break
    except pynmea2.ParseError as e:
        print('Parse error: {}'.format(e))
        continue

我怎样才能在这里提取坐标? [1]:https://i.stack.imgur.com/FDGQO.png

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。