Всем привет. Возникла проблемы при работе виджета Терминал с русским языком, а именно при передачи на терминал. Появляются битые буквы в разных местах.
Как я понял она делает пробел((( Скажите а почему при передаче командой println то некоторые строки съезжают раньше времени. т.е. перенос в терминале скачет по разному. Не подскажите по какой причине это может быть?
Действительно, фигня.
Я бы перед выводом в widget терминала сделал бы Serial.println этих же строк, чтобы убедиться что в них нет “дырок” из непечатных кодов. Может ты где-то у себя в коде по char * указателю промахиваешься и попадаешь в область памяти этих строковых констант, и пишешь туда “грязь”.
Я не верю в глюкавость виджета - уж больно это очевидная ошибка.
Да запросто можно попасть.
Например, ты пишешь:
char message[] = “7.Livolo enable”;
message займет 16 байт в ОЗУ.
Потом где-то далее, например:
char *p = message; (Компилятор ругнется, но пропустит)
И еще где-то дальше, например
p[5] = 10;
Что будет ? Байт со значением 10 попадет прямехонько на место буквы ‘o’ в слове “Livolo”.
А что такое код 10 ? Это символ NL - новая строка. Вот твоя строка-константа и разрубилась на 2 части.
Это я, конечно, в явном виде написал, в реальности все может быть конечно не так конкретно и не так заметно, но с тем же результатом
Крч проверил там все гуд. Текст нормальный без грязи. Я даже не знаю че куда еще копнуть то.
Самое интересное что вопрос то не только в переносах а в том что даже бывает не дописывает предложение. т.е. часть напечатает и все а часть нет вообще. Ау разработчики вы где как можете прокомментировать это
Проверил на своей программе, все четко выводится, по крайней мере код из сетапа. Нужно капать код, поочередно отключать функции и искать какая часть кода блокирует терминал.
Так в том и фиг что думаю это глюк виджета в плане задержек. Т.е. если ставить просто вывод строк в сетапе без задержек по времени то все ок. если как у меня прям один в один с инициализацией устройств т.е. задержками то такая вот катавасия. И еще вопрос почему терминал может недописывать строку. Например строк одна два слова а печатает полтора остальную не видно как бы. И на долю секунды ее видно когда делаю очищение терминала? есть иди?