2016-04-04 6 views
1

Ich führe eine USB-Verbindung in einer AsyncTask aus. Unter einigen Bedingungen, wenn ich versuche, die Verbindung zu verwenden, kehrt die Bulk-Transfer-Funktion nie zurück. Wenn ich die AsyncTask abbringe, funktioniert die Verbindung nicht mehr, wenn ich den Computer nicht neu starte.Android Programmatisch freigegebene USB-Schnittstelle freigeben

Log.d(TAG, "trying to connect"); 
boolean connected = con.claimInterface(device.getInterface(0), true); 
Log.d(TAG, "connected: " + connected); 

Log.d(TAG, "trying to transfer cmd"); 
int outGoingBytes = con.bulkTransfer(endPointOut, cmd, cmd.length, 0); 
Log.d(TAG, "outGoingBytes: " + outGoingBytes); 

Das letzte Protokoll wird nie erreicht.

Gibt es eine Möglichkeit, die Schnittstelle programmatisch freizugeben, damit ich eine Verbindung wiederherstellen kann?

Dies ist der logcat Fehler

E/UsbDeviceConnectionJNI: device is closed in native_claim_interface 

Antwort

0

versuchen, das Timeout übergeben zu erhöhen, werden Sie 0 vorbei, legte 2000 millis oder so ähnlich.

con.bulkTransfer(endPointOut, cmd, cmd.length, 2000); 

Ich weiß nicht sicher, hoffen, dass jemand mit mehr Erfahrung eine Antwort geben kann, aber für die Freigabe der Kommunikation können Sie anrufen close().

According to the documentation:

Gibt alle Ressourcen System auf das Gerät bezogen. Sobald das Objekt geschlossen ist, kann es nicht erneut verwendet werden. Der Client muss erneut openDevice (UsbDevice) aufrufen, um eine neue Instanz abzurufen, um die Kommunikation mit dem Gerät wiederherzustellen.

Verwandte Themen