#android #bluetooth #arduino #bluetooth-lowenergy
#Android #bluetooth #arduino #bluetooth-низкое энергопотребление
Вопрос:
В настоящее время я работаю над своим приложением, которое будет запускать некоторый код после получения определенного типа данных
Поэтому, когда я нажимаю на кнопку, мой arduino отправляет следующее: для кнопки 1
ble_write(0x0A);
ble_write(0x01);
ble_write(0x00);
для кнопки 2:
ble_write(0x0A);
ble_write(0x02);
ble_write(0x00);
Данные поступают на мой телефон, но проблема в том, что при нажатии кнопки 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.
Я как бы застрял в решении проблемы, любая помощь была бы отличной.
Ответ №1:
Просто переместите фигурные скобки?
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. Это не решило проблему, но спасибо за комментарий. В нынешнем виде, когда данные получены, код выдает только тост «Код 1». Я думаю, это из-за цикла for, но я попытался удалить цикл for, но, похоже, мне нужно использовать этот цикл, чтобы иметь возможность получить доступ к данным. Я попытался использовать такой метод, как so If (data = 0x02), но это вообще ничего не дало.
2. Попробуйте распечатать массив байтов в виде шестнадцатеричной строки, чтобы увидеть, что вы на самом деле получаете при нажатии каждой из кнопок. Используйте метод здесь: browxy.com/SubmittedCode/606209
Ответ №2:
В конце концов я решил изменить полученные данные (byte [] ) на строковый формат с помощью стандартного набора символов. (UTF_8)