繁体   English   中英

在Android主机和USB设备之间建立通信

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM