Я в принципе тоже так сделал, только очистку экрана не делал. Просто пробелы добавил там где надо.
Я так и сделал.
Какая версия FLProg?Aleksandr2 писал(а): ↑09.01.2021{, 09:43}Дисплей LCD1602. На нижней строке в определенных режимах отображается время, температура, настройка дней недели. Заметил особенность. Если надпись в предыдущем режиме занимает в строке 16-ть символов, а в последующем режиме надпись в этой же строке меньше 16-ти символов, то остаются непогашенными оставшиеся не занятыми символы предыдущего режима работы.
так происходит если платы работают по условию.
Версия 7.3.0Dryundel писал(а): ↑09.01.2021{, 13:56}Какая версия FLProg?Aleksandr2 писал(а): ↑09.01.2021{, 09:43}Дисплей LCD1602. На нижней строке в определенных режимах отображается время, температура, настройка дней недели. Заметил особенность. Если надпись в предыдущем режиме занимает в строке 16-ть символов, а в последующем режиме надпись в этой же строке меньше 16-ти символов, то остаются непогашенными оставшиеся не занятыми символы предыдущего режима работы.
Проект выложите.
По условию это как?
Не стоит блоки дисплея размещать в платах работающих по условию. Это лишает их возможности правильно отрабатывать стирание.
Каждая плата может работать или не работать по определенному условию. (Двойной клик по шапке платы)
Спасибо Андрей!Dryundel писал(а): ↑09.01.2021{, 17:47}Каждая плата может работать или не работать по определенному условию. (Двойной клик по шапке платы)
Отправлено спустя 2 минуты 55 секунд:
Aleksandr2, в вашем проекте таких плат нет. Проблема со стиранием вероятно связана с использованием пользовательского блока дисплея.
Спасибо Василий!Labu559 писал(а): ↑09.01.2021{, 19:04}Aleksandr2,
Для Вашей ситуации решение находится здесь.
Очистка дисплеев- увеличение в два раза времени обновления данных и без того медленного процесса.
При применении штатного блока LCD HD44780 происходитнезависимо от того находится блок в плате выполняющейся по условию или нет. Дисплей конечно очищается, а переменная с данными дисплея нет, потому при получении разрешения/в порядке очереди старые данные поступают в очищенный дисплей, обновляются и опять идут в дисплей, но уже без очистки (флаг сброшен _isNeedClearDisp1= 0). Можно делать/делают: 1) по детектору изменения данных делать очистку, после слать данные (недостаток выше описан, данные прыгают по дисплею); 2) проверять длинну данных и если меньше предыдущей делать очистку, потом слать данные (недостатки те же) ; 3) формировать данные одной фиксированной длинны/колличества символов/знакомест(не всегда возможно); 4) формировать длинну строк по числу всех знакомест дисплея (блоки по ссылке), для двух последних очистка вообще лишняя процедура, так как новые данные заменяют собой старые полностью. Ваш проект поправить не могу, моя версия 6.3.1 его не открывает.очистка дисплея вначале каждого циклаПоказатьClearDisplay.png
Удачи!
У Вас в профиле заблокированы личные сообщения.
Aleksandr2, скорее всего Вам это решение не подойдет. Вы используете русифицирующий блок, а предлагаемый Labu559 блок, не сможет работать с кириллическими символами, т.к. основан на функции length(), которая не умеет этого делать.
В этот раз я заполнил лишние позиции в строках пробелами. Конечно не слишком изящно в изготовлении устройства, но пользователи (жена и сын) ничего не заметят. Сейчас все работает правильно и никаких лишних символов нет.
Андрей!
Не знаю на сколько "красивое", но для HD44780 c загруженными пользовательскими знаками (кириллическими символами) в CGRAM необходимо просто отделить/изъять комманду 0х80 доступа к пользовательской памяти от адреса регистра, которых 8-мь (в таком случае функция length() работает как положено) и ес-но такая версия блока тоже имеется на стадии "зависшего" тестирования, хотя мной и проверенная давно, но уже забытая. Если укажете чей/откуда блок с руссификацией используете (не для 7-х версий),- смогу проверить на совместимость. Тут вероятно о универсальности говорить не приходится, у каждого автора свои методы/биб-ки. Если разрешите личные сообщения в своём профиле- предоставлю Вам тест и мою благодарность. В паблик тесты не публикую- не хочу загаживать форум непроверенными блоками.