Неполное сообщение при приеме сообщения по Bluetooth
- Войдите на сайт для отправки комментариев
Гайз, нужна помощь, вы последняя надежда. Есть проблема с передачей данных по bluetooth. Ситуация такая: есть две ардуинки с hc-05 на борту каждой, один мастер, другой слэйв, соответственно, сопряжение есть, все ок. Тему я некорректно назвал немного, не знаю, как иначе. Суть в том, что я передаю какую-то переменную, не суть, пусть обычный инкремент. На ведомой ардуинке вывожу в сериал порт эту переменную, все отлично работает. На этой же ведомой ардуинке есть еще одна какая-то переменная, ее вывожу в сериал порт и тоже все отлично отображается. Но когда я пытаюсь объеденить две этих переменных и показать в терминале, то происходит такая вещь: значение первой переменной с мастер ардуинки обрывается после первого символа, переносится на другие строки, да и вообще полная сотона твориться, вторая же переменная отображается корректно. Вывожу в таком формате:
Serial.print(master); Serial.print(slave); Serial.print("\n");
На самом деле перепробовал десятки вариантов, объединял в одну строку на более ранних этапах, баловался с задержками, baud rate и так далее. Кстати, baud rate менял, ставил 38400, ставил 9600, проблема остается. В AT командах стоит та же скорость, что и в скетче, если что, проблема не в этом.
Я думаю, что проблема возникает из-за того, что ардуинки не синхронизированы между собой. Первая ардуинка не дожидается второй, че успела получить, то на вывод и отправляет. Хотя опять же странно, когда одну переменную вывожу, то разрывов этих не случается. Пробовал делать проверку по длине сообщения по типу if(master.lenght()>=3), но это ни к чему не привело.
Очевидное решение для меня - это организация некой проверки на то, что пакет прибыл в целости и сохранности, а только потом производить дальнейшие действия. Вот здесь я обращаюсь к вам, ребят. Не знаю, как такую проверку сделать, куда можно почитать зайти? Или может проблема в чем-то еще? Уже неделю тыкаюсь, а результат все равно один и тот же.
Скетчи приёмника и передатчика, как можно более короткие, только чтобы продемострировать проблему, приведите.
Иначе Ваше сообщене выгядит как "у меня ХЗ какая программа и она ХЗ как работает, ХЗ что делать".
Скетч мастер ардуинки
Фрагмент скетча слэйв ардуинки
Нет, Вы не поняли. Вы уж выделите фрагмент в законченном виде. чтобы я мог его просто запустить у себя, и увидеть Вашу проблему.
Хотя, уже в этом куске что-то странное написано. Вы не скапливаете всю строку в риёмнике, а получив первый же символ, кидаетесь что-то делать. А кто будет строку целиком получать?
А датчики вы тоже сейчас паять будете, чтобы проверить? Просто это не даст вам никакого профита, если я скину полный код. Значения переменных это данные с гироскопа и потенциометра
Объясните, пожалуйста, как получить полную строку?
ПОлучать посимвольно и накапливать в строке пока не будет получен признак конца строки, например.
А датчики вы тоже сейчас паять будете, чтобы проверить? Просто это не даст вам никакого профита, если я скину полный код. Значения переменных это данные с гироскопа и потенциометра
Не буду. Вы сделайте скетч со случайными (или даже фиксированными) значениями переменных, снятых датчиков, главное, чтобы была видна проблема.
А профита мне никакого и не надо - он Вам нужен. А так ... ну, вот смотрю я на Ваш код. Что за переменные, каких они типов ... хрен его знает.
мяу
ПОлучать посимвольно и накапливать в строке пока не будет получен признак конца строки, например.
Честно не сталкивался еще с таким, как вы видите. Буду благодарен, если подскажете, как такое сделать или буду рад ссылочке на форум или статейку. Могу и сам пойти бороздить интернет и тыкать, но это время
Ни хрена не поняли. Я ж Вам писал ", как можно более короткие, только чтобы продемострировать проблему". Ну сделайте короткий код на пять строк - лишь бы проблема видна была. Мне что и впрямь датчикии паять?
Да блин, я тогда не понял, я же и так в первый раз самую суть скинул и все детально описал.
Коротки, работающий скетч, который можно запустить и увидеть проблему. Теперь поняли?
ну дело опять же в том, что вам блютуз модули нужны, писать AT команды, сопрягать их, настраивать. ладно, спасибо за наводку, пойду по строкам матчасть читать, как их заполнять до конца