Я пытаюсь проверить данные, полученные от последовательного порта, и не может показаться, что это правильно. Мне нужно проверить, если первый байт, полученный в пакете 0xBE таким образом:проверка байтов из последовательного порта
#ser is instance of pyserial serial object
data=ser.read(5)
print "serial RX: " + binascii.b2a_hex(data)
if data[0] != 0xBE:
print"wrong value"
всегда печатает:
serial RX: beef000008
wrong value
Несмотря на то, двоичная в ASCii печати показывает, что правильное значение было получено.
Где я ошибаюсь в этой действительно основной задаче?
Thanks, Robin.
ну почему бы вам не распечатать данные [0], данные [1], данные [2] и данные [3] и посмотреть, что там? –
если я печатаю данные [0] Я получаю символ 3/4, который является chr (0xBE), поэтому это правильное значение (как подтверждено также bin2ascii), но serial.read() должен возвращать объект байтов в python> = 2.4 согласно документам. это действительно строка? – user2512377
Я думаю, что байты - это строки. просто прочитав об этом сейчас. но в любом случае исправление для вашей ситуации заключается в сравнении данных [0] с chr (0xbe), то :) –