[英]USB communication between Android (accessory mode) and Windows PC (host)
[英]Establish communication between Android host and USB Device
我正在尝试在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:对不起,我的英语。
我对这个问题有点不清楚。 但是,如果您使用某种minicom / putty类型的终端应用程序来显示显示,我建议正确设置波特率。 如果那不是问题,那么您能否在说接收到的字符时澄清一下-是在Android Host设备上接收到字符还是在USB设备上?
如果发送字节数组,您还将获得字节数组。
因此,请使用方法get(index of byte)
而不是使用getChar(index)
!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.