Новая статья на вики: про Bluetooth и Android

Тема в разделе "Анонсы", создана пользователем nailxx, 4 июн 2013.

  1. nailxx

    nailxx Официальный Нерд Администратор

    Всем салют!

    Любителям поуправлять чем-нибудь с телефона может оказаться полезной наша новая статья на вики:

    Связываем Arduino и Android через Bluetooth

    Пользуйтесь на здоровье. Вопросы, замечания, критика, как всегда, приветствуются!
     
    karagad нравится это.
  2. Mitrandir

    Mitrandir Гуру

    У меня такая мобилка была как на первом фото))
     
    nailxx нравится это.
  3. Makhonin

    Makhonin Гик

    Можете рассказать, как корректно отправить строку "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();
        }
     
    Но, конечно же, с первого раза ничего не заработало.
     
  4. nailxx

    nailxx Официальный Нерд Администратор

    Похоже на правду, если бы не пара моментов. Массив `uid` состоит из 0 элементов. Попытка присвоить нечто для `uid[0]` приведёт к записи в «чужую» память, что может привести к зависанию и точно ни к чему хорошему.

    Если вы хотите собрать именно строку в `value`, вам нужно не забыть про терминальный ноль. Т.е. добавить к вашему сниппету:

    Код (C):

    value[i] = 0x00;
     
     
  5. Makhonin

    Makhonin Гик

    Хотелось бы увидеть продолжение статьи для обратной связи
     
  6. nailxx

    nailxx Официальный Нерд Администратор

    Хммм... А с тем примером, который вы приводили, дело не заладилось?
     
  7. Makhonin

    Makhonin Гик

    С ним все нормально. Этот пример для связи в сторону Arduino. Лампочками помигал, но теперь хочется и чтобы смартфон данные считывал. Насколько я понял, для слушания входящего потока необходимо создавать отдельный поток
    Код (C):
    clientSocket.getInputStream();
    В интернете есть только один пример с обратной связью и доступными исходниками, и то, эта статья уже не существует на оригинальном сайте. Вот с кэша Яндекса:
    Схем.NET
    Но с моим опытом Android-программирования на уровне тыка ничего не заработало. Продолжаю разбираться...