这个问题可能是thisthis线程的重复。但是,由于它们都没有为我的问题提供明确的解决方案,因此我再次提出要求。

我需要完成的任务是通过USB连接2个键盘,然后通过Java应用程序分别管理每个键盘的输入。 @nan已在first thread I have mentioned above中回答了这一要求,但他的解决方案对我而言并不准确。您可以在他的here解决方案中找到他的博客文章。他已经使用java-hid-api完成了解决方案,并且看起来很准确并且可以正常工作。

但是,我遇到的问题是打开HID设备。当我尝试使用HIDManageropenByPath()方法使用openById()打开设备时,它仅返回null,因此抛出NullPointerException。使用open()HIDDeviceInfo方法尝试时是相同的。 java-hid-api页面中的this issue is listed也是如此,但是到目前为止,似乎没有人提供有效的解决方案。

我正在使用的操作系统是Windows 7 32位

这是我打开HID设备的3次尝试


HIDDevice hidDevice = HIDManager.getInstance().openByPath(hidDeviceInfo.getPath());
HIDDevice hidDevice = HIDManager.getInstance().openById(hidDeviceInfo.getVendor_id(), hidDeviceInfo.getProduct_id(), hidDeviceInfo.getSerial_number());
HIDDevice hidDevice = hidDeviceInfo.open();


有人能解决这个问题吗?如果是这样,将非常感谢您的帮助。

谢谢!

更新1:根据JInput中@ paul-whelan提供的答案,我刚刚发现可以使用this thread完成此任务。我现在将尝试使用它,但是我首先要在此处说明,如果有人已经知道并且已经完成它,则寻求任何确认或有关如何执行的指南。

最佳答案

这是初始化库的操作:

ClassPathLibraryLoader.loadNativeHIDLibrary();
HIDManager hm=HIDManager.getInstance();


然后,您可以阅读设备等:

HIDDeviceInfo[] dvl = hm.listDevices();
for (HIDDeviceInfo dv:dvl){
    System.out.println(dv.getManufacturer_string());
}

关于java - 使用Java HID API打开HID设备时发生NullPointerException(管理来自多个键盘的输入),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21110930/

10-12 00:29
查看更多