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());
}