HID USB 장치에 데이터를 쓰는 방법은 무엇입니까?

HID USB 장치에 데이터를 쓰는 방법은 무엇입니까?

작업할 애플리케이션을 개발해야 합니다.C8051F340-TBUSB를 통한 Silicon Labs 개발 보드에서(분명히 말하자면 그림 1의 USB 디버그 어댑터가 아니라 이전 링크의 그림 4에 있는 P3 커넥터를 사용하고 있습니다). 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를 통해 액세스 가능)도 정확해야 합니다.

또한 HID가 작동하지 않는 경우를 대비하여 usbmon(Wireshark를 통해 액세스 가능) 및 를 확인하세요 .libusb

관련 정보