我有个问题:
我在Windows8笔记本上使用USB4Java。我的USB接口插上了红外遥控器。现在我想访问这个控制器。我得到了下面的示例代码(没有编程的异常,也没有处理空指针,因为我只想看看我的代码是否有效):
public class IRController_Test {
/**
* @param args the command line arguments
* @throws javax.usb.UsbException
*/
public static void main(String[] args) throws UsbException {
UsbServices usbServ = UsbHostManager.getUsbServices();
UsbHub hub = usbServ.getRootUsbHub();
List<UsbDevice> list = hub.getAttachedUsbDevices();
UsbDevice device = null;
for(UsbDevice dev : list){
if(dev.getUsbDeviceDescriptor().idVendor() == (short)0x0755 &&
dev.getUsbDeviceDescriptor().idProduct() == (short)0x2026){
device = dev;
System.out.println("Found the port!!");
}else{
System.out.println("Not the port!");
}
}
UsbConfiguration config = device.getActiveUsbConfiguration();
List<UsbInterface> listInf = config.getUsbInterfaces();
UsbInterface inter = listInf.get(0);
inter.claim();
}
因此,它会找到端口,但当我调用“inter.claim()”时,会出现以下异常:
Exception in thread "main" javax.usb.UsbPlatformException: USB error 12: Can't open device Bus 002 Device 003: ID 0755:2026: Operation not supported or unimplemented on this platform
at org.usb4java.javax.ExceptionUtils.createPlatformException(ExceptionUtils.java:39)
at org.usb4java.javax.AbstractDevice.open(AbstractDevice.java:226)
at org.usb4java.javax.AbstractDevice.claimInterface(AbstractDevice.java:406)
at org.usb4java.javax.Interface.claim(Interface.java:102)
at org.usb4java.javax.Interface.claim(Interface.java:93)
at IRController_Test.main(IRController_Test.java:48)
Java结果:1
生成成功(总时间:0秒)
我通过zadig安装了一个winusb(v6.1.7600.16385)驱动程序,但仍然有这个错误。有人可以帮助我吗?
谢谢你的帮助:)
最佳答案
我已经用我的一些设备测试了你的代码。它在跑。我认为这是司机的问题。使用zadig,您应该检查菜单项“列出所有设备”,然后必须从下拉列表中选择正确的设备。然后按下“更换驱动器”按钮。
但是要小心:如果你这样做了,你只能在Java应用程序之外与你的设备通信。其他应用程序无法再访问该设备。但如果有问题的话,你可以从windows设备管理器重新安装旧的。