如何解决解析来自 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 举报,一经查实,本站将立刻删除。