标题:
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