在该文中所使用的范例即为整合鼠标的键盘装置,只是仅列出一个接口描述符(即编号为0x00 的键盘接口),另一个编号为0x01 的鼠标接口在该文中没有列出,读者可以自行参考本文所附的描述符程序代码descriptor.asm(即在标记为 interface_descriptor01,hid_descriptor01,和endpoint_descriptor01 处)。 表8:范例的输入报告...
HID是一种USB通信协议,无需安装驱动就能进行交互,在学习HID之前,先来复习一下USB协议的相关内容。 USB设备描述符-概述 当插入USB设备后,主机会向设备请求各种描述符来识别设备。那什么是设备描述符呢? Descriptor即描述符,是一个完整的数据结构,可以通过C语言等编程实现,并存储在USB设备中,用于描述一个USB设备的所...
BYTE bDescriptorType; //描述符类型编号,为0x04 BYTE bInterfaceNunber; //接口的编号 BYTE bAlternateSetting;//备用的接口描述符编号 BYTE bNumEndpoints; //该接口使用端点数,不包括端点0 BYTE bInterfaceClass; //接口类型 HID设备此值为0x03 BYTE bInterfaceSubClass;//接口子类型 HID设备此值为0或者1 ...
x, /* bDescriptorType: 报告描述符类型 /CUSTOMHID_SIZ_REPORT_DESC, / wItemLength: 报告描述符的总长度 */在USB通信的HID描述符解析中,除了bCountryCode这一关键字段外,还需要关注其他字段,如bNumDescriptors和bDescriptorType。其中,bDescriptorType字段用于标识描述符的类型,而报告描述符(Report Descriptor...
HID Report主要使用中断和控制两种传输;其中,中断传输主要 用于低时延场合比如按键或者鼠标的移动,而控制传输主要用于对时延要求不高的场合比如键盘上的大小写状态灯或者数字键盘锁定状态灯等等。 HID transaction 如前所述,HID Report主要使用中断传输向主机发送有时延要求的数据,下面以中断传输为例看一下具体流程如下图...
USB报告描述符(Report Descriptor)是HID设备中的一个描述符,它是比较复杂的一个描述符。 USB HID设备是通过报告来给传送数据的,报告有输入报告和输出报告。输入报告是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据数据返回给电脑等;输出报告是主机发送给USB设...
USB描述符信息存储在USB设备中,在枚举过程中,USB主机会向USB设备发送GetDescriptor请求,USB设备在收到这个请求之后,会将USB描述符信息返回给USB主机,USB主机分析返回来的数据,判断出该设备是哪一种USB设备,建立相应的数据链接通道。 USB描述符的内容 标准的USB设备总共包括五种USB描述符:设备描述符,配置描述符,接口描...
USB_HID_Descriptor #include"USB_HID_Descriptor.H" #include"USB.h" codeDEVICE_DESCRIPTORDeviceDesc= { 18,//bLength 0x01,//bDescriptorType SWAP16(0x0200),//bcdUSB 0x00,//bDeviceClass 0x00,//bDeviceSubClass 0x00,//bDeviceProtocol EP0_PACKET_SIZE,//bMaxPacketSize0 SWAP16(USB_HID_VID)...
SWAP16(USB_HID_VID),//idVendor SWAP16(USB_HID_PID),//idProduct 0x0001,//bcdDevice 0x01,//iManufacturer 0x02,//iProduct 0x03,//iSerialNumber 0x01//bNumConfigurations };//endofDeviceDesc //Reportdescriptor codeunsignedcharReportDesc[]= ...
HID描述符 hid2Desc: ; Custom HID descriptor DB hid2DescEnd - hid2Desc ; bLength DB DES...