当我试图在一个Arduino上读取多行串行数据时,我使用以下习惯用法:
String message = "";
while (Serial.available()){
message = message + serial.read()
}
在Arduino C中,
Serial.available()
返回可从串行缓冲区读取的字节数(请参见Docs)。在python中,Serial.available()
的等价物是什么?例如,如果我需要读取多行串行数据,我希望使用以下代码:
import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=0.050)
...
while ser.available():
print ser.readline()
最佳答案
属性Serial.in_waiting
返回“接收缓冲区中的字节数”。
这似乎相当于Serial.available()
的描述:“字节数…它已经到达并存储在串行接收缓冲区中。”
尝试:
import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=0.050)
...
while ser.in_waiting: # Or: while ser.inWaiting():
print ser.readline()
对于Pyserial 3.0之前的版本,请使用
.inWaiting()
。要确定pyserial版本,请执行以下操作:import serial
print(serial.__version__)
关于python - pyserial中Serial.available()的等价物是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38645060/