USB-HID的介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了USB-HID的介绍相关的知识,希望对你有一定的参考价值。

参考技术A

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

如何与 Windows 上的 USB-HID 设备通信?

【中文标题】如何与 Windows 上的 USB-HID 设备通信?【英文标题】:How to communicate to USB-HID device on windows? 【发布时间】:2013-08-10 06:04:38 【问题描述】:

我不是 Windows 专家,也没有 Windows 驱动程序的开发经验,但在 Linux 中也做过同样的事情。

我的系统: 我有一个被 Windows 识别为数字化仪的 HID 设备(触摸屏),并且一切正常(不需要额外的驱动程序)。 HID 使用接口 0 和基于中断的 IN 端点(就像在任何 HID 设备中一样),并且触摸信息在此接口上发送到 Windows。我有另一个接口 1,它有一个 OUT 和 IN 中断端点,可以发送 64 字节的数据。作为所有 USB 设备,我有 End Point 0 来发送控制传输。

我的问题 我必须通过接口 0、接口 1 和控制端点与此设备通信,以升级触摸芯片的固件和一些诊断参数。 我在 Linux 中使用 libusb 轻松完成所有这些事情。但是windows我什么都做不了。也请在这里查看我的努力libusb_open returns 'LIBUSB_ERROR_NOT_SUPPORTED' on Windows 7

我想用 Qt 和一些基于 USB 的驱动程序构建一个工具。任何人都可以请建议我可以用于 USB 通信的最佳接口吗?有什么方法可以使用 MINGW 吗?

【问题讨论】:

【参考方案1】:

你可以使用libusb-win32,它的API兼容Linux中的libusb-0.1。但是您必须安装驱动程序 - 在您的情况下,您可能需要驱动程序的过滤器版本,以便能够像往常一样在您的操作系统中使用 HID 功能。 Libusb-win32 附带一个用于创建驱动程序的向导,它将为设备生成.inf 文件。

驱动程序安装会很棘手:不会提示用户为 HID 兼容设备安装驱动程序。

【讨论】:

以上是关于USB-HID的介绍的主要内容,如果未能解决你的问题,请参考以下文章

MicroPython开发板TPYBoard关于USB-HID的应用

利用WHID为隔离主机建立隐秘通道

创建线程消息循环服务于动态连接库

linux USB 编程

C++屏蔽键盘,而保留扫描枪,如何写代码?

洋码头消息总线架构