【问题标题】:Creating HID descriptor创建 HID 描述符
【发布时间】:2014-04-10 20:00:37
【问题描述】:

我正在为我的设备创建自定义 HID 描述符。它只从设备传输,只有一份报告。

数据为:

  • 64 位无符号整数
  • 16 位无符号整数
  • 16 位无符号整数
  • 16 位无符号整数
  • 16 位无符号整数

设备是“特定于供应商的”

我已经拉头发几个小时了!任何帮助将不胜感激!

【问题讨论】:

    标签: usb hid usb-descriptor


    【解决方案1】:

    据我所知,不支持在 HID 报告描述符中编码 64 位值。您可能可以定义 REPORT_SIZE(64) 和 REPORT_COUNT(1),但可以在描述符中编码的最大 LOGICAL_MAXIMUM() 是 LOGICAL_MAXIMUM(2147483647),它只有 32 位。

    您可能需要将 64 位项分解为 2 个 32 位项(或 8 个 8 位项),或者查看是否可以在不指定 LOGICAL_MAXIMUM 的情况下使其工作。例如:

    //--------------------------------------------------------------------------------
    // Decoded Application Collection
    //--------------------------------------------------------------------------------
    
    /*
    06 00FF      (GLOBAL) USAGE_PAGE         0xFF00 Vendor-defined 
    09 AC        (LOCAL)  USAGE              0xFF0000AC  
    A1 01        (MAIN)   COLLECTION         0x01 Application (Usage=0xFF0000AC: Page=Vendor-defined, Usage=, Type=)
    09 01          (LOCAL)  USAGE              0xFF000001  
    15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0
    27 FFFFFF7F    (GLOBAL) LOGICAL_MAXIMUM    0x7FFFFFFF (2147483647) 
    75 20          (GLOBAL) REPORT_SIZE        0x20 (32) Number of bits per field 
    95 02          (GLOBAL) REPORT_COUNT       0x02 (2) Number of fields 
    81 02          (MAIN)   INPUT              0x00000002 (2 fields x 32 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
    27 FFFF0000    (GLOBAL) LOGICAL_MAXIMUM    0x0000FFFF (65535) 
    09 02          (LOCAL)  USAGE              0xFF000002  
    75 10          (GLOBAL) REPORT_SIZE        0x10 (16) Number of bits per field 
    95 04          (GLOBAL) REPORT_COUNT       0x04 (4) Number of fields 
    81 02          (MAIN)   INPUT              0x00000002 (4 fields x 16 bits) 0=Data 1=Variable 0=Absolute 0=NoWrap 0=Linear 0=PrefState 0=NoNull 0=NonVolatile 0=Bitmap 
    C0           (MAIN)   END_COLLECTION     Application
    */
    
    //--------------------------------------------------------------------------------
    // Vendor-defined inputReport (Device --> Host)
    //--------------------------------------------------------------------------------
    
    typedef struct
    {
                                                         // No REPORT ID byte
      uint32_t VEN_VendorDefined0001[2];                 // Usage 0xFF000001: , Value = 0 to 2147483647
      uint16_t VEN_VendorDefined0002[4];                 // Usage 0xFF000002: , Value = 0 to 65535
    } inputReport_t;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2021-10-10
      • 2019-10-25
      • 2011-11-10
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      相关资源
      最近更新 更多