Existe um padrão para um sistema de menus simples em C para um LCD de texto. Eu me pego reescrevendo muito o código para lidar com menus simples de texto em LCD.
Acho que a maioria dos sistemas possui um menu principal e alguns submenus que, quando selecionados, permitem definir um parâmetro com algum valor mínimo e máximo.
Idealmente, esse sistema de menus pode ser navegado com 4 teclas simples, como inserir, cancelar, para cima e para baixo.
Na minha aplicação, estou usando um LCD de texto de 2 linhas x 16 caracteres, embora uma solução ideal possa ser aplicada a qualquer monitor NxM.
Respostas:
O padrão que eu uso para sistemas de menus em C é mais ou menos assim:
Declaro então uma matriz de
menu
s, cada uma contendo semenuitem
ponteiros parachild
submenus. Para cima e para baixo se move pela matriz atualmente selecionada demenuitem
s. Voltar move para oparent
menu e avançar / selecionar move para umchild
submenu ou chama umhandlerFunc
para um nó folha.A renderização de um menu envolve a iteração dos itens.
A vantagem desse esquema é que ele é totalmente orientado a dados; as estruturas de menus podem ser declaradas estaticamente na ROM, independentemente das funções de renderizador e manipulador.
fonte
A resposta de Toby é um ponto de partida muito bom. As estruturas mencionadas assumem que os menus são estáticos e você apenas os navega.
Se você quiser menus dymanic (por exemplo, exibir certos valores, como temperatura, tempo etc.), precisará gerar isso.
Uma maneira poderia ser registrar uma função para criar sua string.
fonte