pyserial中Serial.available()的等价物是什么?

Mic*_*ter 8 python serial-port

当我试图在Arduino上读取多行串行数据时,我使用以下习语:

String message = "";
while (Serial.available()){
    message = message + serial.read()
}
Run Code Online (Sandbox Code Playgroud)

在Arduino C中,Serial.available()返回可从串行缓冲区读取的字节数(参见文档).python中的等价物是Serial.available()什么?

例如,如果我需要读取多行串行数据,我希望使用以下代码:

import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=0.050)
...
while ser.available():
    print ser.readline()
Run Code Online (Sandbox Code Playgroud)

Rob*_*obᵩ 10

该属性Serial.in_waiting返回"接收缓冲区中的字节数".

这似乎相当于Serial.available()'s description:"字节数......已经到达并存储在串行接收缓冲区中."

尝试:

import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=0.050)
...
while ser.in_waiting:  # Or: while ser.inWaiting():
    print ser.readline()
Run Code Online (Sandbox Code Playgroud)

对于pyserial 3.0之前的版本,请使用.inWaiting().要确定您的pyserial版本,请执行以下操作:

import serial
print(serial.__version__)
Run Code Online (Sandbox Code Playgroud)