我正在尝试与某些HID设备进行数据交换。我设法使用libusb_interrupt_transfer函数实现了从此设备的读取,但是我不知道如何实现向HID发送缓冲区的操作,因为设备没有OUT端点。如何将数据传输到HID?设备的描述符如下:
Bus 001 Device 074: ID 16d0:8080 MCS Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x16d0 MCS idProduct 0x8080 bcdDevice 2.03 iManufacturer 1 iProduct 2 iSerial 3 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 34 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xc0 Self Powered MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 No Subclass bInterfaceProtocol 0 None iInterface 0 HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 32 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 5
答案 0 :(得分:0)
如果设备没有OUT端点,则向设备发送数据的唯一方法是使用默认控制端点(EP0)进行控制传输。
HID规范文档中提到了特定于HID类的控制请求。但是,SET_ *请求不是强制性的,因此您的HID设备可能不支持它们。
也可能有特定于供应商的控制请求,但是无法猜测它们,因此需要由设备供应商进行记录。