问题标签 [hidapi]
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.
c - 在 Mac 上构建 HIDAPI 的问题
我正在尝试使用 HIDAPI 库来帮助构建一些用于 mac 的隐藏驱动程序。按照自述文件,我被告知进入 mac 目录并运行 make 命令。不幸的是,这并没有多大作用,我在自述文件中没有看到我需要与 make 一起运行的任何命令。
我现在对使用 TestGUI 不感兴趣,所以如果我正确理解了文档,我不需要安装 fox-toolkit 并使用它运行 make 命令。
任何人都知道这里是否有我遗漏的步骤?
objective-c - 如何将 HIDAPI 库添加到现有 Mac 项目
我正在研究用户空间 HID 设备驱动程序,并且大量谷歌搜索表明建议使用 signal11 中的 HIDAPI 库。我遵循了所有自述文件的说明并在 Mac 目录下运行了 make 命令,但我没有看到我想我会需要的 hidapi.h 文件。还有另一种方法我应该将库带入 xcode 项目吗?
谢谢!
usb - 通过 USB 使用 HIDAPI 时对报告 ID 感到困惑
我是 USB HID 新手,我正在尝试将HIDAPI 用于我的应用程序。
我有一个关于使用 HIDAPI(在 Visual Studio 中)关于报告 ID 的问题。
当我尝试使用 HIDAPI 并连接到 Microchip 定制演示时,我对这方面感到困惑:65 字节的报告对我来说没有意义!
即使我不想设置报告ID,我也需要将第一个字节设置为0并将65字节缓冲区发送到设备,但我只收到来自Microchip设备的64字节数据(因为报告是64 字节长)。
看起来像:
然而,这对我来说似乎很奇怪。
发送或接收的报告不是总是 64 字节吗?因为规范说报告应该有一个 64 字节的最大值,并且每 1 毫秒发送一次。
如果答案是肯定的,为什么 API 为 1 字节的报告 ID 维护 65 字节?
报告 ID 是否包含在 64 个字节中?
65 字节的数据长度对我来说没有意义。
node.js - 让节点隐藏在 Windows 中工作
我正在尝试让 node-hid ( https://github.com/node-hid/node-hid ) 模块在 Windows 7 上运行。我可以打开一个设备并写入它,但没有数据到达。
我已验证设备正在发送数据。我已经挖掘了节点隐藏代码(HID.cc)并尝试了几件事来让它工作:
- 修改了 HID::recvAsync 函数以在循环中使用 hid_read_timeout 来查看它是否会返回任何内容。
- 设置阻塞和非阻塞。
- 更改缓冲区大小以完全适合设备发送的内容。
在 Windows 8 上,随着 hid_read_timeout 调用的改变,这一切都很好。我不确定这两个系统之间可能发生了什么变化,但我也计划在 Windows XP 上使用它,所以我不能说它很好。
我正在努力想出更多关于如何调试这个问题的想法。有没有人成功地做到过这一点?将 Node.js 与 HID 设备一起使用是否有更好的选择?
hidapi - 使用 HIDAPI 接收不同大小的数据包
我在 Windows 8.1 中使用 HIDAPI 从 HID 设备中读取音频流。该流发送由 259 个字节组成的 ADPCM 数据,其中前 12 个包为 20 个字节,第 13 个为 19 个字节。问题是 HIDAPI 总是给我 20 个字节(+1 个字节的报告 ID),而不是 19 个字节。HID 的音频部分在 Windows 下本机不支持,但正在使用一些第三方库为 linux 工作,并且直接在 Ubuntu 中捕获 HID 数据会给出正确的数据长度。我怎样才能解决这个问题?
编辑:我看到在设置 hid_device* 时,一dev->input_report_length = caps.InputReportByteLength;
开始就将调用设置为 21,因此无法随时间更改。尽管如此,我的设备每 13 个数据包仅发送 19 (20) 个字节的数据。这可以在运行时动态更改吗?
java - Java 和 HID 通信
我正在寻找为简单的无线 HID 接口设备编写 Linux/Windows/Mac Java HID 控制器。我对 USB4Java LibUsb 库进行了修补,但无济于事,并且我一直朝着 JavaHIDAPI 的方向前进。
对我来说不幸的是,除了相当不错的高级编程技能集(C#/VB.Net)之外,我真的不知道自己在做什么,而切换到这个技能让我很丧。
我找到的说明说我首先需要编译在这里找到的HIDAPI库。它说它将构建一个名为 hidapi-jni.dll 的东西(它没有)。
无论如何,我认为这是我需要去的地方,因为 HID 什么都不做,只是简单地向无线控制器发送和接收信号(并响应接收到的信号)。
是否有使用 JavaHIDAPI 的分步教程?还是有更好的图书馆?(我注意到这有点……过时了)。
我尝试了以下方法:
我正在运行的问题是(除了 HIDAPI 似乎没有构建到 HIDAPI-jni.dll 中的事实之外)是 HIDManager.openById(...) 总是返回 null。另外,我把内置的 hidapi.dll 移到了 C:...\Java...\bin 目录...什么的,我确定它是对的,因为没有任何不满意的链接错误。这真的很令人沮丧,因为在任何地方似乎都没有任何 Java 和 HID 新手指南。
我在这里做错了什么?
java - Java HIDAPI - 异步读取
有点像这个问题的后续行动,我现在已经取得了一定的成功(LED 打开和关闭,万岁!),我现在有另一个问题。
除了写入设备之外,我还需要从设备中读取。我不希望有一个线程坐在那里并每 50 毫秒查询一次设备(考虑到将使用该设备的设置,这可能是在没有 Java 等效的 .Net 事件的情况下使其工作的唯一方法)。
有没有办法设置一个Java“事件”(松散使用的术语),当有字节等待从设备读取时触发?
我现在要写入设备的是一个终端接口,它接受字符串并通过写入字节数组(或终止)来响应它们:
我希望是这样的:
这可能吗?
windows - 应用程序在使用默认 HID 驱动程序时忽略 USB 设备的传入数据包
我正在为一个团队中的通用 USB HID 设备编写一个控制软件,在 Windows 7 上工作。由于我作为实习生的身份,我的可能性是有限的:
- 该软件必须在 Windows 上运行
- 该软件必须使用 Windows 提供的默认 HID 驱动程序
我的问题是,但是我尝试在使用 HidUSB 驱动程序时访问设备(根据 Zadig),当设备实际发送数据时,我的中断传输读取尝试总是导致超时。写入设备一直有效,无论我使用 HIDAPI,是否使用 libusb,只有读取失败。(这是一个原始设备 atm,甚至最终的数据包数据规范都没有完成,目前它只是向主机发送一个 ON 或 OFF 字符串,写入设备会在 7 种颜色和关闭状态之间更改 LED 的状态,所以一个人肯定在工作)
我想不出设备有问题,因为如果我用 Zadig 将 Windows 上的驱动程序替换为 WinUSB 驱动程序,它可以与 libusb 一起工作(此后 hidapi 无法打开设备)和 Linux 上,只需读取 /dev /hidraw 也可以很好地返回数据。我还阅读了 HID 和 USB 规范,并且我知道设备描述符声明 USB 数据包大小为 8,而 HID 输入报告的大小上限为 20,但我不知道设备使用什么报告 ID。
检查 Windows 与 USBPcap 和 Wireshark 的通信,我注意到设备处理的唯一区别是,与 WinUSB 驱动程序一起使用时的 CC 相比,HidUSB 驱动程序请求数据的主机数据包用 00 填充。
作为记录,我已经尝试过 libusb、hidapi、HidLibrary 并且团队中没有人知道现在该做什么。
我还读到 Windows 禁用了对 HID 键盘和鼠标的访问,但我没有发现设备配置最终成为 USB 鼠标的实际示例。设备管理器在 HID 下列出了我的设备两次,一次作为 HID 兼容设备或其调用方式(此处为本地化 Win7),一次作为 USB 输入设备,但未在鼠标或键盘选项中列出。
java - JAVA隐藏api和usb键盘
我有一个 UIC 680 非接触式读卡器,它具有隐藏和 RS 232 接口。现在我想使用 java 和 hid 接口与设备交互。我开始探索 JAVAHID API 并且能够获取设备列表。但是当我尝试获取设备对象时,它返回 null。我知道人们也遇到过类似的问题,这个http://angryelectron.com/javahidapi-nihardwareservice链接为它提供了一个我也使用过的解决方案。现在我也有 magtek msr 阅读器,它在我的计算机中被检测为符合 HID 的设备,我得到它的设备对象绝对没问题,但不适用于我的 UIC 设备(在我的 Windows 计算机中检测为 USB 键盘)以及 USB HID 鼠标因为他们抛出空指针异常。请帮助我,因为我做错了什么?另外,我知道我可以使用 java 通信 API 和 RS 232 接口,但我的要求是使用 HID 接口。
linux - 用 libusb 而不是 hidraw 编译 hidapi
我正在尝试在 ubuntu 14.04 上编译hidapi以与node-hid一起使用。当 hidapi 使用 hidraw 时,Node-hid 由于某种原因无法看到任何设备,如本问题所述。第四篇文章也提供了一个解决方案:
因此,凭借我有限的 gcc/waf 知识,我设法构建了它(我将 wscript 更改为使用 ../hidapi/libusb/hid.c 与使用 /hidapi/linux/hid.c。我还更改了它的链接标志以使用-lusb1.0 而不是 -ludev 并且我添加了 /usr/include/libusb-1.0 (一个硬编码路径,因为makefile想要使用 pkgconfig 来查找该路径..我不知道等效的)。
我已经设法在 wscript 文件中将 /hidapi/linux/hid.c 更改为 ../hidapi/libusb/hid.c 并且我还找到了链接标志并更改了它们;但是,我不确定如何实现关于硬编码路径的最后一部分。我会在哪里写这条路?或者,有没有更好的方法让节点隐藏工作?