Pyserial readline 在 Python3 中不工作
Py serial readline not working in Python3
我在 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))
错误信息是:
如果 reading.find('GGA') > 0:
类型错误:参数应该是整数或类似字节的对象,而不是 'str'
如何让代码在 Python3
中运行
在python3中字符串类型从字节序列中分离出来。这意味着 'GGA'
是一个字符串文字,而 reading
是一个字节序列。有几种方法可以解决它。
第一的。通过调用 reading = reading.decode()
将 reading
转换为字符串(您需要知道那里的编码)。
第二。使用 'GGA'.encode()
或通过创建字节文字 b'GGA'
.
将文字转换为字节
我在 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))
错误信息是:
如果 reading.find('GGA') > 0: 类型错误:参数应该是整数或类似字节的对象,而不是 'str'
如何让代码在 Python3
中运行在python3中字符串类型从字节序列中分离出来。这意味着 'GGA'
是一个字符串文字,而 reading
是一个字节序列。有几种方法可以解决它。
第一的。通过调用 reading = reading.decode()
将 reading
转换为字符串(您需要知道那里的编码)。
第二。使用 'GGA'.encode()
或通过创建字节文字 b'GGA'
.