问题标签 [hid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
12213 浏览

c++ - 找出哪个进程在 USB 设备句柄上有独占锁

我有一个使用 CreateFile() API 读取/写入 USB 设备的库。该设备恰好实现了 HID 设备配置文件,因此它与 Microsoft 的 HID 类驱动程序兼容。

系统上安装的其他一些应用程序正在以读/写模式打开设备,没有共享模式。这会阻止我的库(以及使用它的任何东西)使用该设备。我想这就是 HID 兼容设备的问题——其他驱动软件(鼠标、控制器、PHIDGETS 等)可能无法合作。

无论如何,设备文件路径的形式为:

我正在尝试使用代码打开它,例如:

我考虑过像 SysInternals 的 FileMon 或 Process Monitor 这样的工具。但我似乎无法让它报告上面列出的设备文件句柄的使用情况。

0 投票
6 回答
31563 浏览

c++ - 在 Windows 上与 USB HID 设备进行通信的最佳 USB 库是什么?

图书馆应该;

  • 易于使用,几行客户端代码就能完成很多工作
  • 尽可能独立于平台。(以防将来移植到其他平台)
  • 有 C++ 绑定。
  • 成熟稳重

我还想通过回调收到大多数 HID 事件的通知。

我考虑了以下替代方案:

  • libhid -(不幸的是?)这是 GPL,不能在我的应用程序中使用。
  • WDK - 对我来说似乎有点低级。我不需要那种控制。
  • atusbhid - 这具有适当的抽象级别,但它与 Windows 消息传递循环紧密相关

还有其他选择吗?

0 投票
1 回答
7343 浏览

windows-mobile - 使 Windows Mobile 设备模拟蓝牙 HID 设备

我正在寻找一种通过蓝牙将 Windows Mobile 设备连接到 PC 并将其作为 HID 设备(即键盘或鼠标)显示在 PC 上的方法。我想这主要是修改 Windows Mobile 设备上可用的蓝牙配置文件以便它公开蓝牙 HID 接口的问题......这甚至可能吗?它是否需要自定义驱动程序或 WinMo 设备上的其他东西?在大多数情况下,我的主要要求是在 PC 端不需要任何特殊软件,它应该简单地使用内置的蓝牙堆栈,并认为 WinMo 设备实际上是 HID 设备而不是 PDA。

我有具有条形码扫描功能的 WinMo 设备,所以我希望能够使用 PDA 使用 HID 接口将条形码扫描到 PC。

另外,我主要使用 C++ 和 C#,所以如果可以用其中一种语言完成,那将是最好的。

有什么建议么?

0 投票
2 回答
1509 浏览

windows-vista - USB HID 笔要求

Windows Vista 中是否有 USB HID 笔驱动程序?如果是这样,为了使 Windows Vista 识别笔并加载笔驱动程序,对 USB 描述符有什么要求?

我正在寻找的是相当于 HID 鼠标驱动程序、HID 键盘驱动程序和大容量存储驱动程序的笔。上述示例驱动程序使 Windows、Linux 和 Mac OS 无需安装新驱动程序即可识别鼠标、键盘和记忆棒。

Windows Vista 对笔有很多本机支持,并且可以仅使用标准 HID 使用表定义 USB 笔设备(从 USB 协议的角度来看)。到目前为止,我能够制作符合鼠标和键盘的 USB HID 描述符(从操作系统的角度来看),并自动使用操作系统提供的标准驱动程序。

然而,对于我的 Pen,Windows Vista 仅加载通用 HID 驱动程序,并没有意识到该设备是“笔”。使用绝对坐标定义笔而不是鼠标的动机是,Vista 支持“手势”等特殊功能,但这仅适用于笔/数字化仪设备。

0 投票
2 回答
148 浏览

.net - 开发具有集成硬件的专用计算机

我们正在考虑为集成计算机实施读卡器程序。该计算机是一个带有嵌入式计算机的触摸屏,运行 Windows XP,以及集成在屏幕中的读卡器。

阅读器是一个 USB 设备,但不幸的是,它与这个屏幕/计算机集成得如此紧密,以至于我无法将其分离并连接到其他设备。

启动时,SDK 很痛苦,因为它不存在。SDK 包含一个 VB(不是 .NET)应用程序,它通过 HID 子系统通过一些 windows api 函数与 USB 设备通信,由于我们需要它成为 .NET 应用程序的一部分,我们需要使用 P 重新实现它/调用。

因此,测试这将是一件痛苦的事情,因为我可能不得不不断地将新文件复制到机器上,并且有大量的日志记录来找出问题所在。

还是我?我还可以做些什么?在那台机器上运行 Visual Studio 将比仅仅复制程序和使用日志记录更痛苦,所以这不是一个选项,但还有什么?我可以从我自己的机器上远程调试吗?该机器具有网络功能,因此我可以通过网络很好地访问它。

任何人都可以提供任何提示或建议?

0 投票
2 回答
1767 浏览

vb.net - 使用 VB.NET 捕获 IR 数据

刚刚找到一个旧的 IR 接收器(Microsoft eHome Infared Transceiver),我正在尝试编写一个可以使用它捕获的数据的应用程序......

对此的任何示例或起点都表示赞赏。

0 投票
6 回答
90650 浏览

linux - 如何在 Linux 上捕获原始 HID 输入?

我想要完成的简短版本:我有一个作为通用 HID 设备实现的脚踏板(INFINITY-IN-USB-1,如果有兴趣的话),我希望它的行为CtrlAlt按键一样Linux。我正在寻找 X 级别的东西,即不仅仅是单个程序。

更长的版本:我通过调用 DLL 函数RegisterRawInputDevicesGetRawInputData并在隐藏窗口中侦听输入,使此设置在 Windows XP 中工作。这一切都是通过一个相当简单的AutoHotkey脚本完成的(如果有人感兴趣,我可以在这里发布)。关键是,不需要任何额外的驱动程序等;只需要本机 Windows DLL 文件。

我希望这个设置可以在 Linux 上运行(更具体地说是 Ubuntu 下的GNOME,但我偶尔会使用其他发行版/窗口管理器,因此感谢 X 级别的解决方案)。此脚踏板不会将自己注册为键盘甚至操纵杆,而是使用 UsagePage 12,Usage 3 注册为 HID 设备。

我注意到最新的 Ubuntu 可以检测和使用Microsoft Natural Keyboard上最喜欢的键,这些键也注册为 HID 设备*。我使用与使用脚踏板相同的方法在 Windows 上使用这些键(即,没有捆绑软件)。所以我假设这个踏板也可以在 Linux 上运行,但问题是如何?

(我对 Linux 上的低级内容不熟悉,所以请在适用时提供介绍或教程的链接。)

* 对于不知情的人,Microsoft Natural Keyboard 注册为常规键盘和通用 HID 设备。如果某些应用程序(例如捆绑应用程序)不知道如何解释 HID 输入,则常规键将起作用,但收藏夹键和特殊功能键无用。


澄清一下,Linux没有将踏板按下视为输入。它确实可以识别 USB 设备,但xev没有为踏板按下提供任何输出。我已经看到有人在Wine下成功使用踏板进行转录软件的报告,但这必须以 Windows 方式工作,并且不能提供我想要的(这使得踏板看起来像所有本地 Linux 应用程序的键盘)。是否需要一些低级 Linux 键盘驱动程序?


这里有一些更多信息:如果我在终端发出这个

dev/usb/hiddev0是我的踏板),我得到与我的踏板压力相对应的原始代码。这是一个开始。我知道这些原始代码是什么意思:在二进制中,0001、0010、0100 分别对应于每个踏板,踏板按下的组合发送这些二进制数的组合,并释放仍然按下的任何踏板的踏板触发输入(如果全部踏板抬起,发送 0000)。

