API для описания интерфейса HMI.
Подробнее...
#include <stdint.h>
См. исходные тексты.
|
#define | ITEM_FLAG_RO 0x00 |
| По-умолчанию (только чтение)
|
|
#define | ITEM_FLAG_RW 0x01 |
| Возможно изменение значения
|
|
#define | ITEM_FLAG_SU 0x02 |
| Требуется режим суперпользователя
|
|
#define | MENU_PROTOTYPE(name) const menu_t name; |
| Макрос описания прототипа меню
|
|
#define | MENU_ITEMS_COUNT(menu) (sizeof(menu) / sizeof(menu_item_t)) |
| Макрос для вычисления кол-ва элементов меню
|
|
#define | MENU_ITEM(text, type, flags, param, ptr) {text, type, (flags), (param), (void *)(ptr)} |
| Макрос описания элемента меню
|
|
#define | BEGIN_MENU(name) const menu_item_t name##_items[] = { |
| Макрос начала блока описания меню
|
|
#define | END_MENU(name, text) |
| Макрос конца блока описания меню
|
|
#define | BEGIN_STRING_LIST(name) const char * const list_##name[] = { |
| Макрос описания начала списка строк
|
|
#define | END_STRING_LIST }; |
| Макрос описания конца списка строк
|
|
#define | LIST_ITEMS_COUNT(list) (sizeof(list) / sizeof(char *)) |
| Макрос определения количества элементов в списке строк
|
|
#define | DECLARE_COMBOBOX(name, slot, lst) |
| Макрос описания комбобокса
|
|
|
enum | menu_item_type_t {
ITEM_TYPE_BIT = 0
, ITEM_TYPE_BIT_P
, ITEM_TYPE_BIT8
, ITEM_TYPE_INT
,
ITEM_TYPE_INT_P
, ITEM_TYPE_FLOAT
, ITEM_TYPE_FLOAT_P
, ITEM_TYPE_STRING
,
ITEM_TYPE_STRING_P
, ITEM_TYPE_SETTING
, ITEM_TYPE_CHECK
, ITEM_TYPE_COMBO
,
ITEM_TYPE_DATE
, ITEM_TYPE_TIME
, ITEM_TYPE_DATETIME
, ITEM_TYPE_UPTIME
,
ITEM_TYPE_HEADER
, ITEM_TYPE_IPV4
, ITEM_TYPE_ACTION
, ITEM_TYPE_SUBMENU
} |
| Типы элементов меню Подробнее...
|
|
enum | dlg_result_t { DIALOG_CANCEL = 0
, DIALOG_OK
} |
| Коды результата работы диалога Подробнее...
|
|
enum | dlg_type_t { DLG_MSGBOX
, DLG_SAVECANCEL
, DLG_YESNO
} |
| Тип диалога Подробнее...
|
|
enum | hmi_event_t { HMI_EVENT_REDRAW
, HMI_EVENT_KEY
} |
| События HMI. Подробнее...
|
|
enum | keycode_t |
| Коды клавиш
|
|
|
hmi_event_t | hmi_wait () |
| Ожидать события HMI.
|
|
int | menu_handler (const menu_t *m) |
| Обработчик отрисовки меню HMI.
|
|
dlg_result_t | hmi_message_box (const char *title, const char *msg, dlg_type_t type) |
| Вызов диалога с текстовым сообщением
|
|
void | hmi_service () |
| Обработка сервисных задач, связанных с HMI.
|
|
keycode_t | kbd_get () |
| Получить клавишу из буфера клавиатуры
|
|
keycode_t | kbd_peek () |
| Проверить клавишу в буфере без изъятия
|
|
void | lcd_buffer_clear () |
| Очистить буфера экрана без перерисовки
|
|
void | lcd_fill () |
| Отрисовать буфер на экране
|
|
void | lcd_draw_dialog (const char *title, const char *text, dlg_type_t type) |
| Отрисовать шаблон диалогового окна
|
|
void | lcd_draw_rectangle (uint32_t x, uint32_t y, uint32_t w, uint32_t h) |
| Отрисовать прямоугольник
|
|
void | lcd_draw_bitmap (const uint8_t *xbm, uint8_t w, uint8_t h, uint8_t x, uint8_t y) |
| Отрисовать изображение в формате XBM.
|
|
void | lcd_invert_block (int col, int row) |
| Инвертировать пиксели знакоместа стандартного шрифта 6х8.
|
|
void | lcd_clear () |
| Очистить экран
|
|
void | lcd_goto (uint8_t col, uint8_t row) |
| Переместить курсор в позицию (col:row)
|
|
API для описания интерфейса HMI.
- Автор
- Dmitry Nikolaev dniko.nosp@m.laev.nosp@m.@mico.nosp@m.nt.r.nosp@m.u
- Версия
- 1.0
- Дата
- 2018
◆ MENU_ITEM
#define MENU_ITEM |
( |
|
text, |
|
|
|
type, |
|
|
|
flags, |
|
|
|
param, |
|
|
|
ptr |
|
) |
| {text, type, (flags), (param), (void *)(ptr)} |
◆ BEGIN_MENU
#define BEGIN_MENU |
( |
|
name | ) |
const menu_item_t name##_items[] = { |
Макрос начала блока описания меню
- Предупреждения
- Блок обязательно должен быть закрыт макросом END_MENU
◆ END_MENU
#define END_MENU |
( |
|
name, |
|
|
|
text |
|
) |
| |
Макроопределение: }; \
text, \
MENU_ITEMS_COUNT(name##_items), \
name##_items \
};
Макрос конца блока описания меню
- Предупреждения
- Блок обязательно должен быть открыт макросом BEGIN_MENU
◆ BEGIN_STRING_LIST
#define BEGIN_STRING_LIST |
( |
|
name | ) |
const char * const list_##name[] = { |
Макрос описания начала списка строк
- Предупреждения
- Блок обязательно должен быть закрыт макросом END_STRING_LIST
◆ END_STRING_LIST
#define END_STRING_LIST }; |
Макрос описания конца списка строк
- Предупреждения
- Блок обязательно должен быть открыт макросом BEGIN_STRING_LIST
◆ menu_item_type_t
Типы элементов меню
Элементы перечислений |
---|
ITEM_TYPE_BIT | Форматированный вывод бита в битовом поле
|
ITEM_TYPE_BIT_P | Форматированный вывод бита в битовом поле через указатель
|
ITEM_TYPE_BIT8 | Форматированный вывод битового поля
|
ITEM_TYPE_INT | Форматированный вывод целого числа
|
ITEM_TYPE_INT_P | Форматированный вывод целого числа через указатель
|
ITEM_TYPE_FLOAT | Форматированный вывод вещественного числа
|
ITEM_TYPE_FLOAT_P | Форматированный вывод вещественного числа через указатель
|
ITEM_TYPE_STRING | Форматированный вывод строки
|
ITEM_TYPE_STRING_P | Форматированный вывод строки через указатель
|
ITEM_TYPE_SETTING | Уставка (переменная с метаданными)
|
ITEM_TYPE_CHECK | Чек-бокс (вкл/выкл)
|
ITEM_TYPE_COMBO | Комбо-бокс (выбор из списка вариантов)
|
ITEM_TYPE_DATE | Форматированный вывод даты
|
ITEM_TYPE_TIME | Форматированный вывод времени
|
ITEM_TYPE_DATETIME | Форматированный вывод даты и времени события
|
ITEM_TYPE_UPTIME | Форматированный вывод интервала времени
|
ITEM_TYPE_HEADER | Разделитель/заголовок группы элементов
|
ITEM_TYPE_IPV4 | IPv4 IP-адрес
|
ITEM_TYPE_ACTION | Действие (вызов обработчика)
|
ITEM_TYPE_SUBMENU | Подменю
|
◆ dlg_result_t
Коды результата работы диалога
Элементы перечислений |
---|
DIALOG_CANCEL | Отмена
|
DIALOG_OK | ОК
|
◆ dlg_type_t
Тип диалога
Элементы перечислений |
---|
DLG_MSGBOX | Простое сообщение (ОК)
|
DLG_SAVECANCEL | Сохранить/Отмена
|
DLG_YESNO | Да/Нет
|
◆ hmi_event_t
События HMI.
Элементы перечислений |
---|
HMI_EVENT_REDRAW | Перерисовка
|
HMI_EVENT_KEY | Нажатие кноки
|
◆ menu_handler()
int menu_handler |
( |
const menu_t * |
m | ) |
|
Обработчик отрисовки меню HMI.
- Аргументы
-
- Возвращает
◆ hmi_message_box()
Вызов диалога с текстовым сообщением
- Аргументы
-
[in] | title | Текст заголовка |
[in] | msg | Текст сообщения |
[in] | type | Тип диалога dlg_type_t |
- Возвращает
- Результат работы диалога dlg_result_t
◆ kbd_get()
Получить клавишу из буфера клавиатуры
- Возвращает
- Код клавиши
◆ kbd_peek()
Проверить клавишу в буфере без изъятия
- Возвращает
- Код клавиши
◆ lcd_draw_dialog()
void lcd_draw_dialog |
( |
const char * |
title, |
|
|
const char * |
text, |
|
|
dlg_type_t |
type |
|
) |
| |
Отрисовать шаблон диалогового окна
- Аргументы
-
title | Заголовок |
text | Текст |
type | Тип диалога dlg_type_t |
◆ lcd_draw_rectangle()
void lcd_draw_rectangle |
( |
uint32_t |
x, |
|
|
uint32_t |
y, |
|
|
uint32_t |
w, |
|
|
uint32_t |
h |
|
) |
| |
Отрисовать прямоугольник
- Аргументы
-
x | Координата x левого верхнего угла (пиксели) |
y | Координата y левого верхнего угла (пиксели) |
w | Ширина (пиксели) |
h | Высота (пиксели) |
◆ lcd_draw_bitmap()
void lcd_draw_bitmap |
( |
const uint8_t * |
xbm, |
|
|
uint8_t |
w, |
|
|
uint8_t |
h, |
|
|
uint8_t |
x, |
|
|
uint8_t |
y |
|
) |
| |
Отрисовать изображение в формате XBM.
- Аргументы
-
xbm | Адрес массива xbm |
w | Ширина (пиксели) |
h | Высота (пиксели) |
x | Координата x левого верхнего угла (пиксели) |
y | Координата y левого верхнего угла (пиксели) |
◆ lcd_invert_block()
void lcd_invert_block |
( |
int |
col, |
|
|
int |
row |
|
) |
| |
Инвертировать пиксели знакоместа стандартного шрифта 6х8.
- Аргументы
-
col | Номер колонки |
row | Номер ряда |
◆ lcd_clear()
Очистить экран
Очистка буфера экрана + установка курсора в позицию 0:0 + отрисовка
◆ lcd_goto()
void lcd_goto |
( |
uint8_t |
col, |
|
|
uint8_t |
row |
|
) |
| |
Переместить курсор в позицию (col:row)
- Аргументы
-