Py serial readline在Python3中不起作用
Posted
技术标签:
【中文标题】Py serial readline在Python3中不起作用【英文标题】:Py serial readline not working in Python3 【发布时间】:2019-09-29 05:21:30 【问题描述】:我在 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))
错误信息是:
如果读数.find('GGA') > 0: TypeError: 参数应该是整数或类似字节的对象,而不是 'str'
如何让代码在 Python3 中工作
【问题讨论】:
【参考方案1】:在 python 3 中,字符串类型与字节序列分离。这意味着'GGA'
是一个字符串文字,而reading
是一个字节序列。有几种方法可以解决它。
第一的。通过调用reading = reading.decode()
将reading
转换为字符串(您需要知道那里的编码)。
第二。使用'GGA'.encode()
或通过创建字节文字b'GGA'
将您的文字转换为字节。
【讨论】:
@user3141181 如果这回答了您的问题,请将其标记为解决方案。以上是关于Py serial readline在Python3中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
serial.Serial.readline() 引发 SerialException,但同样的代码在一周前工作
在主循环中使用 serial.readline() 清空文件
使用 Python 通过 Serial 读取不固定数量的字节
java运行python程序,.readLine()读出的内容为null, proc.waitFor();返回值为1,求解