STM32CubeMX中两种USB HID设备类的区别?

我想用STM32CubeMX代码生成工具生成USB的HID设备类驱动代码,发现在USB DEVICE下拉列表框选项中,有2中HID设备类选项可以选择,分别是Custom Human Interface Device Class和Human Interface Device Class,我查了USB官网上对USB设备类的列表,发现只有Human Interface Device Class这一种标准HID类设备。那么,工具中的Custom Human Interface Device Class是什么类型的HID设备呢?是否是用户可以自定义的HID类设备,它跟标准的HID类设备有什么异同?有没有这方面的资料可供参考呢?
STM32CubeMX中所支持的USB设备类

0

1个回答

Compound Device内嵌Hub和多个Function,每个Function都相当于一个独立的USB外设,有自己的PID/VID/DID。
Composite Device内只有一个Function,只有一套PID/VID/DID,通过将不同的interface定义为不同的类来实现
多个功能的组合。

Compound Device内嵌Hub和多个Function,每个Function都相当于一个独立的USB外设,有自己的PID/VID/DID。

Composite Device内只有一个Function,只有一套PID/VID/DID,通过将不同的interface定义为不同的类来实现多个功能的组
合。

很多人认为一个USB接口上实现多个设备,就是指复合设备,其实,这是不确切的,虽然USB Compound Device和USB Composite Device
都会被百度翻译为USB复合设备。

在一个USB接口上实现多个设备有2中方法,一种是Compound Device,就是复合设备;另一种是Composite Device,就是组合设备。

在USB2.0的标准协议中,定义如下:

When multiple functions are combined with a hub in a single package, they are referred to as a compound device.



A device that has multiple interfaces controlled independently of each other is referred to as a



composite device.
所以,复合设备其实就是几个设备通过一个USB Hub形成的单一设备;组合设备也就是具有多个接口的设备,每个接口代表一个独立的设备。

显然,如果是想同样的功能的话,组合设备的方法要简单很多(可以去看一下USB2.0协议中,USB2.0 Hub的复杂度)。

STM32F103实现的USB转多路串口,属于USB Composite Device,不内嵌Hub,三个CDC设备的PID和VID都是相同。

USB设备可以定义一个复合设备,复合设备分两种,一种是一个设备多个配置,还有一种是一个配置多个接口,在本例中采用一个配置多个接口的方式

首先修改设备描述符,标准设备描述符和报告描述符都不需要修改,只需要修改配置描述符即可

//usb配置描述符

