Всем салют! Любителям поуправлять чем-нибудь с телефона может оказаться полезной наша новая статья на вики: Связываем Arduino и Android через Bluetooth Пользуйтесь на здоровье. Вопросы, замечания, критика, как всегда, приветствуются!
Можете рассказать, как корректно отправить строку "a1" по Bluetooth? Как я понял, надо сформировать byte[] массив и отправить его в поток: Код (C): byte[] value = (redButton.isChecked() ? "a1" : "a0").getBytes(); outStream.write(value); А на стороне Arduino: Код (C): char uid[0]; char value[10]; if (Serial.available()) { uid[0] = Serial.read(); int i = 0; delay(50); while (Serial.available() && i < 6) { value[i++] = Serial.read(); } Но, конечно же, с первого раза ничего не заработало.
Похоже на правду, если бы не пара моментов. Массив `uid` состоит из 0 элементов. Попытка присвоить нечто для `uid[0]` приведёт к записи в «чужую» память, что может привести к зависанию и точно ни к чему хорошему. Если вы хотите собрать именно строку в `value`, вам нужно не забыть про терминальный ноль. Т.е. добавить к вашему сниппету: Код (C): value[i] = 0x00;
С ним все нормально. Этот пример для связи в сторону Arduino. Лампочками помигал, но теперь хочется и чтобы смартфон данные считывал. Насколько я понял, для слушания входящего потока необходимо создавать отдельный поток Код (C): clientSocket.getInputStream(); В интернете есть только один пример с обратной связью и доступными исходниками, и то, эта статья уже не существует на оригинальном сайте. Вот с кэша Яндекса: Схем.NET Но с моим опытом Android-программирования на уровне тыка ничего не заработало. Продолжаю разбираться...