发送数据的蓝牙格式

Bluetoothle format for sending data

目前我正在开发我的应用程序,它将在收到特定类型的数据后运行一些代码

因此,当我按下按钮时,我的 arduino 将发送以下内容: 对于按钮 1

  ble_write(0x0A);
  ble_write(0x01);
  ble_write(0x00);

对于按钮 2: ble_write(0x0A); ble_write(0x02); ble_write(0x00);

数据由我的 phone 接收,但问题是,当我按下按钮 2 时,它只会输出代码 1 而不是代码 2。这是我的应用程序的代码。

 for (int i = 0; i < data.length; i += 3) {
        if (data[i] == 0x0A) {
            if (data[i + 1] == 0x01)
                Toast.makeText(getApplicationContext(), "CODE 1", Toast.LENGTH_SHORT).show();
        } else if (data[i] == 0x02) {
                Toast.makeText(getApplicationContext(), "CODE 2", Toast.LENGTH_SHORT).show();

        }
    }

我觉得因为 for 循环它只占用一个字节并且总是将其视为代码 1。

代码基于:https://github.com/RedBearLab/Android/blob/master/Examples/Android%20Studio%20Examples/SimpleControls/src/com/redbear/simplecontrols/SimpleControls.java

我有点卡在处理这个问题上,任何帮助都会很棒。

只需移动大括号即可?

for (int i = 0; i < data.length; i += 3) {
        if (data[i] == 0x0A) {
            if (data[i + 1] == 0x01) { // <- added {
                Toast.makeText(getApplicationContext(), "CODE 1", Toast.LENGTH_SHORT).show();
            } else if (data[i + 1] == 0x02) { // added '+ 1'
                Toast.makeText(getApplicationContext(), "CODE 2", Toast.LENGTH_SHORT).show();
            }
        } //<- added }
}

还是我漏掉了什么?

最后我决定将接收到的数据(byte[])通过标准字符集转换为字符串格式。 (UTF_8)