我在Python 2.7中使用以下代码:
import serial, io
import pynmea2
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
while True:
reading = ser.readline()
if reading.find('GGA') > 0:
msg = pynmea2.parse(reading)
print "Lat: %s " % (msg.lat)
但是这里的相同代码在Python3中不起作用:
import serial, io
import pynmea2
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
while True:
reading = ser.readline()
if reading.find('GGA') > 0:
msg = pynmea2.parse(reading)
print("Lat: %s " % (msg.lat))
错误消息是:
如果read.find('GGA')> 0:TypeError:参数应为整数或类似字节的对象,而不是'str'
如何使代码在Python3中工作
在python 3中,字符串类型与字节序列分开。这意味着'GGA'
是字符串文字,而reading
是字节序列。有几种解决方法。第一。通过调用reading
将reading = reading.decode()
转换为字符串(您需要知道哪种编码)。第二。使用'GGA'.encode()
或通过创建字节文字b'GGA'
将文字转换为字节。