首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Windows主机端与自定义USB HID设备通信详解(3)

Windows主机端与自定义USB HID设备通信详解(3)

5.
常见错误汇总 - HID ReadFile
  - Error Code 6 (handle is invalid)
    传入的句柄无效
  - Error Code 87 ( 参数错误 )
    很可能是 createfile 时声明了异步方式,但是读取时按同步读取。
  - Error Code 1784 ( 用户提供的 buffer 无效 ):
    传参时传入的“读取 buffer 长度”与实际的报告长度不符。

- HID WriteFile
  - Error Code 6 (handle is invalid)
    传入的句柄无效
  - Error Code 87 (参数错误)
    - CreateFile 时声明的同步 / 异步方式与实际调用 WriteFile 时传入的不同。
    - 报告 ID 与固件中定义的不一致( buffer 的首字节是报告 ID
  - Error Code 1784 ( 用户提供的 buffer 无效 )
    传参时传入的“写入 buffer 长度”与实际的报告长度不符。

- HidD_SetFeature
- HidD_SetOutputReport
  - Error Code 1 (incorrect function)
    不支持此函数,很可能是设备的报告描述符中未定义这样的报告类型(输入、输出、特征)
  - Error Code 6 (handle is invalid)
    传入的句柄无效
  - Error Code 23 (数据错误(循环冗余码检查))
    - 报告 ID 与固件中定义的不相符( buffer 的首字节是报告 ID
    - 传入的 buffer 长度少于固件定义的报告长度(报告正文 +1byte, 1byte 为报告 ID
    - 据相关资料反映(非官方文档),只要是驱动程序不接受此请求(对请求无反应),都会产生此错误

6.
报告描述符及数据通信程序示例
报告描述符(由于是汇编代码,所以不必留意其语法,仅需注意表中的每个数据都占 1 个字节):

_ReportDescriptor:                              // 报告描述符
       .dw 0x06,  0x00, 0xff               // 用法页
    .dw 0x09,  0x01                     // 用法 ( 供应商用法 1)
    .dw 0xa1,  0x01                      // 集合开始
    .dw 0x85,  0x01                         // 报告 ID(1)
    .dw 0x09,  0x01                  // 用法 ( 供应商用法 1)   
    .dw 0x15,  0x00                 // 逻辑最小值 (0)
    .dw 0x26,  0xff, 0x0                     // 逻辑最大值 (255)
    .dw 0x75,  0x08               // 报告大小 (8)
    .dw 0x95,  0x07                        // 报告计数 (7)
    .dw 0x81,  0x06                // 输入 (数据,变量,相对值)

    .dw 0x09,  0x01                     // 用法 ( 供应商用法 1)   
    .dw 0x85,  0x03                         // 报告 ID 3
    .dw 0xb1,   0x06                         // 特征 (数据,变量,相对值)

       .dw 0x09,  0x01                    // 用法 ( 供应商用法 1)
    .dw 0x85,  0x02                         // 报告 ID 2
    .dw 0xb1,  0x06                         // 特征 (数据,变量,相对值)

     .dw 0x09,  0x01                     // 用法 ( 供应商用法 1)   
    .dw 0x85,  0x04                         // 报告 ID 4
    .dw 0x91,   0x06                         // 输出 (数据,变量,相对值)
    .dw   0xc0                    // 结合结束
_ReportDescriptor_End:
继承事业,薪火相传
返回列表