Вопрос, похоже, плохо сформулирован.Вы можете использовать функцию Python raw_input для чтения из стандартного ввода, чтобы задать вопрос, и вы можете читать байты из последовательного порта, если вы знаете скорость передачи данных через устройство BAUD (в противном случае вы получите мусор).Из этого примера я не совсем уверен, что именно вы пытаетесь сделать (хотя, кажется, код показывает, что вы задаете вопрос после прочтения значения, вопреки описанию).
Если вы знаете серийный номерустройство будет передавать \n
после завершения, тогда вы можете использовать readline (), в противном случае вам нужно знать, сколько байтов будет в его ответе.Похоже, что это сканер штрих-кода, поэтому убедитесь, что количество запрошенных вами байтов будет покрывать любые коды ошибок, которые он может распечатать.Если вы прочитаете слишком много байтов, вы отрежете данные из буфера для следующего чтения, а если прочитаете слишком мало, вы оставите некоторые из них там.В соответствии с это это будет либо 6 или 10 байт для данных, а в спецификации устройства будет указано на наличие ошибок.
Вы захотите что-то вроде этого (COM1 предполагает Windows, используйте / dev/ ttyS * для Unix:
ser = serial.Serial('COM1', 19200, timeout=1)
station = raw_input('What is the station?')
barcode = ser.read(10)
Редактировать: Как сказал Пол, вызов read () является блокирующим и будет ждать, пока в буфере не появятся последовательные данные, до истечения времени ожидания, указанного вдостигнут конструктор. Это означает, что вам нужно будет что-то сканировать до того, как истечет время ожидания, или код сломается. Вы получите часть отсканированных результатов или пустую строку.
print 'What is the barcode?'
ser = serial.Serial('COM1', 19200, timeout=1)
barcode = ser.read(11)
print 'This is the barcode scanned: ' + barcode
Обратите внимание, чтоЯ использовал здесь 11 байтов, поскольку это было то, что вы использовали изначально, я предполагаю, что в спецификации вашего сканера штрих-кода написано, что он печатает 10 символов, а затем конечный байт, такой как \ n.
Информация выше о любых кодах ошибокчто сканер может отправить все еще стоит, и вам нужно будет обработать его самостоятельно, прежде чем распечатывать штрих-код.