打印

请教HID中的报告描述符

[复制链接]
4275|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhang..yb|  楼主 | 2009-4-7 10:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2009-4-7 11:38 | 只看该作者

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

使用特权

评论回复
板凳
zhang..yb|  楼主 | 2009-4-7 13:45 | 只看该作者

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

使用特权

评论回复
地板
computer00| | 2009-4-7 14:14 | 只看该作者

参看:

使用特权

评论回复
5
zhang..yb|  楼主 | 2009-4-7 14:54 | 只看该作者

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

const u8 Joystick_ReportDescriptor[JOYSTICK_SIZ_REPORT_DESC] = 

0x05, 0x01, // USAGE_PAGE (Generic Desktop) 
0x09, 0x06, // USAGE (Keyboard) 
0xa1, 0x01, // COLLECTION (Application) 
0x05, 0x07, //     USAGE_PAGE (Keyboard/Keypad) 
0x19, 0xe0, //     USAGE_MINIMUM (Keyboard LeftControl) 
0x29, 0xe7, //     USAGE_MAXIMUM (Keyboard Right GUI) 
0x15, 0x00, //     LOGICAL_MINIMUM (0) 
0x25, 0x01, //     LOGICAL_MAXIMUM (1) 
0x95, 0x08, //     REPORT_COUNT (8) 
0x75, 0x01, //     REPORT_SIZE (1) 
0x81, 0x02, //     INPUT (Data,Var,Abs) 
0x95, 0x01, //     REPORT_COUNT (1) 
0x75, 0x08, //     REPORT_SIZE (8) 
0x81, 0x03, //     INPUT (Cnst,Var,Abs) 
0x95, 0x06, //   REPORT_COUNT (6) 
0x75, 0x08, //   REPORT_SIZE (8) 
0x25, 0xFF, //   LOGICAL_MAXIMUM (255) 
0x19, 0x00, //   USAGE_MINIMUM (Reserved (no event indicated)) 
0x29, 0x65, //   USAGE_MAXIMUM (Keyboard Application) 
0x81, 0x00, //     INPUT (Data,Ary,Abs) 
0x25, 0x01, //     LOGICAL_MAXIMUM (1) 
0x95, 0x05, //   REPORT_COUNT (5) 
0x75, 0x01, //   REPORT_SIZE (1) 
0x05, 0x08, //   USAGE_PAGE (LEDs) 
0x19, 0x01, //   USAGE_MINIMUM (Num Lock) 
0x29, 0x02, //   USAGE_MAXIMUM (Caps Lock) 
0x91, 0x02, //   OUTPUT (Data,Var,Abs) 
0x95, 0x01, //   REPORT_COUNT (1) 
0x75, 0x06, //   REPORT_SIZE (6) 
0x91, 0x03, //   OUTPUT (Cnst,Var,Abs) 
0xc0        // END_COLLECTION 
}; 

使用特权

评论回复
6
computer00| | 2009-4-7 14:59 | 只看该作者

如下操作:

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

使用特权

评论回复
7
zhang..yb|  楼主 | 2009-4-7 15:13 | 只看该作者

谢谢!

使用特权

评论回复
8
zhang..yb|  楼主 | 2009-4-8 09:27 | 只看该作者

还是不行!

圈圈大虾,能提供一个可用的吗?

使用特权

评论回复
9
computer00| | 2009-4-8 10:25 | 只看该作者

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

使用特权

评论回复
10
zhang..yb|  楼主 | 2009-4-9 17:20 | 只看该作者

OO的范例烧写后有问题

用 USBTrace 能看到设备和读出数值,但在 LIBUSB 中找不到设备,同类型的 USB 鼠标能找,不知道哪出问题了?

使用特权

评论回复
11
computer00| | 2009-4-9 17:25 | 只看该作者

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

不知道LIBUSB是个什么东西啊。

你也可以参考下面这个例子中的报告描述符和上位机应用软件来做:

http://blog.21ic.com/user1/2198/archives/2008/54260.html

将这个程序中的报告描述符提取出来,然后将Report Count从8改成0x40,就可以了。可能我前面给出的STM的例子报告描述符有点小问题吧。

使用特权

评论回复
12
zhang..yb|  楼主 | 2009-4-9 17:35 | 只看该作者

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

使用特权

评论回复
13
computer00| | 2009-4-9 18:32 | 只看该作者

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

使用特权

评论回复
14
zhang..yb|  楼主 | 2009-4-10 10:10 | 只看该作者

可以通讯了

速度有问题,单向传输最快 2ms 一次,双向 6ms 一次,上下位机只做传输的情况下测。

使用特权

评论回复
15
computer00| | 2009-4-10 10:21 | 只看该作者

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

使用特权

评论回复
16
Terry_lin| | 2009-5-22 17:27 | 只看该作者

HID 与报告描述符

   HID 也交输入输出设备,你的理解刚好相反,
鼠标和键盘必须有报告描述符存在.做为
HID 类设备,报告描述符是必须的..
   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

441

帖子

1

粉丝