5353|6

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教关于HID设备的读写问题~ [复制链接]

关于访问HID设备的问题,在网上看到一篇介绍“Windows主机端与自定义USB HID设备通信详解”(http://blog.eeworld.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数据?

谢谢!

最新回复

谢谢piaopiaohu123的回复! 你说的意思我大致理解了,假如现在规定(包括应用程序和HID的报告描述符)应用程序的输出报告长度为8,其中report[0]为ReportID,report[1]~report[7]为报告内容,当使用WriteFile发送报告时长度应该指定为8,对吗?   详情 回复 发表于 2010-4-12 22:25
点赞 关注

回复
举报

85

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自己顶一下!
高手帮忙啊,等待中...
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
没弄过,

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

友情帮顶下。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

4
 
怎么沉了呀,我是不是选错地方了呀。
请大家指点下我该发到哪个论坛上?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
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可以查看到具体的错误内容.
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
还有一点:HID设备并不是直接与应用程序通信,而是通过PC机的缓冲区进行中转;同理你发数据也是先写入系统缓冲区.
        你使用WriteFile写入到缓冲区时,写入数组的大小与报告描述符设定的写入总位数要大小一致,否则会返回错误.
        readfile同理.
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢piaopiaohu123的回复!
你说的意思我大致理解了,假如现在规定(包括应用程序和HID的报告描述符)应用程序的输出报告长度为8,其中report[0]为ReportID,report[1]~report[7]为报告内容,当使用WriteFile发送报告时长度应该指定为8,对吗?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表