大家知道,将一个USB设备定义为用户自定义的HID设备,就
可以让windows操作系统识别为一个HID兼容设备,并不需要用
户自己提供驱动程序,应用程序可以直接通过操作系统提供的
HID驱动来访问设备,这个特性是很方便的。当一个USB HID
设备被识别后,会在设备管理器里的“人体学输入设备”中增
加一个“USB 人体学输入设备”,如果它是一个用户自定义的
HID设备,还会在这里增加一个“HID-compliant device”的设
备。在驱动程序的层次,后者是在前者之上的。当设备返回数
据时,首先到达“USB 人体学输入设备”,并且缓冲起来,可
以缓冲多个数据包。如果这时应用软件从“HID-compliant
device”请求数据,则“HID-compliant device”会从“USB
人体学输入设备”请求数据,如果没有定义用途ID的话,
则还会自动在前面加上一个字节0作为用途ID。发送数据时
这个过程刚好相反。例如在我们这个例子中,应用程序每次读
取数据,将获得65字节的数据,第一字节是用途ID,为0。
后面的才是我们的设备返回的64字节数据。同样,发送数据
时,要发送65字节,第一字节为用途ID,实际发送到USB设备
的数据是64字节。这个过程我们在BUS HOUND上也可以看到,
并且也可以看到“HID-compliant device”是位于“USB 人体学
输入设备”之下的。
下面这个程序就是圈圈在万利的STM32板上实现的自定义
HID设备。它使用了端点1的输入和输出,作为中断端点,端点
大小为64字节。这个仅是一个示例,它仅是简单的接收数据并
保存在OutBuffer中。当摇动摇杆时,就发送64字节一样的数据
到PC。具体的应用可由用户自己来决定。下载下面这个压缩
包,解压到Manley\EKBoard\EKSTM32F\USBDemo(8M osc)
\USBDemo\USBLib\demos目录下,然后编译,烧写调试即可。
下面这个压缩包是一个测试程序,可以用来测试HID设备。
填好VID和PID之后,再点击“find my device”,然后点
“once”,就会发送数据出去,同时试图读回数据。
这时摇动开发板上的摇杆,就会返回数据。每按一次,数据增加1。
本测试程序的源代码可从这里下载:http://group.ednchina.com/93/8769.aspx
看了之后记得点一下左上角的“顶一下”,支持一下圈圈,
给圈圈投一票,谢谢了!
用户377235 2014-12-9 12:10
用户377235 2013-7-26 09:17
用户324358 2010-9-30 17:12
computer00 2009-5-15 22:51
用户197234 2009-5-13 16:08
computer00 2008-11-4 23:57
用户390808 2008-11-4 11:15
computer00 2008-9-20 13:34
用户1572896 2008-9-20 11:53
computer00 2008-9-16 15:44