我怎样才能让 X 收听dev/usb/hiddev0原始代码并将其翻译成可能的特殊键码,以便我可以使用 xmodmap 或其他东西映射它们?

0 投票
3 回答
5286 浏览

linux - Linux下如何写入CM108芯片的GPIO引脚?

C-Media 的 CM108 有 4 个 GPIO 引脚,您可以通过隐藏接口访问。

使用 Windows 中的通用写入功能,我能够写入 gpio 引脚。

但是我试图在 Linux 中做同样的事情但没有成功。

linux 内核将该设备检测为 hidraw 设备。

注意:我能够从设备读取,只是不能写入。(我以 root 身份运行该应用程序只是为了确保它不是权限问题)。

0 投票
1 回答
4790 浏览

linux - 在 Linux 上使用 libhid 确定 USB HID 设备的 HID 路径

我有兴趣使用 libhid 访问我们正在 PIC 微控制器上开发的自定义 HID 设备。我已经能够成功运行 test_libhid 代码。使用此库读取和写入设备的说明在 test_libhid 代码中作为注释提供。

我曾尝试遵循记录在案的读写技术,但到目前为止,我还没有成功地读取或写入设备。我怀疑原因可能是设备的报告描述符为输入和输出数据报告指定了一个 64 字节数组。

我已阅读 usb.org 的 HID 设备类定义部分中包含的详细信息,并且我认为我了解描述符的一般工作方式以及它们如何转换为 HID 路径,但我尝试读取和写入设备的数据有失败的。

我已经验证该设备在 Windows 中工作,所以我的问题似乎在于 Linux 方面。我认为这无关紧要,但我应该注意我目前正在使用装有 Ubuntu 8.04 服务器的 VMWare 虚拟机中工作

任何人都可以就如何为以下报告描述符(从 lsusb –vvv 生成)指定 HID 路径提供一些指导:

此外,当我运行 test_libhid 程序时,它会将解析树转储为 64 个相同的条目,如下所示:

这些大概是输入。此列表后跟另外 64 个条目,如下所示:

我已经发布到 libhid 邮件列表,但最近那里没有太多活动,所以我想我会在这里提出我的问题。如果任何人都可以提供有关如何指定此输入和输出报告的 HID 路径的指导,那将是一个巨大的帮助。

谢谢。

0 投票
2 回答
1722 浏览

linux - HID 读取()命令

有谁知道LINUX中HID事件的非阻塞reed()命令 过程

目前我正在使用

但它进入阻塞阶段,当我的 HID 指点设备不朝向传感器条时

亲切的问候,

马德尼