首页 > 解决方案 > javax.usb - syncSubmit 有时会导致延迟

问题描述

我正在开发一个使用 javax.usb 库的 java 应用程序,它运行良好,但有时当我用力推动它时,它开始从函数syncSubmit延迟返回。大约 2 秒而不是 10 毫秒。

可能是什么原因?我尝试重新初始化 javax usb 库,但它没有改变任何东西。

谢谢..

    private int BootloaderGetStatus(UsbDevice device) {
    try {
        byte[] data_6 = new byte[6];
        byte bmRequestType = (byte) ((BMREQUEST_DEVICE_TO_HOST << 7) | (BMREQUEST_CLASS << 5)
                | (BMREQUEST_TO_INTERFACE << 0)); // device to host
        byte bRequest = (byte) DFU_REQ_GETSTATUS;
        short wValue = 0;
        short wIndex = 0;
        UsbControlIrp controlIrp = device.createUsbControlIrp(bmRequestType, bRequest, wValue, wIndex);
        
        controlIrp.setData(data_6);
        device.syncSubmit(controlIrp);
        return controlIrp.getActualLength();
    } catch (Exception e) {
        log.error(e);
        return -1;
    }
}

图书馆版


  <dependency>
    <groupId>org.usb4java</groupId>
    <artifactId>usb4java</artifactId>
    <version>1.3.0</version>
  </dependency>
   <dependency>
    <groupId>org.usb4java</groupId>
    <artifactId>usb4java-javax</artifactId>
    <version>1.3.0</version>
  </dependency>

标签: javausbdelaycommunicationdfu

解决方案


我解决了这个问题,不要轮询连接的 USB 设备,使用 Listener 方法,如连接或分离的 USB 设备。然后图书馆开始运作良好!


推荐阅读