我正在尝试实现 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();
}
}
变量请求是 EditText,日志是对 TextView 的引用,因此我可以显示一些调试信息。首先我使用 bulkTransfer 方法发送字符,然后我使用 USBRequest 排队请求读取 in 端点上的数据,显然它正确发送了字符,但是当我显示接收到的字符时,它显示了一些奇怪的符号,比如汉字或内部带有问号的菱形(几乎总是这是响应)。我想知道我用于此通信的代码是否正确,如果正确,那我为什么会收到那些奇怪的字符?
非常感谢你的帮助
PD:对不起我的英语。