const u8 DinkUsbConfigDescriptor[DINK_USB_SIZ_CONFIG_DESC] = {

/***************配置描述符***********************/

USB_CONFIGUARTION_DESC_SIZE, //bLength字段。配置描述符的长度为9字节。

USB_CONFIGURATION_DESCRIPTOR_TYPE, //bDescriptorType字段。配置描述符编号为0x02。

//wTotalLength字段。配置描述符集合的总长度,

//包括配置描述符本身、接口描述符、类描述符、端点描述符等。

WBVAL(

USB_CONFIGUARTION_DESC_SIZE + //配置描述符

USB_INTERFACE_DESC_SIZE + //接口1描述符

+ //hid描述符

USB_ENDPOINT_DESC_SIZE + //端点描述符

USB_ENDPOINT_DESC_SIZE + //端点描述符

USB_INTERFACE_DESC_SIZE + //接口描述符2

USB_ENDPOINT_DESC_SIZE + //端点描述符1

USB_ENDPOINT_DESC_SIZE //端点描述符2

),

0x02, //bNumInterfaces字段。该配置包含的接口数,复合设备,两个接口。

0x01, //bConfiguration字段。该配置的值为1。

0x00, //iConfigurationz字段,该配置的字符串索引。这里没有,为0。

USB_CONFIG_BUS_POWERED , //bmAttributes字段,该设备的属性

USB_CONFIG_POWER_MA(500), //bMaxPower字段,该设备需要的最大电流量



/*********************第一个接口描述符,hid设备**********************/

USB_INTERFACE_DESC_SIZE, //bLength字段。接口描述符的长度为9字节。

USB_INTERFACE_DESCRIPTOR_TYPE, //bDescriptorType字段。接口描述符的编号为0x04。

0x00, //bInterfaceNumber字段。该接口的编号,第一个接口,编号为0。

0x00, //bAlternateSetting字段。该接口的备用编号,为0。

0x02, //bNumEndpoints字段。非0端点的数目。该接口有2个批量端点



USB_DEVICE_CLASS_HUMAN_INTERFACE, //bInterfaceClass字段。该接口所使用的类。大容量存储设备接口类的代码为0x08。,



0x00, //bInterfaceSubClass字段。该接口所使用的子类。在HID1.1协议中,

//只规定了一种子类:支持BIOS引导启动的子类。

//USB键盘、鼠标属于该子类,子类代码为0x01。

//但这里我们是自定义的HID设备,所以不使用子类。



0x00, //bInterfaceProtocol字段。如果子类为支持引导启动的子类,

//则协议可选择鼠标和键盘。键盘代码为0x01,鼠标代码为0x02。

//自定义的HID设备,也不使用协议。



0x00, //iConfiguration字段。该接口的字符串索引值。这里没有,为0。



/*********************HID报告描述符*************************/

//bLength字段。本HID描述符下只有一个下级描述符。所以长度为9字节。

0x09,



//bDescriptorType字段。HID描述符的编号为0x21。

0x21,



//bcdHID字段。本协议使用的HID1.1协议。注意低字节在先。

0x10,

0x01,



//bCountyCode字段。设备适用的国家代码,这里选择为美国,代码0x21。

0x21,



//bNumDescriptors字段。下级描述符的数目。我们只有一个报告描述符。

0x01,



//bDescriptorType字段。下级描述符的类型,为报告描述符,编号为0x22。

0x22,



//bDescriptorLength字段。下级描述符的长度。下级描述符为报告描述符。

sizeof(HID_ReportDescriptor)&0xFF,

(sizeof(HID_ReportDescriptor)>>8)&0xFF,

/*********************端点描述符**********************************/

/* 端点描述符 /

USB_ENDPOINT_DESC_SIZE, //bLength字段。端点描述符长度为7字节。

USB_ENDPOINT_DESCRIPTOR_TYPE, //bDescriptorType字段。端点描述符编号为0x05。

USB_ENDPOINT_IN(1), //bEndpointAddress字段。端点的地址。我们使用D12的输入端点1。

USB_ENDPOINT_TYPE_INTERRUPT, //bmAttributes字段。D1~D0为端点传输类型选择。

WBVAL(0x0040), //wMaxPacketSize字段。该端点的最大包长。最大包长为64字节。

0x01, //bInterval字段。端点查询的时间,端点查询的时间,此处无意义。

/
**********************端点描述符*******************************************/

USB_ENDPOINT_DESC_SIZE, //bLength字段。端点描述符长度为7字节。

USB_ENDPOINT_DESCRIPTOR_TYPE, //bDescriptorType字段。端点描述符编号为0x05。

USB_ENDPOINT_OUT(1), //bEndpointAddress字段。端点的地址。我们使用D12的输入端点1。

USB_ENDPOINT_TYPE_INTERRUPT, //bmAttributes字段。D1~D0为端点传输类型选择。

WBVAL(0x0040), //wMaxPacketSize字段。该端点的最大包长。最大包长为64字节。

0x01, //bInterval字段。端点查询的时间,端点查询的时间,此处无意义。

/*******************第二个接口描述符 存储设备*********************/

USB_INTERFACE_DESC_SIZE, //bLength字段。接口描述符的长度为9字节。

USB_INTERFACE_DESCRIPTOR_TYPE, //bDescriptorType字段。接口描述符的编号为0x04。

0x01, //bInterfaceNumber字段。该接口的编号,第二个接口,编号为1。

0x00, //bAlternateSetting字段。该接口的备用编号,为0。

0x02, //bNumEndpoints字段。非0端点的数目。该接口有2个批量端点



USB_DEVICE_CLASS_STORAGE, //bInterfaceClass字段。该接口所使用的类。大容量存储设备接口类的代码为0x08。,

MSC_SUBCLASS_SCSI, //bInterfaceSubClass字段。SCSI透明命令集的子类代码为0x06。

MSC_PROTOCOL_BULK_ONLY, //bInterfaceProtocol字段。协议为仅批量传输,代码为0x50。

0x04, //iConfiguration字段。该接口的字符串索引值



/************************************* 端点描述符 *********************************************/

USB_ENDPOINT_DESC_SIZE, //bLength字段。端点描述符长度为7字节。

USB_ENDPOINT_DESCRIPTOR_TYPE, //bDescriptorType字段。端点描述符编号为0x05。

USB_ENDPOINT_IN(2), //bEndpointAddress字段。端点的地址。我们使用D12的输入端点1。

USB_ENDPOINT_TYPE_BULK, //bmAttributes字段。D1~D0为端点传输类型选择。

WBVAL(0x0040), //wMaxPacketSize字段。该端点的最大包长。最大包长为64字节。

0x00, //bInterval字段。端点查询的时间,端点查询的时间,此处无意义。



/************************************端点描述符********************************************************/

USB_ENDPOINT_DESC_SIZE, //bLength字段。端点描述符长度为7字节。

USB_ENDPOINT_DESCRIPTOR_TYPE, //bDescriptorType字段。端点描述符编号为0x05。

USB_ENDPOINT_OUT(2), //bEndpointAddress字段。端点的地址。我们使用D12的输入端点1。

USB_ENDPOINT_TYPE_BULK, //bmAttributes字段。D1~D0为端点传输类型选择。

WBVAL(0x0040), //wMaxPacketSize字段。该端点的最大包长。最大包长为64字节。

0x00, //bInterval字段。端点查询的时间,端点查询的时间,此处无意义。

};
修改描述符之后要同时记得修改描述符的长度,然后修改usb_prop文件,主要是两个多出来的命令GET_MAX_LEN用来获取当前存储设备的个数,还有一个用来复位当前存储设备,如下

