当我试图在一个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/

10-13 08:20