For the life of me, I cannot figure out how to do a non-blocking serial read in Python 3 using my Raspberry Pi.
Here's my code:
import serial #for pySerial
ser = serial.Serial('/dev/ttyUSB0', 9600) #open serial port
print ('serial port = ' + ser.name) #print the port used
AttributeError: 'Serial' object has no attribute 'in_waiting'
The documentation link you listed shows
in_waiting as a property added in PySerial 3.0. Most likely you're using PySerial < 3.0 so you'll have to call the
You can check the version of PySerial as follows:
import serial print serial.VERSION
If you installed PySerial using pip, you should be able to perform an upgrade (admin privileges may be required):
pip install --upgrade pyserial
Otherwise, change your code to use the proper interface from PySerial < 3.0:
while (True): if (ser.inWaiting() > 0): ser.read(ser.inWaiting())