Skip to content Skip to sidebar Skip to footer

How To Check Simultaneously For Serial Input And Input From Keyboard (simultaneous Use Of Readchar And Serial Library)

I am trying to code the following using python3 in a raspberry pi: 1) wait for a 14 digits bar code (barcode scanner connected through usb port and input received as keyboard data)

Solution 1:

I cannot be sure (I don't have your barcode reader and serial port device) but based on what you say I don't think you need threads, you just have to rely on the buffers to keep your data stored until you have time to read them.

Simply change the condition on your second while loop to:

whileserial.inWaiting()!=0:

This way you will make sure the RX buffer on your serial port will empty. This approach might or might not work depending on the speed and timing of your devices.

You could also try to add a short delay after the buffer is emptied:

import serial
import time
ser=serial.Serial(port="/dev/ttyUSB0",baudrate=115200, timeout=1.0)          
time.sleep(1)
data=b""timeout = time.time() + 1.0
while ser.inWaiting() or time.time()-timeout < 0.0:   #keep reading until the RX buffer is empty and wait for 1 seconds to make sure no more data is comingif ser.inWaiting() > 0:
        data+=ser.read(ser.inWaiting())
        timeout = time.time() + 1.0
    else:
        print("waiting...")

This keeps trying to read from the port for 1 second after the last byte is received, to make sure nothing else is coming. You might want to play with the duration of the delay depending, again, on the speed and timing of your devices.

Again, I don't have your devices, so I'm in no position to judge, but the way you read characters from the barcode/keyboard looks far from optimum. I doubt readchar is the best approach. At the end of the day, your barcode reader is probably a serial port. You might want to dig into that and/or find a more efficient way to read several keyboard strokes in one go.

Solution 2:

I found this answer in another question:

How to read keyboard-input?

I have tried it and it works! I´ll also give a try to the method proposed by Marcos G.

Post a Comment for "How To Check Simultaneously For Serial Input And Input From Keyboard (simultaneous Use Of Readchar And Serial Library)"