I use the pyserial to read data from a serial port. My code is in window Xp and python 2.4. I never found the need to flush anything and I always use inWaiting. I am trying to make a program which run serial communication with another program in python. In my program, I want to wait a specific incoming data. So far, I have successfully done it with this co.
Max Plus Ii License Crack Software The Practice Season 1 Episode 1 Torrent. more. I am reading serial data like this: connected = False port = 'COM4' baud = 9600 ser = serial.Serial(port, baud, timeout=0) while not connected: #serin = ser.read() connected = True while True: print('test') reading = ser.readline().decode() The problem is that it prevents anything else from executing including bottle py web framework. Adding sleep() won't help. Changing 'while True' to 'while ser.readline():' doesn't print 'test', which is strange since it worked in Python 2.7.
Any ideas what could be wrong? Ideally I should be able to read serial data only when it's available. Data is being sent every 1,000 ms. Using a separate thread is totally unnecessary.
Just do this for your infinite while loop instead (Tested in Python 3.2.3): while (True): if (ser.inWaiting()>0): #if incoming bytes are waiting to be read from the serial input buffer data_str = ser.read(ser.inWaiting()).decode('ascii') #read the bytes and convert from binary array to ASCII print(data_str, end=') #print the incoming string without putting a new-line (' n') automatically after every print() #Put the rest of your code you want here This way you only read and print if something is there. You said, 'Ideally I should be able to read serial data only when it's available.'
This is exactly what the code above does. If nothing is available to read, it skips on to the rest of your code in the while loop. Totally non-blocking. (This answer originally posted & debugged here: ) pySerial documentation.