2016-05-27 3 views
0

は、私は右のデータを受け取ったUSBアンドロイド通信usb;常にデータを返すためにUSBを再接続する必要があるのはなぜですか?

int iRes2 = conn.bulkTransfer(epOUT, bcdInfo.cbwBuffer.array(), 31, 2000); 
iRes2 = conn.bulkTransfer(epOUT, bcdInfo.finalBSTD.array(), 512, 2000); 
       bcdInfo.requestData(); 
iRes2 = conn.bulkTransfer(epIN, bcdInfo.cswBuffer, 512, 2000); 
iRes2 = conn.bulkTransfer(epOUT, bcdInfo.cbwBuffer.array(), 31, 2000); 
iRes2 = conn.bulkTransfer(epIN, bcdInfo.cswBuffer, 512, 2000); 

から/にデータを送受信するためにAndroidの通信を作成しました。問題は、あるIのみ取得権利データ

  1. は、私は別のコマンド通信を削除します。上記のコードが コマンドAであるとしましょう。コマンドAの上部にコマンドBを置くと、コマンドAの間違ったデータが です。
  2. デバッグしたいときはいつでも、私はAndroidデバイスにUSBを接続します。私は、すべてのデバッグの前にUSBのプラグを抜き、Android デバイスに再度接続する必要があることを意味します。

答えて

0

私はUSBに通信が行われたことを伝えるために、デフォルトのコマンドをUSBに送信する必要があります。その後、USBは新しいコマンドを受信する準備が整います。以下は私のデフォルトコマンドです。私はこれをOKコマンドと呼びます。

public void goOkCommand(UsbDeviceConnection conn, UsbEndpoint epOUT, UsbEndpoint epIN) { 

     ByteBuffer goOk = ByteBuffer.allocate(31); 
     goOk.putInt(0xVALUE); 
     goOk.putInt(0xVALUE); 
     goOk.put(index, (byte) 0xVALUE); 
     int iRes2 = conn.bulkTransfer(epOUT, goOk.array(), 31, 2000);//1. SEND OK COMMAND 

     //2. PREPARE MEMORY FOR RECEIVED DATA 
     byte cswBuffer[] = new byte[13]; 
     Arrays.fill(cswBuffer, (byte) 0);// put ALL 0 first 

     iRes2 = conn.bulkTransfer(epIN, cswBuffer, 13, 2000);//3. RECEIVED OK MESSAGE 
     iRes2 = conn.bulkTransfer(epIN, cswBuffer, 13, 2000); 
    } 
関連する問題