Формат Bluetooth для отправки данных

#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.

Код основан на: https://github.com/RedBearLab/Android/blob/master/Examples/Android Studio Examples/SimpleControls/src/com/redbear/simplecontrols/SimpleControls.java

Я как бы застрял в решении проблемы, любая помощь была бы отличной.

Ответ №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)