在Python的Raspberry Pi上向HID设备发送和接收字节?

2024-03-29 16:00:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Raspberry Pi 4,有一个通过USB连接的HID设备,显示为/dev/hidraw0。 (如果你好奇的话:这是一个HP素数计算器。)

我需要向设备发送两个字节,并期望设备以未知大小的ByTestStream进行应答。它不是一个恒定的大小,它的长度是不同的

第一个问题第一:我似乎无法准确地向设备发送两个字节。这是我的代码:

import os, sys
fd = os.open("/dev/hidraw0", os.O_RDWR|os.O_NONBLOCK)
bytesWritten = os.write(fd, bytes([252, 8]))
print('bytes written: ' + str(bytesWritten))

这将打印出:

bytes written: 8

为什么我只指定了两个字节,却写了8个字节?这是怎么回事

第二个问题:在第一次测试中,我想通过以下方式从设备读取恒定数量的字节:

answer = os.read(fd, 20)

这将导致错误

OSError: [Errno 11] Resource temporarily unavailable

有什么基本的建议吗?还是取决于HID协议在设备端的实现方式

非常感谢


Tags: dev字节bytesos方式piraspberry素数