ser.read() 有效,但 ser.readLine() 抛出错误
Posted
技术标签:
【中文标题】ser.read() 有效,但 ser.readLine() 抛出错误【英文标题】:ser.read() works, but ser.readLine() throws error 【发布时间】:2018-01-16 05:34:33 【问题描述】:我正在尝试使用 Python 从 Arduino 读取串行值。
>>> ser.read()
'2'
>>> a = ser.readLine()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Serial' object has no attribute 'readLine'
为什么 readLine 会出错,而 read() 不会?还是阅读(10)?
我正在使用的完整代码:
>>> import serial
>>> ser = serial.Serial('/dev/tty.usbmodem1411', 9600, timeout=10)
>>> ser.read()
'\n'
>>> ser.readLine()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Serial' object has no attribute 'readLine'
>>> ser.read()
'2'
>>> ser.readLine()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Serial' object has no attribute 'readLine'
【问题讨论】:
AttributeError: 'Serial' object has no attribute 'readLine'
暗示readLine
只是没有实现的东西
.readLine
不是很 Pythonic。有.readline
方法吗?
pyserial.readthedocs.io/en/latest/shortintro.html 我正在关注这些示例。
@JeremyG 这些例子不使用readLine
。
【参考方案1】:
感谢@Goyo 指出我的愚蠢错误。
.readLine() 不是方法,但 .readline() 是。哎呀。
>>> ser = serial.Serial('/dev/tty.usbmodem1411', 9600)
>>> ser.readline()
'2456.05\r\n'
【讨论】:
如果消息中有换行符,此代码将不起作用。GET A PROTOCOL
以上是关于ser.read() 有效,但 ser.readLine() 抛出错误的主要内容,如果未能解决你的问题,请参考以下文章