使用pyusb与USB设备通信

2 投票
1 回答
8749 浏览
提问于 2025-04-16 19:37

我正在使用一个叫做 pyUSB 的模块,版本是1.6,想要和一个传感器进行通信。

我已经设置好了连接,并且可以从传感器的ROM中读取数据。这个传感器在连接后有主从关系,所以我需要给传感器发送一条消息,才能获取我需要的数据。

现在,write 函数只能接受字符串或只读缓冲区。我需要发送给USB设备的十六进制字节是 0xFE0x040x000x030x000x010xD50xC5
我不太确定怎么把这些转换成字符串或只读缓冲区。

下面是调用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 字符串)

撰写回答