RESULT DinkUsbData_Setup(u8 RequestNo)

{

u8 (*CopyRoutine)(u16);



CopyRoutine = NULL;

if ((RequestNo == GET_DESCRIPTOR)

&& (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT))

&& (pInformation->USBwIndex0 == 0))

{

//获取报告描述符

if (pInformation->USBwValue1 == REPORT_DESCRIPTOR)

{

CopyRoutine = DinkUsbGetReportDescriptor;

}

//获取HID描述符

else if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE)

{

CopyRoutine = DinkUsbGetHIDDescriptor;

}



}

/
** GET_PROTOCOL ***/

else if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))

&& RequestNo == GET_PROTOCOL)

{

CopyRoutine = DinkUsbGetProtocolValue;//获取协议值

}

else if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT))

&& (RequestNo == GET_MAX_LUN) && (pInformation->USBwValue == 0)

&& (pInformation->USBwIndex == 0) && (pInformation->USBwLength == 0x01))

{

CopyRoutine = Get_Max_Lun;

}





if (CopyRoutine == NULL)

{

return USB_UNSUPPORT;

}



pInformation->Ctrl_Info.CopyData = CopyRoutine;

pInformation->Ctrl_Info.Usb_wOffset = 0;

(*CopyRoutine)(0);

return USB_SUCCESS;

}
GET_MAX_LEN的函数体为

u8 Get_Max_Lun(u16 Length)

{

if (Length == 0)

{

pInformation->Ctrl_Info.Usb_wLength = LUN_DATA_LENGTH;

return 0;

}

else

{

return((u8
)(&Max_Lun));

}

}

