2016-04-04 7 views
1

私はAsyncTaskでUSB接続を実行します。接続を使用しようとすると、バルク転送関数が返されない場合があります。 AsyncTaskを終了すると、マシンを再起動しない限り、接続は機能しなくなります。AndroidクレームされたUSBインターフェイスをプログラマチックに解放する方法

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); 

最後のログは到達しません。

インターフェイスをプログラマチックに解放して接続を再確立する方法はありますか?

このlogcatエラー

E/UsbDeviceConnectionJNI: device is closed in native_claim_interface 

答えて

0

は、渡されたタイムアウトを長くしてみている、あなたは0を渡している、2000ミリ秒またはそのような何かを置きます。

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

I)は、確かに知ってより多くの経験を持つ誰かが答えを与えることができると思いますが、リリースのための通信は、あなたが(近くに呼び出すことができません。

According to the documentation:

リリースデバイスに関連するすべてのシステムリソース。オブジェクト が閉じられると、再度使用することはできません。クライアントは、 openDevice(UsbDevice)に再度呼び出して新しいインスタンスを取得し、デバイスとの通信を再確立する必要があります( )。

関連する問題