设置UsbDeviceListener

设置UsbDeviceListener

我试图设置UsbDeviceListener,但是断开设备连接或在设备上创建新文件时都没有任何反应。
有人可以告诉我代码中的问题在哪里吗?

public static void listPeripherique(UsbHub hub) {
 List perepheriques = hub.getAttachedUsbDevices();
 Iterator iterator = perepheriques.iterator();
 while (iterator.hasNext()) {
   UsbDevice perepherique = (UsbDevice) iterator.next();
   perepherique.addUsbDeviceListener(new UsbDeviceListener() {

        @Override
        public void usbDeviceDetached(UsbDeviceEvent arg0) {
            System.out.println("connect " + arg0);

        }

        @Override
        public void errorEventOccurred(UsbDeviceErrorEvent arg0) {
            System.out.println("disconect " + arg0);

        }

        @Override
        public void dataEventOccurred(UsbDeviceDataEvent arg0) {
            System.out.println("new data on " + arg0);
        }
    });
  }
  if (perepherique.isUsbHub()) {
    listPeripherique((UsbHub) perepherique);
  }
}


编辑:它仅适用于USB分离。

最佳答案

听起来好像工作正常。

您的代码在所有当前连接的设备上迭代一次,并在其上注册一个设备侦听器。设备断开连接后,将触发usbDeviceDetached事件。其他两个事件是在您自己的程序将数据从设备传输到设备或向设备传输数据时触发的,或者在您的程序尝试与设备通信时发生错误时触发的。

javax-usb无法监视其他程序进行的数据传输。也许这就是您所期望的?为此,您需要一个特殊的USB监视工具,例如Linux上的usbmon

07-25 23:56