0

我正在使用 USB 从 android 应用程序向 arduino 发送和接收数据。我从 Arduino 收到的数据byte[]格式如下:

UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //Defining a Callback which triggers whenever data is read.
        @Override
        public void onReceivedData(byte[] arg0) {
            String data = null;
            try {
                data = new String(arg0, "UTF-8");
                displaySnackbar(data);
                data.concat("/n");
                tvAppend(textView, data);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    };

我可以TextView使用 tvAppend 方法将收到的所有数据放入 a 中:

private void tvAppend(TextView tv, CharSequence text) {
    final TextView ftv = tv;
    final CharSequence ftext = text;

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            ftv.append(ftext);
        }
    });
}

但我无法设法将数据显示在Snackbar...

public void displaySnackbar(CharSequence data){
    View parentLayout = findViewById(R.id.activity_usb);

    data="hola "+data.toString()+ " end";
    Snackbar.make(parentLayout, data, Snackbar.LENGTH_LONG)

            .setAction("Action", null)
            .show();

我如何转换数据变量以便能够用小吃栏显示它?

我觉得我错过了一些东西,但我不知道是什么......提前谢谢!

4

1 回答 1

0

答案与变量本身无关!问题与接收的数据量有关。我实现的解决方案使用 StringBuffer,它允许正确显示字符串!:

private StringBuffer buffer = new StringBuffer();

public void displaySnackbar(CharSequence text){
    final CharSequence ftext = text;
    View parentLayout = findViewById(R.id.activity_usb);

    buffer.append(ftext);
    Snackbar.make(parentLayout, buffer, Snackbar.LENGTH_LONG)

            .setAction("Action", null)
            .show();
于 2016-04-21T15:50:03.310 回答