gpt4 book ai didi

c - libusb: libusb_control_transfer 卡住程序

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:37 24 4
gpt4 key购买 nike

我正在尝试获取我的 USB 设备的固件版本。根据规范:

当使用 USB 接口(interface)时,命令作为 CONTROL READ 请求发送,其中请求字节是命令,Index 和 Value 是发送到 Device 的附加参数。如果 PC 正在请求数据,它将在端点 0 IN 缓冲区中返回。

Command               Description              Device Response / Notes 
a Request firmware version The device returns 4 bytes containing the version number in ASCII.

现在要请求固件版本,我执行以下操作:

char buffer[4];
unsigned char a = 'a';
r = libusb_control_transfer(dev_handle,0,a,0,0,buffer,4,0);

但是程序停止响应,我得不到任何结果。

最佳答案

我看到这里有两件事可能是错误的:

字符值 'a' 等于 0x61,我想你想要的是你的 bRequest 参数的 0x0A。

此外,由于您正在从设备获取数据,因此您可能需要正确设置 bmRequestType。 0x80 是表示从设备到主机的数据的掩码,现在您指定要将数据提供给设备。

在这些情况下,USB 分析器非常有用,因此您可以查看总线以准确了解发送到您设备的设置数据包中包含的内容以及它对主机的响应。

修改后的代码:

char buffer[4];
r = libusb_control_transfer(dev_handle,0x80,0x0a,0,0,buffer,4,0);

关于c - libusb: libusb_control_transfer 卡住程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19539649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com