Существует ли шаблон для простой системы меню на С для текстового ЖК-дисплея. Я часто переписываю код для работы с простыми текстовыми ЖК-меню.
Я считаю, что большинство систем имеют главное меню и некоторые подменю, которые при выборе позволяют установить параметр в пределах некоторого минимального и максимального значения.
В идеале по этой системе меню можно перемещаться с помощью 4 простых клавиш, таких как ввод, отмена, вверх и вниз.
В моем приложении я использую текстовый ЖК-дисплей размером 2 строки по 16 символов, хотя идеальное решение должно быть применимо к любому дисплею NxM.
Ответы:
Шаблон, который я использую для систем меню в C, выглядит примерно так:
Затем я объявляю массив
menu
s, каждый из которых содержитmenuitem
s и указатели наchild
подменю. Вверх и вниз перемещается через текущий выбранный массивmenuitem
s. Назад перемещается вparent
меню и вперед / выбор либо перемещается вchild
подменю, либо вызываетhandlerFunc
конечный узел.Рендеринг меню включает в себя итерацию его пунктов.
Преимущество этой схемы в том, что она полностью управляется данными, структуры меню могут быть статически объявлены в ПЗУ независимо от функций рендерера и обработчика.
источник
Ответ Тоби - очень хорошая отправная точка. Упомянутые структуры предполагают, что меню статичны, и вы просто перемещаетесь по ним.
Если вам нужны динамические меню (например, отображающие определенные значения, такие как температура, время и т. Д.), Вы должны иметь возможность генерировать это.
Одним из способов может быть регистрация функции для построения вашей строки.
источник