请教HID中的报告描述符

[复制链接]
5022|15
 楼主| zhang..yb 发表于 2009-4-7 10:37 | 显示全部楼层 |阅读模式
HID中的报告描述符是必须的吗?在应用中只是主机和MCU交换数据,不用在键盘或鼠标场合,报告描述符可以取消吗?
computer00 发表于 2009-4-7 11:38 | 显示全部楼层

好象不可以吧。不然怎么生成一个实际的设备?

  
 楼主| zhang..yb 发表于 2009-4-7 13:45 | 显示全部楼层

如果要实现端点1的 32字节 in 和 out,报告描述符如何写?

  
computer00 发表于 2009-4-7 14:14 | 显示全部楼层

参看:

  <br /> 相关链接:<a href='http://blog.21ic.com/user1/2198/archives/2008/54260.html'>http://blog.21ic.com/user1/2198/archives/2008/54260.html</a>
 楼主| zhang..yb 发表于 2009-4-7 14:54 | 显示全部楼层

圈圈大虾,参照你的范例该如何改?

const&nbsp;u8&nbsp;Joystick_ReportDescriptor[JOYSTICK_SIZ_REPORT_DESC]&nbsp;=&nbsp;<br />{&nbsp;<br />0x05,&nbsp;0x01,&nbsp;//&nbsp;USAGE_PAGE&nbsp;(Generic&nbsp;Desktop)&nbsp;<br />0x09,&nbsp;0x06,&nbsp;//&nbsp;USAGE&nbsp;(Keyboard)&nbsp;<br />0xa1,&nbsp;0x01,&nbsp;//&nbsp;COLLECTION&nbsp;(Application)&nbsp;<br />0x05,&nbsp;0x07,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USAGE_PAGE&nbsp;(Keyboard/Keypad)&nbsp;<br />0x19,&nbsp;0xe0,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USAGE_MINIMUM&nbsp;(Keyboard&nbsp;LeftControl)&nbsp;<br />0x29,&nbsp;0xe7,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;USAGE_MAXIMUM&nbsp;(Keyboard&nbsp;Right&nbsp;GUI)&nbsp;<br />0x15,&nbsp;0x00,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOGICAL_MINIMUM&nbsp;(0)&nbsp;<br />0x25,&nbsp;0x01,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOGICAL_MAXIMUM&nbsp;(1)&nbsp;<br />0x95,&nbsp;0x08,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REPORT_COUNT&nbsp;(8)&nbsp;<br />0x75,&nbsp;0x01,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REPORT_SIZE&nbsp;(1)&nbsp;<br />0x81,&nbsp;0x02,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INPUT&nbsp;(Data,Var,Abs)&nbsp;<br />0x95,&nbsp;0x01,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REPORT_COUNT&nbsp;(1)&nbsp;<br />0x75,&nbsp;0x08,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REPORT_SIZE&nbsp;(8)&nbsp;<br />0x81,&nbsp;0x03,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INPUT&nbsp;(Cnst,Var,Abs)&nbsp;<br />0x95,&nbsp;0x06,&nbsp;//&nbsp;&nbsp;&nbsp;REPORT_COUNT&nbsp;(6)&nbsp;<br />0x75,&nbsp;0x08,&nbsp;//&nbsp;&nbsp;&nbsp;REPORT_SIZE&nbsp;(8)&nbsp;<br />0x25,&nbsp;0xFF,&nbsp;//&nbsp;&nbsp;&nbsp;LOGICAL_MAXIMUM&nbsp;(255)&nbsp;<br />0x19,&nbsp;0x00,&nbsp;//&nbsp;&nbsp;&nbsp;USAGE_MINIMUM&nbsp;(Reserved&nbsp;(no&nbsp;event&nbsp;indicated))&nbsp;<br />0x29,&nbsp;0x65,&nbsp;//&nbsp;&nbsp;&nbsp;USAGE_MAXIMUM&nbsp;(Keyboard&nbsp;Application)&nbsp;<br />0x81,&nbsp;0x00,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;INPUT&nbsp;(Data,Ary,Abs)&nbsp;<br />0x25,&nbsp;0x01,&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LOGICAL_MAXIMUM&nbsp;(1)&nbsp;<br />0x95,&nbsp;0x05,&nbsp;//&nbsp;&nbsp;&nbsp;REPORT_COUNT&nbsp;(5)&nbsp;<br />0x75,&nbsp;0x01,&nbsp;//&nbsp;&nbsp;&nbsp;REPORT_SIZE&nbsp;(1)&nbsp;<br />0x05,&nbsp;0x08,&nbsp;//&nbsp;&nbsp;&nbsp;USAGE_PAGE&nbsp;(LEDs)&nbsp;<br />0x19,&nbsp;0x01,&nbsp;//&nbsp;&nbsp;&nbsp;USAGE_MINIMUM&nbsp;(Num&nbsp;Lock)&nbsp;<br />0x29,&nbsp;0x02,&nbsp;//&nbsp;&nbsp;&nbsp;USAGE_MAXIMUM&nbsp;(Caps&nbsp;Lock)&nbsp;<br />0x91,&nbsp;0x02,&nbsp;//&nbsp;&nbsp;&nbsp;OUTPUT&nbsp;(Data,Var,Abs)&nbsp;<br />0x95,&nbsp;0x01,&nbsp;//&nbsp;&nbsp;&nbsp;REPORT_COUNT&nbsp;(1)&nbsp;<br />0x75,&nbsp;0x06,&nbsp;//&nbsp;&nbsp;&nbsp;REPORT_SIZE&nbsp;(6)&nbsp;<br />0x91,&nbsp;0x03,&nbsp;//&nbsp;&nbsp;&nbsp;OUTPUT&nbsp;(Cnst,Var,Abs)&nbsp;<br />0xc0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;END_COLLECTION&nbsp;<br />};&nbsp;<br />
computer00 发表于 2009-4-7 14:59 | 显示全部楼层

如下操作:

首先,打开http://blog.21ic.com/user1/2198/archives/2008/54260.html这个网页,<br />然后下载用户自定义HID设备下位机固件源代码包:&nbsp;MyUsbHid.rar这个代码包,<br />然后使用RAR软件,将这个包解压缩(解压缩路径可以直接选在C盘,或者选在桌面),<br />然后去解压缩的路径找到这个文件夹,然后使用鼠标双击打开文件夹,找到usbcore.c文件,<br />双击打开之,在里面查找code&nbsp;uint8&nbsp;ReportDescriptor[]=,里面保存的就是报告描述符,<br />参考之。
 楼主| zhang..yb 发表于 2009-4-7 15:13 | 显示全部楼层

谢谢!

  
 楼主| zhang..yb 发表于 2009-4-8 09:27 | 显示全部楼层

还是不行!

圈圈大虾,能提供一个可用的吗?
computer00 发表于 2009-4-8 10:25 | 显示全部楼层

参考我在这个贴子中的回复,里面有个实例

  <br /> 相关链接:<a href='https://bbs.21ic.com/club/bbs/list.asp?boardid=49&t=3293486&tp=HID%u901A%u4FE1%u5B57%u8282%u9650%u5236%u95EE%u9898'>https://bbs.21ic.com/club/bbs/list.asp?boardid=49&t=3293486&tp=HID%u901A%u4FE1%u5B57%u8282%u9650%u5236%u95EE%u9898</a>
 楼主| zhang..yb 发表于 2009-4-9 17:20 | 显示全部楼层

OO的范例烧写后有问题

用&nbsp;USBTrace&nbsp;能看到设备和读出数值,但在&nbsp;LIBUSB&nbsp;中找不到设备,同类型的&nbsp;USB&nbsp;鼠标能找,不知道哪出问题了?
computer00 发表于 2009-4-9 17:25 | 显示全部楼层

在LIBUSB中?我不是用这个软件操作的,你用我提供的那个软

不知道LIBUSB是个什么东西啊。<br /><br />你也可以参考下面这个例子中的报告描述符和上位机应用软件来做:<br /><br /><a href="http://blog.21ic.com/user1/2198/archives/2008/54260.html" target=_blank>http://blog.21ic.com/user1/2198/archives/2008/54260.html</a><br /><br />将这个程序中的报告描述符提取出来,然后将Report&nbsp;Count从8改成0x40,就可以了。可能我前面给出的STM的例子报告描述符有点小问题吧。
 楼主| zhang..yb 发表于 2009-4-9 17:35 | 显示全部楼层

我要在 BCB 中用 USB,不知有好建议吗?

  
computer00 发表于 2009-4-9 18:32 | 显示全部楼层

一样的,也是调用那几个API函数。

  
 楼主| zhang..yb 发表于 2009-4-10 10:10 | 显示全部楼层

可以通讯了

速度有问题,单向传输最快&nbsp;2ms&nbsp;一次,双向&nbsp;6ms&nbsp;一次,上下位机只做传输的情况下测。
computer00 发表于 2009-4-10 10:21 | 显示全部楼层

中断端点查询时间要设置为1ms,我测试过,没有问题的。

  
Terry_lin 发表于 2009-5-22 17:27 | 显示全部楼层

HID 与报告描述符

&nbsp;&nbsp;&nbsp;HID&nbsp;也交输入输出设备,你的理解刚好相反,<br />鼠标和键盘必须有报告描述符存在.做为<br />HID&nbsp;类设备,报告描述符是必须的..<br />&nbsp;&nbsp;&nbsp;<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

441

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部