使用pyusb与USB设备通信
我正在使用一个叫做 pyUSB 的模块,版本是1.6,想要和一个传感器进行通信。
我已经设置好了连接,并且可以从传感器的ROM中读取数据。这个传感器在连接后有主从关系,所以我需要给传感器发送一条消息,才能获取我需要的数据。
现在,write
函数只能接受字符串或只读缓冲区。我需要发送给USB设备的十六进制字节是 0xFE
、0x04
、0x00
、0x03
、0x00
、0x01
、0xD5
、0xC5
。
我不太确定怎么把这些转换成字符串或只读缓冲区。
下面是调用write方法的方式。这是他们提供的示例代码。
# write bytes (serial mode)
print h.write('Hello world!\r\n")
我该如何传输这些十六进制字节呢?
1 个回答
6
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'
(也就是说,要用字节串,而不是 Unicode 字符串)