如何向 HID USB 设备写入数据?

如何向 HID USB 设备写入数据?

我必须开发一个应用程序来与C8051F340-TB通过 USB 从 Silicon Labs 开发板(需要明确的是,我使用的是上一个链接图 4 中的 P3 连接器,而不是图 1 中的 USB 调试适配器)。我已经用一个示例程序刷新了该设备,该程序应该通过 USB 回显接收到的数据。但是我无法尝试它,因为我不知道如何将数据发送到 USB 设备。这是我第一次在低级别使用 USB 设备。

我在 Xubuntu 18.04 中,lsusb -v命令除其他外还显示以下内容:

Bus 001 Device 023: ID 10c4:ea61 Cygnal Integrated Products, Inc. CP210x UART Bridge
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x10c4 Cygnal Integrated Products, Inc.
  idProduct          0xea61 CP210x UART Bridge
  bcdDevice            1.00
  iManufacturer           1 Myself
  iProduct                2 USB communication test
  iSerial                 3 0001
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               64mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
Device Status:     0x0000
  (Bus Powered)

这似乎是我的设备(我识别出了“iManufacturer”和“iProduct”字段)。

如何向设备发送字节、字符串或其他内容?另外,我如何读取它发送给我的数据?

答案1

对于 HID 设备,查看dmesg,找到相应的hidraw设备,写入或读取该设备 ( cat, hexdump)。

根据 HID 类别,您还可能会收到 上的事件/dev/event...

但是,对于 HID 设备,我希望

 bInterfaceClass         3 Human Interface Device

所以您可能没有正确地对设备进行编程。 HID 描述符(可通过 debugfs 访问)也必须正确。

另请查看usbmon(可通过 Wireshark 访问)和libusb,以防您无法使 HID 工作。

相关内容