2014-05-20 98 views
2

我正在使用USB4Java(低級版本),並且基本上正在使用此代碼here。 我在Ubuntu工作,我遇到了有關權限的問題,但能夠通過從終端使用gksu運行eclipse來解決問題。無法聲明接口:資源繁忙

現在我有一個新的問題: 當我到了點代碼在這裏:

public static void claimDevice(DeviceHandle handle, int interfaceNum){ 
    int r = LibUsb.claimInterface(handle, interfaceNum); 
    . 
    . 
    . 

我得到一個異常告訴我,「資源正忙」:

USB error 6: Unable to claim interface: Resource busy 

我以前使用過Ubuntu(但從來沒有開發過,所以我真的很新)。 如果這不是應該處理這個問題的地方,那麼請告訴我在哪裏接受它,以便我可以得到答案。

具體而言,問題是,這是什麼意思,我該如何解決它? 我的目標,在這種情況下,這是一個自定義的USB設備,是創建一個低級別的跨平臺......基於Java的......「驅動程序」(使用這個術語鬆散)。我現在正在與Ubuntu一起工作,因爲終端lsusb命令提供了有關所涉及設備的大量信息。

+0

描述你做了谷歌搜索的錯誤信息(我得到了很多次)的基礎研究? –

+0

那麼它就是: https://groups.google.com/forum/#!topic/usb4java/bVgfpCgKDJ0 謝謝。 – Will

+0

與其在問題中提出答案,請將其移至答案(您可以回答自己的問題),然後在需要的等待期限後「接受」答案。這將使它對未來的搜索者更有價值,因爲他們可以很容易地找到答案,並看到它被接受。 –

回答

5

我能夠(感謝一些哄騙)找到谷歌的答案:對於遇到這個錯誤,不想挖,在我工作的上下文中,我被要求分離從我的內核接口之前,我可以聲稱它,像這樣:

public static void claimDevice(DeviceHandle handle, int interfaceNum){ 
    int r = LibUsb.detachKernelDriver(handle, interfaceNum); 
    if (r != LibUsb.SUCCESS && 
     r != LibUsb.ERROR_NOT_SUPPORTED && 
     r != LibUsb.ERROR_NOT_FOUND) throw new LibUsbException("Unable to detach kernel  driver", r); 
    . 
    . 
    . 

希望這也能幫助你。

0

更簡單的方法權利要求的設備是使用武力索賠在usb4java documentation

UsbConfiguration configuration = device.getActiveUsbConfiguration(); 
    UsbInterface iface = configuration.getUsbInterface((byte) 0); 
    iface.claim(new UsbInterfacePolicy() 
    {    
     @Override 
     public boolean forceClaim(UsbInterface usbInterface) 
     { 
      return true; 
     } 
    }); 

    try 
    { 

     System.out.println("is active: " + iface.isActive()); 

    } 
    finally   
    { 
     iface.release(); 
    }