问题标签 [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.

0 投票
3 回答
1250 浏览

macos - 调用 IOHIDDeviceOpen 时,守护程序用户如何在不获取 kIOReturnNotPrivileged 的​​情况下访问 HID 设备

我正在使用 hidapi 访问 HID 设备(不是鼠标或键盘)。要支持的最旧的操作系统版本是 10.6,我目前使用的是 Mac OX X 10.6.8。如果我的 Mac OS X 可执行文件以普通用户权限运行,它可以枚举设备,识别要由其供应商和产品 ID 使用的设备,然后像这样打开它:

实际上可执行文件应该作为守护进程运行,但随后IOHIDDeviceOpen失败并显示kIOReturnNotPrivileged. 对于 Linux,我通过 udev 规则绕过了热插拔脚本触发的类似问题,从而更改了新连接(匹配)设备的权限。我想坚持守护进程用户。我怎样才能做到这一点?

0 投票
1 回答
1354 浏览

pthreads - 两个线程中的 HIDAPI

根据https://github.com/signal11/hidapi/issues/72,HIDAPI在 Linux 机器上应该是线程安全的。但是,我根本无法让它工作。这就是我所做的:

如果我不使用全局句柄,我每次都会收到“写入错误”。如果我这样做,如示例中那样,形式上一切正常,但 hid_read 总是返回 0 字节...当然,如果我执行简单的 hid_write() 后跟 hid_read(),我将按预期得到对命令 0x82 的正确回复. 我真的迷路了,我忽略了什么吗?

编辑:澄清一下,零字节也适用于所有内容,包括。鼠标等按钮。所以它似乎可以工作,但数据缓冲区始终为零字节。

0 投票
1 回答
1893 浏览

c - 如何从源代码创建 libhidapi.dylib?

我有正在进行的跨平台项目(Win 和 Mac),我需要访问 USB 设备。我找到了完全符合我所有要求的 HIDAPI 库。由于没有用于 HIDAPI 库的 Delphi Firemonkey 包装器(至少我不知道),我正在编写自己的。

HIDAPI 项目网站http://www.signal11.us/oss/hidapi/说:“在 Windows 上,可以选择将 HIDAPI 构建到 DLL 中。“

这是真的,因为我已经使用 Visual Studio 成功编译了源代码并创建了在 Windows 上完美运行的 DLL。现在,由于我不是 C 程序员并且 OSX 不是我最强的技能,我想知道这是否可能以及如何从给定的源代码创建 libhidapi.dylib?

0 投票
2 回答
998 浏览

mono - OS X 上的 HIDAPI 选项

我一直在使用 C 语言使用 HIDAPI,并尝试让 Mono 使用互操作与 HIDAPI 进行通信。我进行了很多搜索,但找不到任何让 HIDAPI 在 OS X 上使用 Mono 的人。

有谁知道我是否可以将使用 HIDAPI 的 HID 设备的输出重定向到本地虚拟串行端口,然后让 Mono 从串行端口读取?

另一种选择,有人知道我是否可以使用 Arduino leonardo 或 Circuits@Home USB Host Shield 之类的东西吗?

至少在我可以整理出 Mono 上的 PInvoke 之前。

谢谢

0 投票
1 回答
4888 浏览

c++ - Hidapi无法在ubuntu下编译任何代码

我正在尝试在 Ubuntu 12.04 下使用 hidapi 库。我已经按照 github 中的教程进行操作,但是,即使它附带的测试代码也无法正常工作。它总是抱怨未定义的引用。我找不到任何解决方案。即使安装成功,我也无法在任何地方找到该库。

我正在尝试编译 hidtest.cpp,第一个错误在该hid_init()行中。

有人可以帮助我吗?

编辑:

这是在 Ubuntu 12.04 下使用 Eclipse Juno 完成的

0 投票
3 回答
3674 浏览

hid - 使用 HIDAPI,如何查询原始报告描述符?

我想解构hid_readhidapi.

据我了解,这可以使用设备报告描述符中的信息来实现。但是当尝试查询这些描述符时,我在 HID 规范和使用hidapi.

我很想看到一个基于 C 或 node-hidapi 的具体示例,它查询和枚举设备的所有报告描述符——也许是一个鼠标来保持简单?

0 投票
0 回答
1329 浏览

linux - Linking native hidapi and libusb-1.0 library in eclipse on Ubuntu

I am new to Ubuntu and searched on-line for two days, tried a lot of solutions but do not have any luck yet. If anyone can help with this, I will appreciate.

I wrote a program in Java with eclipse on Windows. My program makes use of Java hidapi library, which is a Java wrapper of the C version hidapi library (.dll). In eclipse, by adding the Java hidapi to the build path and setting the C hidapi as a native library, everything works just fine.

Now I want to do the same on Ubuntu. The same Java hidapi is used, which now will make use of the C version hidapi library for Linux (a .so file). When making the C version hidapi library for Linux, it turns out that I need another library called libusb-1.0 (which hidapi needs to deals with the low level communication). So I install libusb-1.0 (now I have a libusb-1.0.so file under /usr/lib/i386-linux-gnu), make the C version hidapi library for Linux. I have a small C program and I test it under bash, it works so I believe until this point everything, both libsub-1.0.so and C version hidapi library for Linux libhidapi-jni.so are installed/generated correctly, and when running the small C program the system is able to find the shared libusb-1.0.so library without explicitly mentioning where libsub-1.0 is (which makes sense because libusb-1.0 is installed in a place where the system loader will always search).

So I go to eclipse. I import the eclipse work space, add the Java hidapi to the build path (as I did in Windows), move the C version hidapi library for Linux (the .so file) into a folder called 'lib' (where the .dll version of native library also resides). And I set the native library to 'lib', by "build path" -> "configure build path" -> "libraries" tab -> "native library location". So till this point, the two native libraries are: libusb-1.0 under /usr/lib/i386-linux-gnu, and hidapi.so under 'wherever eclipse workspace is'/lib. Finally in the source code I add two lines:

System.loadLibrary("usb-1.0"); // Call this line A.

System.loadLibrary("hidapi-jni"); // Call this line B.

I run the program as a Java application. It reports "java.lang.UnsatisfiedLinkError: no usb-1.0 in java.library.path" at line A. So I guess the Java runtime is not able to find where libsub-1.0 is.

Just for clarification, I already did the following trials, none of them worked.

  1. Remain the two libraries where they are, add vm argument (Run -> Run Configuration -> Arguments -> VM arguments): -Djava.library.path="${workspace_loc:project_name}/lib; /usr/lib/i386-linux-gnu". It gives: "java.lang.UnsatisfiedLinkError: no usb-1.0 in java.library.path" at line A.
  2. Undo 1. Move libsub-1.0.so to 'wherever eclipse workspace is'/lib, so now the two .so files are together. Set .jar's native library location to this folder. It gives "java.lang.UnsatisfiedLinkError: blablabla: undefined symbol: libusb_control_transfer" at line B. So I think it founds the libusb library, however the symbol (which should be in libusb) is still unresolved. This is really weird.

Can anyone help me? Thanks in advance.

0 投票
1 回答
363 浏览

ubuntu - HID API unable to build test gui

After following the whole readme procedure for the hid api, when trying to run 'make' from the 'hidtest/' directory I get the "make: Nothing to be done for `all'." error. I have no idea what is causing this.

0 投票
2 回答
366 浏览

c++ - Windows 错误消息

我正在开发一个使用 HIDAPI 进行 USB 通信的程序,似乎 API 函数 hid_error() 直接从 Windows 返回最后一条错误消息,而不是 API 本身生成的消息。我在哪里可以找到所有可能的错误消息的列表,以便我可以更准确地对错误做出反应?

0 投票
0 回答
1466 浏览

java - 如何使用 HIDAPI 读取 USB 设备上的温度?

我必须从 USB 设备 TEMPer 恢复温度值,我在这篇博文中找到了代码

我的班级返回此错误代码:

com.codeminders.hidapi.HIDDeviceNotFoundException at com.codeminders.hidapi.HIDManager.openById(HIDManager.java:114) at Foo.readTemperature(Foo.java:44) at StartApplication.main(StartApplication.java:96)

我已经验证了我的 USB 探头是否是 HID 设备,是的。

找到解决方案!==> 这是我的 Linux,除了经典存储密钥外,没有看到其他 USB 设备。所以现在它开始工作了!

我现在有第二个问题,在这段代码中我从来没有通过

而这条线对于取得好成绩至关重要。字节操作对我来说并不容易......

找到解决方案 n°2!==> 我只需要在写入和读取之前添加以下行:

我认为的最后一个问题:我这样做时没有读取任何字节:

n 始终等于 0...