Если используемый вами пакет serial
равен pySerial , обратите внимание на определение метода Serial.read()
:
read(size=1)
Параметр: size - количество байтов для чтения.
Возвращает: считанные байты из порта.
Считать размер байтов из последовательного порта. Если установлен таймаут, он может вернуть меньше символов в соответствии с запросом. Без таймаута он будет блокироваться до тех пор, пока не будет прочитано запрошенное количество байтов.
Изменено в версии 2.5: Возвращает экземпляр байтов , когда он доступен (Python 2.6 и новее) и str в противном случае.
Хотя вы пытаетесь обработать byte
объекты, вы можете (в зависимости от версии Python) обрабатывать str
или bytes
(массив) объектов. Эти объекты не обязательно соответствуют целочисленным значениям.
Даже при получении byte
объектов из read()
наибольшее целое число без знака будет 255.
Сравнивать value
с 400 не имеет смысла. Попробуйте найти тип возвращаемых объектов с помощью простого отладочного вывода.
print type(value)
Если вам нужно обработать объект str
, проверьте использование ord()
для преобразования.
(Предложение flush
относится к исходному вопросу, в котором использовалось print
, а не tkinter
).
См. how-to-flush-output-of-python-print и попробуйте оболочку командной строки, а не IDE, которая может повлиять на буферизацию вывода.