求救!!usb hid设备(模拟键盘)遇到的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求救!!usb hid设备(模拟键盘)遇到的问题相关的知识,希望对你有一定的参考价值。

我们知道hid设备通过中断传输与pc机进行通信,现在我的列举方面成功,但没有实现存在51内存中的数据通过中断传输传给PC机。
会有哪些因素会影响中断数据传输?
我所想到的是:1.hid的报告描述符。2.endpoint描述符。还有吗?
大家在帮我看看hid的报告描述符和endpoint描述符有问题吗?
这是端点(endpoint)描述符

// Interrupt-In with 8 bytes FIFO

0x07, // 0: bLength Endpoint Description Size = 0x07
0x05, // 1: bDescriptorType Endpoint Description = 0x05
0x81, // 2: bEndpointerAddress
// D7: Direction(0:OUT, 1:IN)
// D6..4: Reserved (reset to 0)
// D3..0: Endpoint Number(0000-1111)
0x03, // 3: bmAttributes
// D7..2: Reserved (reset to 0)
// D1..0: Transfer Type(00:Control,01:Iso,02:Bulk,03:Int
0x0800, // 4: wPacketSize
0x0A // 6: bInterval (Unit 10ms)
// Isochronous Endpoint: 0x01
// Interrupt Endpoint: 0x01-0xff

hid的数据要通过报告描述符,
0x05,0x01,//用法页,表示用途页为通用桌面设备
0x09,0x06,//用法(供应商用法)表示用途为键盘
0xA1,0x01,//集合开始

0x05,0x07,//表示用途页为按键
0x19,0xE0,//用途最小值,这里为左ctrl键
0x29,0xE7,//用途最大值,这里为右GUI键,即window键
0x15,0x00,//逻辑最小值(0)
0x25,0x01,//逻辑最大值(1)
0x75,0x01,//报告大小(即这个字段的宽度)为1bit,所以前面的逻辑最小值为0,逻辑

最大值为1

0x95,0x08,//报告计数(8)//报告的个数为8,即总共有8个bits
0x81,0x02,//报告in(2) //输入用,变量,值,绝对值。像键盘这类一般报告绝对值


//而鼠标移动这样的则

报告相对值,表示鼠标移动多少
//INPUT

(Data,Var,Abs)

0x95,0x01,//报告计数(1)//这样的数据段个数为1,REPORT_COUNT (1)
0x75,0x08,//报告大小(8) REPORT_SIZE (8)
0x81,0x03,//报告in(1)

0x95,0x05,//报告计数(5)
0x75,0x01,//报告大小(1)
0x05,0x08,//用途是LED,即用来控制键盘上的LED用的,因此下面会说明它是输出用
0x19,0x01, //用途最小值是Num Lock,即数字键锁定灯
0x29,0x05,
0x91,0x02,//报告out(2)//1表示灯亮,0表示灯灭

0x95,0x01,//报告计数(1)
0x75,0x03,//报告大小(3)
0x91,0x01,//报告out(1)

0x95,0x01,//报告计数(6)
0x75,0x08,//报告大小(8)
0x15,0x00,//逻辑最小值(0)
0x25,0xFF,//逻辑最大值(255)
0x05,0x07,
0x19,0x00,
0x29,0xFF,
0x81,0x00,//报告in(0)
0xC0//集合结束*/

参考技术A ?头痛!!

USB-HID的介绍

参考技术A

是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。交换的数据存储在称为报表(report)的结构内,设备的固件必须支持HID报表的格式。主机在控制与中断传输中传送与要求报表,来传送与接收数据。报表的格式非常有弹性,可以处理任何类别的数据。设备除了HID接口之外,它可能同时还包含有其他的USB接口。例如影像显示设备可能使用HID接口来做亮度,对比,与更新率的软件控制,而使用传统的影 像接口来传送要显示的数据。USB扩音器可以使用实时传输来播放语音,同时使用HID接口来控制音量,震荡,与低音等。HID接口通常比传统的控制接口来得便宜。

以上是关于求救!!usb hid设备(模拟键盘)遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何从 USB HID 设备读取输入?

技巧.在虚拟机Vmware中使用HID设备(如USB免驱键盘)

62 stm32 usb自定义hid复合设备修改实验

62 stm32 usb自定义hid复合设备修改实验

62 stm32 usb自定义hid复合设备修改实验

RK3399平台开发系列讲解(高速设备驱动篇)6.61USB如何模拟HID设备