我希望为简单的无线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的新手指南。

我在这里做错了什么?

最佳答案

我回答这个问题有点晚了,但是我编写了一个名为hid4java的库,它可以解决您的问题。

它基于Java Native Access(JNA),它比复杂的JNI简化要简单得多。

我必须编写它,因为javahidapi已经过时并且基础signal11/hidapi代码已经进行了相当多的发展。 hidapi库的较早版本在OS X上存在附加/分离事件的问题,该问题现已得到修复,因此需要进行升级。

另外,我发现不可能在OS X上通过usb4java声明USB HID设备,因此我最终编写了该库来解决该问题。

希望能帮助到你。

07-24 09:26