1

Android ホストと USB デバイス間の双方向通信を実装しようとしています。もちろん、Google が提供する USB Host API を使用しています。USB デバイスには、受信した文字をエコーするファームウェアが含まれています。ユーザーは、EditText に文字を挿入し、ボタンを押して文字を送信するだけです。ここにコードがあります

public void sendData(View v){
    final String character = request.getText().toString() + "\n\r";
    log.setText(log.getText() + "\n" + "Sending...");
    if(character != null){          
        Thread t = new Thread(new Runnable() {              
                @Override
                public void run() {                     
                    byte[] array = character.getBytes();
                    Log.d("USB", "Sending Data...");
                    mDeviceConnection.bulkTransfer(mEndpointOut, array, array.length, 100);                 
                    ByteBuffer output_buffer = ByteBuffer.allocate(array.length);
                    Log.d("USB", "Creating Buffer");
                    UsbRequest req = new UsbRequest();
                    req.initialize(mDeviceConnection, mEndpointIn);
                    req.queue(output_buffer, array.length);                             
                    if(mDeviceConnection.requestWait() == req){
                        Log.d("USB", output_buffer.getChar(0) + "");                            
                        Message m = new Message();
                        m.obj = output_buffer.array();
                        handler.sendMessage(m);
                        output_buffer.clear();                      
                    } else{
                        Log.d("USB", "No USBRequest received");
                    }
                }
            });
        t.start();
    } 

}

変数 request は EditText です。log は TextView への参照であるため、デバッグ情報を表示できます。最初にbulkTransferメソッドを使用して文字を送信し、次にUSBRequestを使用してinエンドポイントでデータを読み取るリクエストをキューに入れます。明らかに文字を正しく送信しますが、受信した文字を表示すると、漢字などの奇妙な記号が表示されますまたは、内部に疑問符が入ったひし形 (ほとんどの場合、これが応答です)。この通信に使用するコードが正しいかどうかを知りたいのですが、正しい場合、なぜその奇妙な文字が表示されるのでしょうか?

助けてくれてどうもありがとう

PD: 私の英語でごめんなさい。

4

2 に答える 2

0

私は質問について少し不明です。しかし、ディスプレイを表示するために minicom/putty のような端末アプリケーションを使用している場合は、ボーレートを正しく設定することをお勧めします。それが問題ではない場合、受け取った文字と言うときを明確にしてもらえますか?それは、Android ホスト デバイスで受信した文字を意味しますか、それとも USB デバイスを意味しますか?

于 2012-11-13T12:57:31.717 に答える