目录前言USB设备类别未定义设备设备描述符/配置描述符分析配置从机类型配置设备专用的描述符配置从机端点实现设备类特定请求HID设备特点HID键盘描述符实例HID报文描述符短条目报文生成HID键盘报文描述符实例总结CDC设备特点CDC-ACM虚拟串口描述符实例类特定请求USB组合设备实现思路代码实例前言文章中的部分概念可参考第9课【USB协议】USB总线接口端点管道数据包枚举STM32_USB-FS-Device_LibV4.1.0USB设备类别USB协议中为了提供对多样设备的支持,定义了许多外部设备子类,常见的包括:人机交互类设备HID(HumanInterfaceDevice)通信类设备CD
之前使用kingst的逻辑分析仪,打开上位机软件,插上带usb的硬件就可以通信,也不需要打开串口什么的,感觉很方便,于是借用一个周末研究下这个技术。本文主要是用于记录自己学习的过程,顺便分享下学习感悟。首先初略说下大体是怎么回事,就是单片机使用hid功能需要配置VIDPID,这两个相当于设备地址,配置好之后上位机根据这两个地址找到你的单片机,就可以通信了,就这么简单。1.通过CUBEMX配置stm32的usb功能 图1 图2 2.填写HID报告描述符,USB_DEVICE/App/下打开usbd_custom_hid_if.c文件中。这个地方有很多要说的,先直接上单片机配置的代码。__AL
图书馆应该;易于使用,几行客户端代码就能完成很多工作尽可能独立于平台。(以防将来移植到其他平台)拥有C++绑定(bind)。成熟稳重我还希望通过回调获得大多数HID事件的通知。我考虑过以下替代方案:libhid-(很遗憾?)这是GPL,不能在我的应用程序中使用。WDK-对我来说似乎有点低级。我不需要那种控制。atusbhid-这具有适当的抽象级别,但它与Windows消息传递循环紧密相关还有其他选择吗? 最佳答案 看看hidapi:它是C,它回答了C++绑定(bind)问题(有效:)),是跨平台的,并且具有非常宽松的许可证。它似乎没
图书馆应该;易于使用,几行客户端代码就能完成很多工作尽可能独立于平台。(以防将来移植到其他平台)拥有C++绑定(bind)。成熟稳重我还希望通过回调获得大多数HID事件的通知。我考虑过以下替代方案:libhid-(很遗憾?)这是GPL,不能在我的应用程序中使用。WDK-对我来说似乎有点低级。我不需要那种控制。atusbhid-这具有适当的抽象级别,但它与Windows消息传递循环紧密相关还有其他选择吗? 最佳答案 看看hidapi:它是C,它回答了C++绑定(bind)问题(有效:)),是跨平台的,并且具有非常宽松的许可证。它似乎没
我正在尝试与相当特定的USB设备通信,并同时开发Windows和Mac代码。该设备是具有HID接口(interface)(3类)的USB设备,该设备具有两个端点,一个中断输入和一个中断输出。设备的性质是,仅当从主机请求数据时,才在输入端点上从设备发送数据:主机向其发送数据,设备在其输入中断端点上做出响应。将数据获取到设备(写入)要简单得多...Windows的代码非常简单:我得到了设备的句柄,然后调用ReadFile或WriteFile。显然,许多底层的异步行为已被抽象出来。它似乎工作正常。但是,在Mac上,它有点粘性。我尝试了很多事情,没有一个完全成功,但是下面两件事似乎最有希望..
我正在尝试与相当特定的USB设备通信,并同时开发Windows和Mac代码。该设备是具有HID接口(interface)(3类)的USB设备,该设备具有两个端点,一个中断输入和一个中断输出。设备的性质是,仅当从主机请求数据时,才在输入端点上从设备发送数据:主机向其发送数据,设备在其输入中断端点上做出响应。将数据获取到设备(写入)要简单得多...Windows的代码非常简单:我得到了设备的句柄,然后调用ReadFile或WriteFile。显然,许多底层的异步行为已被抽象出来。它似乎工作正常。但是,在Mac上,它有点粘性。我尝试了很多事情,没有一个完全成功,但是下面两件事似乎最有希望..
前端与硬件交互的三个api文档说明webusbApiwebSerialApiwebHidApiwebHidvue技术栈使用webHid原生js使用文档说明好久没有更新文档了,闲下来没事的时候,更新一篇最近开发的一个与硬件交互的文档心得。请注意看下面的描述,可能对你选择哪种开发是比较有用处的该文档主要讲述了,前端开发人员也是可以直接通过一些webApi与硬件进行交互。webSerial(串口,下文中说到的串口,就是这个Api)与webHid(hid,同串口一样,下文用hid替代)这两个Api是基于webUsb进一层的封装,这些都是网页封装好的,只需要知道,现在与硬件交互的有这三种Api即可。串口
目录前言设备描述符配置描述符配置描述符接口描述符HID描述符端点描述符HID类报表描述符输入输出数据解析其他前言 看了稚辉君的瀚文键盘的源码之后对于键盘全键无冲的实现还是存在很多疑问。1、HID报表描述符的内容到底什么意思?2、瀚文源码里的键值映射函数最终生成的报表不理解。然后就从头开始研究了一下USB。对着描述符里的每一个参数找资料,把所有描述符都对一遍。现在已经大概理解了全键无冲键盘的配置方式和报表含义。 实践选用的是沁恒的CH573F,这颗芯片支持USB2.0Host和Device,支持最大64字节数据包。在官网下载他们的官方Demo,并在USBDevice里面找到Compo
我们要求STM32芯片的usb和windows电脑的USB接口进行连接,然后STM32芯片发送usb数据给windows电脑,实现电脑上按下一个f按键的效果。下面开始操作:使用STM32CubeMX生成代码,先选择对应的usb口然后选择第三方软件,选择HID然后点击生成代码,这时候就会生成usbd_hid.c相关的代码。并且默认生成的是鼠标设备的代码。代码中自动生成了usb设备初始化MX_USB_DEVICE_Init();这个初始化会初始化usb句柄hUsbDeviceFS。初始化之后,可以调用接口发送usb设备报告。例如:先定义变量,以及外部引用usb句柄uint8_tCmdOutBuf[
我试图通过我的Java程序向它发送HID数据包来设置我的RGB键盘的LED,找到JavaHIDAPI包装器here.到目前为止,我已经取得了成功,但仅限于我的Linux笔记本电脑。当我尝试在Windows上运行代码时,出现错误“无效函数”,我假设它等同于系统错误0x1,ERROR_INVALID_FUNCTION.这段示例代码不会在Windows上运行,但会在Linux上运行。(当它从终端运行并在命令前加上“sudo”时。)//Deviceisfoundpriortothis...if(device!=null){device.disableBlocking();//Initialis