Столкнулся с вот таким парадоксом:
Имею Bluetooth модуль HC-05 который цепляется и отправляет команды на Bluetooth relay.
Так вот, если отправлять команду через Serial.read() , то все работает как надо.
А вот отправляю программно
char* str="A0............B0..............c0........D0............e0";
BTSerial.write(str);
, реле команду принимает, но не реагирует.
Помогите пожалуйста.
Программу предоставьте. А то мы будем говорить о разном.
Вот так если через порт ввести строку A0............B0..............c0........D............e0 - все работает.
А вы уверены, что результат работы write(char*) и print(String&) одинаковы?
А если вывести str на компорт, то чего там будет? После 10 строки вставьте Serial.print(str), хотя тоже не вариант. Принт может добавлять спецсимволы в начале и конце строки. Передавайте посимвольно.
так тоже не работает (
А что за библиотека для BT? Приведите заголовок метода write. Или нет библиотеки и это просто Serial? Если так, то wirte используется неверно.
так тоже не работает (
Ну, так бы сразу.
В таком виде она у Вас только 1 байт отправляет. Добавьте длину строки
Заработало! Но, не так как ожидалось: вместо того чтобы включить 5шт реле включает только последние. Куда то деваются данные.
Разбирайтесь. Печатайте отладочную информацию, смотрите.
Интересно даже куда ж это данные то деваются...
Сарказм.
Длина буфера порта по умолчанию вроде 64 байта.
А вы туда пытаетесь впихнуть невпихуемое.
В String один символ занимает 2байта.
Сначала пишите куда нибудь. Потом уже отсылайте
Бред какой.
Действительно! Решилось путем дробления на пакеты. Еще оказалось важным чтобы скорость порта и устройства были идентичны (для меня это было открытием).
Рабочий скрипт получился таким:
А что за капризный реле с таким странным управлением точечками в команде?