Блоки форматирования строк для дисплеев

Для вывода в одну строку двух значений (например: имя параметра+значение параметра) с выравниванием и дополнением (форматированием) до необходимой длинны.

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

Блоки форматирования строк для дисплеев

#1

Сообщение Labu559 » 09.01.2021{, 18:57}

В проекте представлены два блока:
1) Простой блок
Объединяет две строки в одну (операция конкатенации), дополняет пробелами до разрядности дисплея (двойное выравнивание), делает лишней операцию очистки дисплея.
2) Расширенный блок
Объединяет две строки в одну (операция конкатенации), дополняет символами (задаются в параметрах пользователя) до разрядности дисплея (двойное выравнивание), при превышении сумы длины строк выводит ошибку- ErrToBig, и также делает лишней операцию очистки дисплея- в штатном блоке LCD HD44780 это строки:

Код: Выделить всё

if (_isNeedClearDisp1) 
    {
        _lcd1.clear();
        _isNeedClearDisp1= 0;
    }
которые вызывают мерцание дисплея, и можно их закомментировать/удалить вручную перед компиляцией в Arduino IDE.
Описание в блоках присутствует.
Блоки:
-предназначены для применения с 7-ми сегментными, символьными, матричными, графическими, LED, VFD, LCD, Oled, TFT и др. дисплеями.
-настраиваются в Параметрах Пользователя по разрядности (макс.колличеству знаков/знакомест в строке дисплея).
Имеют смысл применения для дисплеев 8+ знакомест, потому ограничиваются этим минимумом в блоках.
Так это выглядит на LCD1602.Показать
LCD_DoubleAligment.png
Блоки находятся и их можно сохранить в программе из демопроекта ниже. Всем Удачи!
Для символьных дисплеев на чипе HD44780 (клонах) с загруженными пользовательскими знаками (кириллическими буквами) блок нуждается в более тщательном тестировании, выкладываю отдельно, желающих приобщиться- приветствую.
Вложения
Double_Strings_Aligment_Cyrilic_(Code_-_Basic).ubi
(39.29 КБ) 75 скачиваний
DemoLCD_2Aligment.flp
(211.88 КБ) 90 скачиваний
Последний раз редактировалось Labu559 10.01.2022{, 20:10}, всего редактировалось 4 раза.

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

Блоки выравнивания строк для дисплеев

#2

Сообщение Di123 » 09.01.2021{, 19:08}

чем он отличается от блока сложения строк ?
вы сделали на картинке тоже самое
взяли строчку пресуре и сложили её со строчкой показания + бар
посути всё что делает родной блок

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Блоки выравнивания строк для дисплеев

#3

Сообщение AlexCrane » 09.01.2021{, 19:13}

Di123, Между строчками прописываются пробелы или символы до общей длины в N символов
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

Блоки выравнивания строк для дисплеев

#4

Сообщение Labu559 » 09.01.2021{, 19:14}

Di123 писал(а):
09.01.2021{, 19:08}
чем он отличается от блока сложения строк ?
вы сделали на картинке тоже самое
взяли строчку пресуре и сложили её со строчкой показания + бар
посути всё что делает родной блок
Именно для Вас пускай будет загадкой по крайней мере пока не прочитаете описание или не столкнётесь с проблемой как здесь. Мне добавить нечего, что сделал- описал.

Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 29
Имя: Дмитрий

Блоки выравнивания строк для дисплеев

#5

Сообщение Di123 » 09.01.2021{, 20:19}

Labu559, ну так эта проблема у меня тоже была очень давно когда я только переменные использовал ещё на 5 версии
тогда я тоже гасил их через включение платы потом через переключатель а потом перешол на клемы и проблем нистало никаких

agronom
Рядовой
Сообщения: 26
Зарегистрирован: 24.05.2022{, 06:56}
Репутация: 0
Имя: Стас

Блоки форматирования строк для дисплеев

#6

Сообщение agronom » 03.06.2022{, 07:44}

с русскими буквами либо пустая строчка либо китайские ероглифы выходит

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блоки форматирования строк для дисплеев

#7

Сообщение Dryundel » 03.06.2022{, 11:34}

agronom писал(а):
03.06.2022{, 07:44}
с русскими буквами либо пустая строчка либо китайские ероглифы выходит
agronom, Labu559, попробуйте заменить функцию length() на функцию из блока Длина строки RUS+ENG

Ответить

Вернуться в «Дисплеи, индикаторы и клавиатуры»