hid4java HidServices.getHidDevice( ...) возвращает NULL

Я создал проект hid4java Maven и успешно сумел поместить библиотеку в библиотеку классов.

Вот код, который я использую, пытаясь открыть устройство, с которым я работаю:

public class JR3Controller implements HidServicesListener {
    private static JR3Controller Ctor = null;
    private JR3Reader Reader = null;
    private JR3Writer Writer = null;
    private HidDevice dev = null;
    private HidServices mgr = null;

    /**
     * R3 Controller Object.
     * @return 
     */
    public static boolean Initialize() throws HidException{
        if (JR3Controller.Ctor != null) return true;
        JR3Controller.Ctor = new JR3Controller();
        JR3Controller.Ctor.mgr.addHidServicesListener(JR3Controller.Ctor);
        return JR3Controller.Ctor.dev != null;
    }

    private JR3Controller(){
        this.mgr = HidManager.getHidServices();
        this.dev = this.mgr.getHidDevice(0x0003, 0x1001, null);
        if (this.dev != null){
            /*Stuff goes here : Doesn't matter because dev is never not null after the preceding line*/
        }

Это происходит в Windows 10 (поиск показал, что проблема может быть в Windows 10: https://github.com/signal11/hidapi/issues/231), при запуске 32-битной JVM на Netbeans...

Я что-то здесь не так делаю? Есть ли способ решить эту проблему? Есть ли альтернатива hid4java, которую я могу использовать для простого устройства HID?

1 ответ

Библиотека, которую вы упомянули hid4java хорошо работает на Windows 10 32-битных и 64-битных.

HidServices services = HidManager.getHidServices();
List<HidDevice> devices = services.getAttachedHidDevices();
HidDevice device = null;
for(HidDevice d : devices) {
   if (d.isVidPidSerial(0x0003, 0x1001, null)) {
      device = d;
   }
}

if (device != null){
   System.out.println("We're not null!!")
}

Если это по-прежнему не работает, попробуйте перечислить все из них, возможно, у вас неправильный идентификатор поставщика.

for(HidDevice d : devices) {
   System.out.println("VendorId: " + d.getVendorId() + ", ProductId: " + d.getProductId()));
   System.out.println("    Manufacturer: " + d.getManufacturer() + ", Product: " + d.getProduct());
}
Другие вопросы по тегам