我正在为简单的无线HID接口设备编写Linux / Windows / Mac Java HID控制器。我对USB4Java LibUsb库进行了修改无济于事,而且我已经朝着JavaHIDAPI的方向发展。
不幸的是,对于我来说,我真的不知道除了一个相当不错的高级编程技能集(C#/ VB.Net)之外我做了什么,切换到这个就是杀了我。
我发现的directions说我首先需要编译找到here的HIDAPI库。它说它会构建一个名为hidapi-jni.dll的东西(它没有用它)。
无论如何,我认为这是我需要去的地方,因为HID什么都不做,只是简单地向无线控制器发送信号和从无线控制器接收信号(并响应收到的信号)。
是否有为此使用JavaHIDAPI的分步教程?还是有更好的图书馆? (我注意到这有点......过时了。)
我尝试了以下内容:
static{ System.loadLibrary("hidapi"); }
.
.
.
public static void main(string[] Args) throws . . . {
ClassPathLibraryLoader.loadNativeHIDLibrary();
HIDDevice dev = HIDManager.getInstance().openById(VEND_ID, PROD_ID, null);
.
.
.
}
我正在运行的问题是(除了HIDAPI似乎没有构建到HIDAPI-jni.dll之外)HIDManager.openById(...)总是返回null。另外,我移动了内置在C:... \ Java ... \ bin目录中的hidapi.dll ......或者其他什么,我确定它是正确的,因为没有'任何不满意的链接错误。它真的令人沮丧,因为似乎没有任何新手指南可以在任何地方使用Java和HID。
我在这里做错了什么?
答案 0 :(得分:5)
我回答这个问题有点迟了,但我写了一个名为hid4java的库,可以解决你的问题。
它基于Java Native Access(JNA),这比使用复杂的JNI咒语要简单得多。
我必须编写它,因为javahidapi已过期,而基础signal11/hidapi代码已大大改进。较旧版本的hidapi库在OS X上出现了带有附加/分离事件的问题,这些事件现已修复,因此需要进行升级。
此外,我发现无法通过OS X上的usb4java声称USB HID设备,所以我最终编写了这个库来解决这个问题。
希望它有所帮助。
答案 1 :(得分:1)
因此,我发现这个问题与本地库有关。 我能够通过从.jar文件复制.dll并引用它来使应用程序工作,但更重要的是,我将重建负责加载库并添加
的.java类文件。System.loadLibrary();
呼叫。当调用JavaHidApi
ClassPathLibraryLoader.loadNativeHIDLibrary();
方法时,它不会在成功将库写入临时文件时加载库,这有点令人讨厌。这样做将消除从静态位置手动加载库的必要性......
感谢您指点我正确的方向。