【问题标题】:NullPointerException when opening HID Device using Java HID API (Managing Inputs from Multiple Keyboards)使用 Java HID API(管理来自多个键盘的输入)打开 HID 设备时出现 NullPointerException
【发布时间】:2014-02-02 08:35:51
【问题描述】:

这个问题可能与thisthis 线程重复。但是由于他们都没有为我的问题提供明确的解决方案,所以我再次询问。

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

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

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

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

  1. HIDDevice hidDevice = HIDManager.getInstance().openByPath(hidDeviceInfo.getPath());

  2. HIDDevice hidDevice = HIDManager.getInstance().openById(hidDeviceInfo.getVendor_id(), hidDeviceInfo.getProduct_id(), hidDeviceInfo.getSerial_number());

  3. HIDDevice hidDevice = hidDeviceInfo.open();

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

谢谢!

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

【问题讨论】:

  • 为了完整起见:根据 C/C++ HID API 的 Issue-Tracker 和 HID API 的 Java Wrapper,这似乎是一个 Windows 问题。有一个 C/C++ 实现的非官方补丁可以解决这个问题(至少它对我有用):angryelectron.com/javahidapi-nihardwareservice 然后可以使用补丁版本重建 Java Wrapper(或者您可以直接从上面的网站)

标签: java keyboard usb keyboard-events hid


【解决方案1】:

这是初始化库的操作:

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

然后你可以读取设备等:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-14
    • 2016-05-26
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多