目前我正在处理我的应用程序,它将在收到特定类型的数据后运行一些代码
所以当我按下按钮时,我的arduino将发送以下信息: 对于按钮1
ble_write(0x0A);
ble_write(0x01);
ble_write(0x00);
按钮2的: ble_write字符(0x0A); ble_write(0×02); ble_write(0×00);
我的手机收到数据但问题是,当我按下按钮2时,它只会输出代码1 toast而不是代码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。
我有点难以处理这个问题,任何帮助都会很棒。
答案 0 :(得分:0)
只需移动花括号吗?
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 }
}
或者我错过了什么?
答案 1 :(得分:0)
最后,我决定通过标准字符集将接收到的数据(byte [])更改为字符串格式。 (UTF_8)