Связь с USB-устройством через pyusb - PullRequest
0 голосов
/ 15 июня 2011

Я использую модуль pyUSB версии 1.6 и пытаюсь связаться с датчиком.

Я установил соединение и могу читать из ПЗУ на датчике.Датчик, когда он подключен, имеет отношение «ведущий / ведомый», поэтому мне нужно отправить на датчик сообщение для получения необходимых мне данных.

Теперь функция write может принимать только строку или буфер только для чтения.Мне необходимо отправить на USB-устройство шестнадцатеричные байты 0xFE, 0x04, 0x00, 0x03, 0x00, 0x01, 0xD5, 0xC5.
Я не уверен, как закодировать это как строковый буфер или буфер только для чтения.

Вот как вызывается метод записи.Это пример кода, который они предоставляют.

# write bytes (serial mode)

print h.write('Hello world!\r\n")

Как мне передать шестнадцатеричные байты?

1 Ответ

5 голосов
/ 15 июня 2011
byte_ints = [0xFE, 0x04, 0x00, 0x03, 0x00, 0x01, 0xD5, 0xC5] # Python recognises these as hex.
byte_str = "".join(chr(n) for n in byte_ints)

В качестве альтернативы вы можете просто поставить \ x перед каждой парой шестнадцатеричных цифр в строке:

'\xfe\x04\x00\x03\x00\x01\xd5\xc5'

В Python 3 это должно быть:

b'\xfe\x04\x00\x03\x00\x01\xd5\xc5'

(т.е. строка байтов, а не юникод)

...