Со временем начинает игнорироваться delay

я твёрдо решила, что когда, например, грустно, то советы в стиле “не грусти” не имеют ценности. Как и советы в стиле “хорошо делай, а плохо не делай”. Слишком общие фразы не несущие никакой смысловой нагрузки. Я ведь не экстрасенс, который четко знает в каждый момент времени хорошо и правильно я делаю, или не особо. Уверена как и вы

Прокомментирую, они тоже не знают, а иногда на таких простых житейских вещах промашки делают…диву даёшься…
PS это я как дзен-буддист местного форума отрефлексировал )))

Аналогия неверная.
Более подходящая: “Если грустно, сходи в кино/почитай книжку/пригласи друзей/купи билет на самолет в Бразилию.”
Т.е. совет не абстрактный, а конкретный. Например, в №4 сообщении вполне прозрачный совет следить за выходом за пределы массива, в который принимается сообщение.

Ну понятное дело, что столкнувшись с проблемами, вызванными отсутствием контроля памяти, я в дальнейшем буду стараться контролировать этот момент)

Это как сказать “аккуратно” человеку, который был неаккуратным и уже до этого совета поплатился за это. Теперь то он и сам знает)

Но практика показывает, что с первого раза это не доходит. По крайней мере, по поводу аккуратности.

а что показывает практика по полезности “аккуратно”?)

Показывает, что можно сэкономить себе на этом кучу времени.

Еще может быть любопытно разобраться, почему не хватает 64 байт для сбора строки? (Я ответа не знаю). В рабочей программе причина этой нехватки может быть значимой.

Да, пока это единственное, что не прояснено

А что с ПК отправляется, в каком виде и объеме?

да ничего там не отправлялось. С телефона происходило подключение и на этом всё. Тестовая отправка данных, получение ответов. А потом пустота

…пример приведете? Не принуждаю, конечно, но если интересна причина переполнения…

То, что отправляла я лично, не могло дать такой эффект. Короткий набор случайных символов до 10 штук. При коннекте дисконнекте блютуз генерировал соответствующие ответы, но тоже строки были не больше 20-30 символов до символа новой строки. Пусть у кода на тот момент еще не было условия проверки потенциального переполнения, но была проверка на эти символы конца строки с обнулением массива. Так что по идее эти данные тоже не могли никак такое вызвать

Чтобы выяснить, нужно вернуться к изначальным вводным, модифицировать код для удобного лога и подрубить всё это дело к компьютеру. Дождаться проблем и анализировать данные. Правда у меня виндовс магазин не рабочий, не скачивает мне программы. А блютуз терминал не хочется качать с левых сайтов. Вообще не люблю так софт качать

Если эти символы приходили, конечно… С софтварным сериалом нужно держать ухо востро.
Я бы подвесил вкл светодиода на strlen >= 63.

собрать на esp32 с блютузом, долбить в нано с записью лога (можно в sqlite3, он на esp хорошо работает)

Всем привет!

Была аналогичная ситуация. Недавно писал программу для одной мультимедийной игрушки-телефона на Ардуино-Nano. Суть программы такова. Если трубка опущена и сработал датчик движения возле телефона, то телефон начинает звонить. Снимаешь трубку, в ухо проигрывается звуковой ролик с SD-карты, затем короткие гудки. Кладёшь трубку. После этого система какое-то время ожидает повторного снятия трубки, после чего повторно активирует датчик движения. Если же повторно снять трубку, то идёт сигнал зума и можно при помощи дискового номеронабирателя набрать номер. Если на SD карте есть файл, имя которого соответствует набранному номеру, то он воспроизводится, если нет, воспроизводится фраза “Неправильно набран номер”, а затем короткие гудки. И так в цикле. Столкнулся с аналогичной проблемой: программа написана правильно, код отлажен на несколько раз. И тем не менее, через какое-то время программа начинает глючить. Может через сутки, а может и через 15 минут после включения. Абсолютно непредсказуемо. Попытки фиксировать логи работы программы на ту же SD результата не дали, ибо ошибка непредсказуема. Удалось решить проблему только путём изменения алгоритма работы программы: я организовал программно-аппаратную перезагрузку (подключил один из портов к пину Reset), и при каждом опускании трубки ардуинка уходит в перезагрузку. Только так удалось добиться стабильности устройства. Теперь при непрерывной работе в режиме 24х7 зависает раз в пару месяцев, не чаще.

Одно явно противоречит другому.

Супер! Отличное решение!

Зато

:slight_smile:

костылями и синей изолентой. :slight_smile: