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: 私の英語でごめんなさい。