0
renjiajin
renjiajin 回复zzzw0: 是的,浪费别人时间!
4 个月之前 回复
zzzw0
zzzw0 答非所问,不知道从哪复制过来的,浪费我时间看完了
8 个月之前 回复
polarisyj86
polarisyj86 我这个当然是一个composite device,通过定义不同的类,使用多个interface来实现不同的功能,所以说,那两个HID类有什么区别呢?
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
【STM32】【USB】使用STM32CubeMx配置HID模式,电脑无法识别USB设备的问题分析
使用STM32CubeMx工具配置STM32F103ZE芯片,在HID模式下,电脑不能识别到USB设备。经分析跟DP线有关。 硬件板的设计是 STM32F103ZE芯片+FE2_QFP48(USB hub芯片)。 其中: PA11-->USB_DM PA12-->USB_DP PG8-->USB_CTRL(CTRL=1时DP悬空,CTRL=0时DP被上拉) 若想使电脑...
STM32CubeMx的(stm32f103c8t6)USB复合键盘鼠标个interface两个设备
使用STM32CubeMx软件生成(经过修改)的stm32 usb复合设备HID键盘鼠标,stm32f103c8t6工程MDK,直接编译使用
STM32 RBT6 USB复合设备,HID鼠标 HID键盘 两个Interface
STM32 RBT6 USB复合设备,HID鼠标 HID键盘 两个Interface 可学习如何建立USB多Interface复合设备
2--STM32+USB移植+HID 与AUDIO类MIDI设备组成的复合设备
前期准备: 一、硬件资源:STM32F103,USB-FS固件库。 链接: STM32 之 标准外设版USB驱动库详解(架构+文件+函数+使用说明+示例程序) https://blog.csdn.net/ZCShouCSDN/article/details/78936456?utm_source=blogxgwz1 二、调试软件:usbtrace3.0或者BusHound,用于看USB设...
USB 协议分析之 HID 设备
1. 简述         USB HID类是USB设备的一个标准设备类,包括的设备非常多。HID类设备定义它属于人机交互操作的设备,用于控制计算机操作的一些方面,如USB鼠标、USB键盘、USB游戏操纵杆等。但HID设备类不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。    USB HID设备的一个好处就是操作系统自带了HID类的驱动程序,而用户无需去开发驱动程序,只要使用...
第四章:STM32MxCube生成USB程序---模拟键盘(从机)
234567890-=
STM32 HAL库学习(六)USB识别成Custom HID通信
一、STM32F070 USB基础知识了解: STM32F070 USB采用USB 2.0规范,时钟频率为48MHZ,有一个专用的USB数据存储区,大小为1024字节;支持16个单向传输端点、8个双向传输端点 USB外设模块构成图: USB物理接口模块: USB_DM、USB_DP —— 数据正、负信号 Analog Transceiver —— 模拟收发器 Embedded pu...
从零开始学USB(十九、USB接口HID类设备(一)_HID描述符)
USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘等,主要用于人与计算机进行交互。它是USB协议最早支持的一种设备类。HID设备可以作为低速、 全速、高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断方式。 在USB协议中,HID设备的定义放置在接口描述符中,USB的设备描述符和配置描述符中不包含H...
STM32 USB HID 组合设备(配置多个接口)
USB Compound Device,USB复合设备 USB Composite Device,USB组合设备   USB Composite Device,不内嵌Hub,几个设备的PID和VID都是相同。   此文均在STM32F767IGTx已实现普通custom HID工程上做解释。 //usb配置描述符 /* USB CUSTOM_HID device Configurati...
通过STM32CUbeMX建立USB HID的双向通讯
通过STM32CUbeMX建立USB HID的双向通讯 通过STM32CUbeMX建立USB HID的双向通讯 通过STM32CUbeMX建立USB HID的双向通讯 通过STM32CUbeMX建立USB HID的双向通讯
HID设备类详解
HID设备类 Base Class 03h (HID – Human Interface Device) This base class is defined for devices that conform to the HID Device Class Specification found on the USB-IF website. That specification d
USB_c++HID设备GUID内的定义。。
PSP_DEVICE_INTERFACE_DETAIL_DATA SP_DEVICE_INTERFACE_DETAIL_DATA 看出这两个的区别了么?具体是什么区别呢?
VC 识别USB HID设备
遇到问题:和http://bbs.csdn.net/topics/190065205论坛中一样,不过前辈是2007年遇到的。。。 有一个USB设备,在设备管理器中显示为一个磁盘驱动器,但是它是没有盘符的, 在OnDeviceChange中,当这个设备插入或者拔插的时候产生多个DBT_DEVNODES_CHANGED, 而DBT_DEVICEARRIVAL, DBT_DEVICEREMOVECOM
第三章:STM32MxCube生成USB程序---模拟鼠标(从机)
2134567890-
操作HID类设备
易语言操作HID的类 支持库,只可读不可写
USB复合设备调试 STM32
空间STM32 USB复合设备调试过程,复合设备一般要用到IAD(接口关联描述符),但是我在网上下载的几个例程都没有用到IAD,最后发现如果USB复合设备只用到两个接口,即复合的两个功能(MSC & HID)各占用一个接口,这种情况是不需要用IAD的。我是这样做的:直接在ST提供的MSC例程上修改,在MSC的配置描述符后面添加一个interface(HID接口),接口描述符不熟悉,直接在网...
USB-HID设备协议解读
   参考文献:Device Class Definition for Human Interface Devices(HID) 用于描述HID功能特征的有三个值:Class   SubClass   Interfaces Subclass Code Description    0    No Subclass    1    Boot Interface Subclass    2 - 2...
