Board logo

标题: Windows主机端与自定义USB HID设备通信详解(3) [打印本页]

作者: yuyang911220    时间: 2014-10-23 21:09     标题: 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:




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0