使用 libusb-win32 与 USB 到 DMX512 接口通信,找不到任何端点
Using libusb-win32 to communicate with USB to DMX512 interface, can't find any endpoints
我正在尝试使用 libusb-win32 通过 USB 到 DMX512 接口将原始数据从我的计算机发送到一组灯。到目前为止,一切似乎都运行良好,除了由于某种原因,程序无法识别适配器上的任何端点。这是我的代码片段:
// initialize
usb_init();
usb_find_busses();
usb_find_devices();
usb_bus busses = *usb_get_busses();
// open the device
struct usb_device *dev = busses.devices;
usb_dev_handle *h = usb_open(dev);
usb_claim_interface(h, 0);
...
// close the device
usb_release_interface(h, 0);
usb_close(h);
当我查看调试器中的结构时,这是其中的数据:
dev {
next //<NULL>
prev //<NULL>
filename //0x008a9938
bus //0x008a9710
descriptor //{bLength = 18 ... }
config {
bLength //9
bDescriptorType //2
wTotalLength //18
bNumInterfaces //1
bConfigurationValue //1
iConfiguration //0
bmAttributes //128
MaxPower //250
interface {
altsetting {
bLength //9
bDescriptorType //4
bInterfaceNumber //0
bAlternateSetting //0
bNumEndpoints //0
bInterfaceClass //0
bInterfaceSubClass //0
bInterfaceProtocol //0
iInterface //0
endpoint //<NULL>
extra //<NULL>
extralen //0
}
num_altsetting //1
}
extra //<NULL>
extralen //0
}
dev //<NULL>
devnum //1
num_children //0
children //<NULL>
}
可以看出,没有识别的端点,最重要的是只有一个设备、一个配置、一个接口和一个 altset,这就是我陷入死胡同的原因。
所以我正在尝试找出用于写入 USB 的端点地址,或者我拥有的适配器是否可能与此库不兼容。
提前致谢
这仅仅意味着您仅限于通过端点 0x00 上的控制传输进行通信。每个设备都必须具有终结点 0,并接受通过此终结点的控件传输(因为这是主控制器将与之通信以枚举或配置设备的终结点)。控制传输可以在一个端点上读取和写入。
您没有任何关于如何控制此设备或任何嗅探USB传输的说明吗?通过随机测试找出所有数据以使用控制转移将需要很长时间。;)
作为后续工作,我确实设法让灯工作。Dryman 是正确的,因为我必须在端点 0x00 上使用控制转移。实际上,我甚至不需要像在问题的示例代码中那样声明接口。它实际上只是使用以下代码行:
usb_control_msg(h, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, cmd_SetSingleChannel, value, channel, buffer, sizeof(buffer), 5000);
其中h
是我的设备句柄,cmd_SetSingleChannel
是值为 1 的整数,value
是表示您正在设置的通道值的整数,channel
是表示您正在设置的通道的整数,buffer
是大小为 8 的空字符数组。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- 使用 libusb-win32 与 USB 到 DMX512 接口通信,找不到任何端点
- ClearCommError中的串行通信在读取缓冲区中找不到任何数据