1

我有一个函数可以连续检查蓝牙的输入流的值:

private final Runnable refresh_input = new Runnable() {

    @Override
    public void run() {
        bt_read_input = GlobalVar.bt_input;
        refresh_handler.postDelayed(refresh_input, 250);
    }
};

然后另一个函数通过蓝牙发送一个十六进制字符串,然后检查上面的变量bt_read_input以查看是否收到了答案。

答案是另一个十六进制字符串,例如2b0000.

如果我收到此答案,则该应用程序运行正常。但有时应用程序崩溃,我意识到这是因为有时,我没有收到完整的字符串,而是收到了 2 次,例如:

1. 2b
2. 0000

所以我必须实现一个检查这个的函数。我认为这个函数可能类似于如果我收到的 byte[] 是 3 个字节长(2b0000 = 3byte),那么就可以了,但是如果小于 3,那么它应该将接收到的部分添加到一个新的 byte[] ,再次检查丢失的部分,并添加它以获得完整的字节[]。

我以这种方式启动此功能:

private byte[] ConfMsgCheck(byte[] b) {  //b = bt_read_input 
    byte[] ConfByte = new byte[3];

    if (b.length == 3) {
        ConfByte = b;
    }
    else if (b.length < 3) {
        ConfByte = b;
        //here is where I don't know how to continue, because I should do something like a loop
        //that checks again the value of b (bt_read_input) and adds it again to ConfByte.

    }
    return ConfByte;
}
4

0 回答 0