【发布时间】:2021-09-07 02:44:35
【问题描述】:
我想在pysub中实现python hidapi的读写调用。
使用 python hidapi 的示例代码如下所示:
import hid
hdev = hid.device()
h = hdev.open_path( path )
h.write( send_buffer )
res = h.read( 64 )
receive_buffer = bytearray( res )
我遇到的主要问题是 python hidapi read() 返回一个整数列表(从硬件接收的缓冲区中的每个字节都有一个 python int),我需要将缓冲区作为字节并忠实于收到了什么。(*)
次要问题是打开、读取和写入是我唯一需要的东西,我需要让系统尽可能轻便。因此我想避免额外的依赖。
(*) bytearray() 在这种情况下不是一个好的解决方案,原因超出了这个问题的范围。
【问题讨论】:
-
澄清一下,整数列表不适合您的用例的原因是什么?您可以迭代它们或对它们进行随机访问,就像它是一个字节字符串一样。您是否将它传递给其他特别需要字节字符串的东西?
-
@Kemp,我将它传递给需要发送数据的东西。它来自数据采集硬件,可以是来自成像传感器和波形记录器的两个字节整数或浮点数。必须将其转换回其原始格式的问题与性能和吞吐量有关。
-
阅读 pyUSB 的文档时,它似乎会从 read 调用中返回数组,因此您将遇到与 hidapi 相同的问题。
-
@kemp Pyusb,对于读取,返回传输类型的数组对象。如果传输类型是字节,它是一个字节数组。数据忠实于发送的内容,我们没有将值作为整数转换回以字节为单位的实际结构的问题。注意 read 调用中的第二个参数是字节数。
-
@kemp 请参阅下面的答案。它可以工作,并且数据确实是一个字节数组。
标签: python hid pyusb hardware-programming