当前位置: 代码迷 >> 驱动开发 >> 请问关于HID设备的读写有关问题
  详细解决方案

请问关于HID设备的读写有关问题

热度:105   发布时间:2016-04-28 11:18:35.0
请教关于HID设备的读写问题~
关于访问HID设备的问题,在网上看到一篇介绍“Windows主机端与自定义USB HID设备通信详解”(http://blog.csdn.net/kevinyujm/archive/2009/06/12/4264506.aspx)的文章,现在有几个疑问,还请各位指点:

1.相同类型的Report,其Report ID是不是相同的(文章里说输入报告 1 ,特征报告 2 ,特征报告 3 ,输出报告 4)?
  如果不同的话,那Report ID是怎么确定的?
2.要向HID设备发送一串数据,那么使用HIDD_SetFeature(..)和HIDD_SetOutputReport(..)及使用WriteFile(..)函数实现有没有什么区别?
3.使用HIDD_SetFeature,HIDD_SetOutputReport及WriteFile函数向设备(Driver)发送一串数据,Driver接收到的就是整个Report数据?

谢谢!

------解决方案--------------------
没弄过,

期待高手,我也学习下,MARK.

友情帮顶下。
------解决方案--------------------
1.相同类型的Report,其Report ID是不是相同的(文章里说输入报告 1 ,特征报告 2 ,特征报告 3 ,输出报告 4)?
如果不同的话,那Report ID是怎么确定的?
Report ID由HID设备的报告描述符来决定,具体多少要看你里面的设定(一般设定输入和输入2种ID),在WriteFile和ReadFile时与设定保持一致即可;
还有一种是报告描述符里没有设定,系统默认输入输出ID都为0x00;
2.要向HID设备发送一串数据,那么使用HIDD_SetFeature(..)和HIDD_SetOutputReport(..)及使用WriteFile(..)函数实现有没有什么区别?
应用程序只需要使用WriteFile(..)即可,
HIDD_SetFeature(..)和HIDD_SetOutputReport(..)为PC机自己调用,不属于应用程序里面的东西(这个地方不太确定,应该是)
3.使用HIDD_SetFeature,HIDD_SetOutputReport及WriteFile函数向设备(Driver)发送一串数据,Driver接收到的就是整个Report数据?
接受函数是ReadFile(),同理;
注意:WriteFile()及ReadFile()都比实际的数据要多一位ReportID,这个ReportID使用BUSHOUND是看不到的,但是实际存在,也就是说你的读写数组的位数都要在你实际数据位数的基础上加1,否则会返回错误,使用GetlastError可以查看到具体的错误内容.
------解决方案--------------------
1.相同类型的Report,其Report ID是不是相同的(文章里说输入报告 1 ,特征报告 2 ,特征报告 3 ,输出报告 4)?如果不同的话,那Report ID是怎么确定的?

答: 基本同意piaopiaohu123, 补充一点, report id在报告描述中是可选的, 如果应用确实要区分同一报告类型的报告内容, 则加上report ID来区分. 


2.要向HID设备发送一串数据,那么使用HIDD_SetFeature(..)和HIDD_SetOutputReport(..)及使用WriteFile(..)函数实现有没有什么区别?

答:HIDD_SetFeature只能发送特征报告, HIDD_SetOutputReport与WriteFile没有太大区别,只是有些设备不支
持前者.


3.使用HIDD_SetFeature,HIDD_SetOutputReport及WriteFile函数向设备(Driver)发送一串数据,Driver接收到的就是整个Report数据?

答: 对,记得加上report id就行了,实际长度比报告长度多一个.

另外,LZ该结贴了......
  相关解决方案