USB之(四)HID设备类协议
USB HID类设备属于人机交互操作的设备,是一个比较大的类,用于控制计算机操作的某些方面,如USB鼠标、USB键盘、USB游戏操作杆、USB触摸板、USB轨迹球、电话拨号设备、VCR遥控等等设备。另外,使用HID设备的一个好处就是操作系统自带了HID类的驱动程序,用户无需开发很麻烦的驱动程序,只有直接使用API调用即可完成通信,所有很多简单的USB设备喜欢枚举成HID设备,这样就可以不用安装驱动
Linux驱动学习(3) 驱动模型简介之usbhid和hid-generic驱动区别
驱动模型简介之usbhid和hid-generic驱动区别 参考书籍:《LINUX设备驱动程序》 (一)驱动模型简介,三个重要结概念总线,设备,驱动 1.总线: a、处理器与单个或多个设备通信的通道 b、可以互相插入 表示结构体 bus_type { var: name //名字 subsystem //子系统,常常是自己 devices//此总线上添加的设备 drivers//此总线上添加的驱动...
利用windows ApI函数来实现与符合HID设备类的USB接口通信
利用windows ApI函数来实现与符合HID设备类的USB接口通信,主要概述用VC++编写USB通信接口的实现方法
USB虚拟串口+HID键盘复合设备开发详解(VCP+HID Composite)
一.USB描述符修改 USB描述符包括设备描述符(DeviceDescriptor)、配置描述符(ConfigDescriptor)、HID报告描述符(CustomHID_ReportDescriptor)、字符串描述符。 1.设备描述符--基本固定,不需要怎么修改。一般复合设备和非复合设备要修改bDeviceClass、bDeviceSubClass、bDeviceProtocol这3个的值...
从零开始学USB(二十四、USB接口HID类设备(六)_物理描述符)
物理描述符也称作实体描述符。被用来描述设备的行为特性。 物理描述符是一种数据结构,它提供有关激活控件或控件的人体特定部分的信息。 例如,物理描述符可能指示右手拇指用于激活按钮5.应用程序可以使用此信息将功能分配给设备的控件。 物理描述符完全是可选的。 它们增加了复杂性,并且对大多数设备提供的回报很少。 但是,某些设备,特别是那些具有大量相同控件的设备(例如按钮)会发现物理描述符可以帮助不同的应...
自定义USB-HID设备_笔记
参考圈圈教程: 在USB键盘的描述符基础上做如下修改: 1、Device Descriptor :修改PID/VID ; 2、Configuration Descriptor :修改 Interface Descriptor中的 bInterfaceSubClass 字段和bInterfaceProtocol字段改为 0 ;(自定义HID不使用子类和协议) 3、HID Report Des
USB CDC从理论到实践
本文摘自ST官网的“USB CDC类入门培训”。整理的内容是我能够看得懂的,认为比较实用的,记录下来,以便以后查阅,同时也把原文档中的笔误给更正了一下。若要看更详细的可以去ST技术文档中查看,链接为: http://bbs.21ic.com/forum.php?mod=viewthread&tid=726814&page=1&extra=#pid42250641 USB CDC类基础理论知识介
VB实现对HID类设备的读写
最近在看USB的HID类的设备的读写操作,前几天下了一个是用VC写的,由于本人对VC不是太懂,所以看起来比较吃力,而且修改起来也比较困难。呵呵,只怪自己VC太差。如果有用VB写的就好了。最近正好找到一个,VB写的,方便理解。也很容易改成自己HID的上位机
基于stm32的HID设备的bootloader设计
基于stm32的HID设备的自动识别以及bootloader的设计与跳转,本程序配合HID设备的上位机通讯软件使用,所有代码通过测试,都是ok的。
c#_HidUsb设备通信
baidu搜索c# HidUsb都是大同小异案例,而且拿下来基本不能用。大都是围绕public static extern int CreateFile(省略众多参数..); 发现没有,copy下来测试基本都是用不了的。 原因很简单:windows不允许你用程序随便就去访问硬件设备。所以在此把之前做过的基于C#开发的读写HidUsb设备的项目整理成一个简单的小案例,分享给大家,开发环境VS20...
HID描述符
1、hid设备描述符 USB设备中有一大类就是HID设备,即Human Interface Devices,人机接口设备。这类设备包括鼠标、键盘等,主要用于人与计算机进行交互。 它是USB协议最早支持的一种设备类。HID设备可以作为低速、 全速、高速设备用。由于HID设备要求用户输入能得到及时响应,故其传输方式通常采用中断方式。 在USB协议中,HID设备的定义放置在接口描述符中,USB的
STM32F407 USB 自定义HID实现代码
stm32f407 探索者开发板实现的 自定义 usb hid,实现收发,发送数据后,开发板将发送的数据回传,发送16字节数据,支持更大数据需要更改报告描述符即可,最大支持64字节
HID设备类
HID是Human Interface Devices的缩写,即人机接口设备。HID的一大优势就是操作系统已经内置了HID设备类驱动,一般不需要安装驱动程序。通用的HID设备可以直接使用HID设备类驱动程序(hidclass.sys)和HID小驱动程序(hidusb.sys)。1.HID设备的特点  HID设备类可以参考两个文档: USB Device Class Definition for
USB HID 调试助手 及 程序源码
USB HID 调试助手 及 程序源码; 自定义 HID 设备VID PID
实践 C++ MFC界面读写USB HID设备数据程序
在开发了一个多线程USB烧写程序后,得到新的任务,要将HID的内容放到里面,没有人带着做细致的讲解,靠自己自生自灭:   1, 什么是HID? (项目要的急,没有什么了解就开始了!只知道,在Windows->DeviceManager下面有时候找COM端口的时候,会去人体输入学设备里面找,里面有鼠标键盘之类的HID,具体是啥还不知道。)HID: 猜想是 Hardware ID,用来标记...
STM32 自定义USB HID 设备与上位机双向通信例程
基于STM32F103VC 与上位机双向通信的例子!请注意:本例是由网上例子修改并精简的,使用的是3.2的库。
USB Audio&hid 混合设备的描述符详解
/* USB Standard Device Descriptor */ __ALIGN_BEGIN uint8_t USBD_HS_DeviceDesc[USB_LEN_DEV_DESC] __ALIGN_END =   {     0x12,                       /*bLength */     USB_DESC_TYPE_DEVICE,       /*bDe
USB-HID设备中的复合设备
一、前言       最近在公司做Linux 底下的libusb开发,收获非常大,其中得到公司大神指点一下,对于HID 复合设备的理解更加深刻了,以至于在调试无论是调试Android 的USB-HOST、还是Windows 的usb 还是Linux 的libusb 都非常顺利,对于以前的一些不太懂的问题和一些函数的使用都有更深的理解,因此,必须写下这篇文章记录下来,防止以后忘记了,可以重新回来看看...
STM32 USB HID 自定义设备 bulk 传输
STM32 USB HID 自定义设备 bulk 传输ST(意法半导体公司)为STM32系列处理器编写了外设USB的库,并提供了很好的参考例程,本文就是参考ST提供的例程,在STM32F4 discovery板子上实现usb bulk传输。Host端是在linux平台上利用libusb库函数写的读写USB应用。本次实现在STM32 USB例程中的Device HID 鼠标例程基础上添加bulk传输端
STM32F407 USB通信程序 USB Device 虚拟串口 CDC类 Cubemx生成
STM32F407 USB通信源码,单片机做从设备,使用的CDC类进行数据传输,通信速率可接近理论极限值12Mbps,亲测可以使用!
java操作HID USB设备
java读写HID设备,封装好的API,直接可以使用发送接收数据.
C#写的读取USB HID设备的测试软件
是用C#写的读取USB HID设备的测试软件,输入VID、PIV,查找HID设备是否存在,如果存在,则读取指定的HID设备发来的数据。软件已测试,可以直接使用。(不可读取键盘、鼠标),只能读取自定义HID设备,同时可以自定义读取数据时的超时时间
从零开始学USB(二十三、USB接口HID类设备(五)_报表描述符总结)
在USB的枚举章节,主机获取的最后一个描述符时报表描述符。 因为当时没学习HID类的报表描述符,所以当时没分析,这边刚学完HID的报表描述符,趁热打铁,学习一下。 首先报表描述符的长度是,在获取HID描述符长度的时候获取的。 所以才能在获取报表描述符时使用准确的获取长度。   05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 03 15 00 ...
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo