Класс LiquidLine из Arduino библиотеки LiquidMenu для создания меню на LCD дисплее

Добавлено 14 апреля 2018 в 17:16

Данный класс представляет собой отдельные строки, напечатанные на дисплее.

#include <LiquidMenu.h>
Библиотека LiquidMenu

Это самый нижний класс в иерархии, он содержит указатели на переменные/константы, которые будут напечатаны, где расположена строка, где будет расположен индикатор фокуса и указатели на функции обратного вызова. Объекты этого класса передаются в объект LiquidScreen, который управляет ими. Публичные методы данного класса предназначены только для конфигурации.

Содержание

Дружественные классы

LiquidScreen

Конструкторы

LiquidLine (uint8_t column, uint8_t row)

Основной конструктор. Это главный конструктор, который вызывается каждый раз.

Синтаксис

LiquidLine::LiquidLine(uint8_t column,
                       uint8_t row 
                      )

Параметры

  • column – столбец, с которого начинается строка;
  • row – строка, в которой печатается строка.
LiquidLine (uint8_t column, uint8_t row, A &variableA)

Конструктор с одной переменной/константой.

Синтаксис

template<typename A>
LiquidLine::LiquidLine(uint8_t column,
                       uint8_t row,
                       A & 	variableA 
                      )

Параметры

  • column – столбец, с которого начинается строка;
  • row – строка, в которой печатается строка;
  • &variableA – переменная/константа, которая будет напечатана.
LiquidLine (uint8_t column, uint8_t row, A &variableA, B &variableB)

Конструктор с двумя переменными/константами.

Синтаксис

template<typename A , typename B>
LiquidLine::LiquidLine(uint8_t column,
                       uint8_t row,
                       A & 	variableA,
                       B & 	variableB
                      )

Параметры

  • column – столбец, с которого начинается строка;
  • row – строка, в которой печатается строка;
  • &variableA – переменная/константа, которая будет напечатана;
  • &variableB – переменная/константа, которая будет напечатана.
LiquidLine (uint8_t column, uint8_t row, A &variableA, B &variableB, C &variableC)

Конструктор с тремя переменными/константами.

Синтаксис

template<typename A , typename B , typename C>
LiquidLine::LiquidLine(uint8_t column,
                       uint8_t row,
                       A & 	variableA,
                       B & 	variableB,
                       C &  varuableC
                      )

Параметры

  • column – столбец, с которого начинается строка;
  • row – строка, в которой печатается строка;
  • &variableA – переменная/константа, которая будет напечатана;
  • &variableB – переменная/константа, которая будет напечатана.
  • &variableC – переменная/константа, которая будет напечатана.
LiquidLine (uint8_t column, uint8_t row, A &variableA, B &variableB, C &variableC, D &variableD)

Конструктор с четырьмя переменными/константами.

Синтаксис

template<typename A , typename B , typename C , typename D>
LiquidLine::LiquidLine(uint8_t column,
                       uint8_t row,
                       A & 	variableA,
                       B & 	variableB,
                       C &  variableC,
                       D &  variableD
                      )

Параметры

  • column – столбец, с которого начинается строка;
  • row – строка, в которой печатается строка;
  • &variableA – переменная/константа, которая будет напечатана;
  • &variableB – переменная/константа, которая будет напечатана,
  • &variableC – переменная/константа, которая будет напечатана,
  • &variableD – переменная/константа, которая будет напечатана.

Публичные методы

add_variable()

Добавляет переменную в строку.

Синтаксис

template<typename T>
bool LiquidLine::add_variable(T & variable)

Параметры

&variable – ссылка на переменную.

Возвращает

true в случае успеха и false, если максимальное количество переменных уже было достигнуто.

Примечание

Максимальное количество переменных на строку указывается в LiquidMenu_config.h как MAX_VARIABLES. По умолчанию равно 5.

attach_function()

Прикрепляет к строке функцию обратного вызова.

number используется для идентификации. Функция обратного вызова позже может быть, когда строка выделена с помощью LiquidMenu::call_function(uint8_t number) const.

Синтаксис

bool LiquidLine::attach_function(uint8_t number,
                                 void(*)(void) function 
                                )

Параметры

  • number – номер функции, используемый для идентификации;
  • *function – указатель на функцию.

Возвращает

true в случае успеха и false, если максимальное количество функций уже было достигнуто.

Примечание

Нумерация функций начинается с 1.

Максимальное количество функций на строку указывается в LiquidMenu_config.h как MAX_FUNCTIONS. По умолчанию равно 8.

set_asGlyph()

Преобразует переменную byte в индекс глифа.

Если с помощью DisplayClass::createChar(byte index, byte character[8]) был создан пользовательский символ (глиф), то при использовании данного метода он может быть отображен как обычная переменная.

Синтаксис

bool LiquidLine::set_asGlyph(uint8_t number)	

Параметры

number – номер переменной, которая будет преобразована в индекс.

Возвращает

true в случае успеха и false, если тип переменной с данным номером не byte.

set_asProgmem()

Преобразует переменную указателя const char в переменную указателя const char PROGMEM.

Используйте данную функцию, чтобы сообщить объекту, что прикрепленная переменная указателя const char сохранена во флеш памяти, а не в RAM как обычная переменная.

Синтаксис

bool LiquidLine::set_asProgmem(uint8_t number)

Параметры

number – номер переменной, которая будет преобразована.

Возвращает

true в случае успеха и false, если тип переменной с данным номером не const char[].

set_focusPosition()

Настраивает позицию индикатора фокуса для строку.

Допустимые значения – LEFT, RIGHT и CUSTOM. Позиция CUSTOM является абсолютной и поэтому нуждается в указании столбца и строки, в которых будет напечатан индикатор.

Синтаксис

bool LiquidLine::set_focusPosition(Position position,
                                   uint8_t column = 0,
                                   uint8_t row = 0 
                                  )

Параметры

  • positionLEFT, RIGHT или CUSTOM;
  • column – если используется CUSTOM, данная переменная указывает столбец:
  • row – если используется CUSTOM, данная переменная указывает строку.

Возвращает

true в случае успеха и false, если позиция указана неправильно.

Примечание

Position – это класс перечисления. При указании позиции используйте Position::(член класса).

Теги

ArduinoLCD дисплейМенюПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.


  • 2019-11-28antzol

    Если параметров слишком много, и их можно логически объединить, то, возможно, стоит использовать структуры.
    Объединить все (или частично) дополнительные переменные в структуру и передать её одним аргументом конструктору LiquidLine. Это будет лучше и более читаемо, чем передавать десяток аргументов.

  • 2019-11-28Michal

    строка в программе LiquidLine liq_ln5(0, 0, "F:", freq, " L:", sethod," ",bat,"%");
    дает ошибку

    no matching function for call to 'LiquidLine::LiquidLine(int,
    int, const char [3], int&, const char [4], int&, const char [3],int&, const char [2])';


    пробовал изменить в LiquidMenu_config.hMAX_VARIABLES на 8, все равно выдает ошибку.
    К примеру, строка LiquidLine liq_ln5(0, 0, "F:", freq, " BAT:", bat); проходит, добавляешь еще одну переменную или символ сразу такая же ошибка.