¿Existe un patrón para un sistema de menú simple en C para una pantalla LCD de texto? Me encuentro reescribiendo mucho código para manejar menús simples de texto en LCD.
Creo que la mayoría de los sistemas tienen un menú principal y algunos submenús que, cuando se seleccionan, le permiten establecer un parámetro con un valor mínimo y máximo.
Idealmente, este sistema de menús se puede navegar con 4 teclas simples como ingresar, cancelar, arriba y abajo.
En mi aplicación, estoy usando una pantalla LCD de texto de 2 líneas x 16 caracteres, aunque una solución ideal debería poder aplicarse a cualquier pantalla NxM.
Respuestas:
El patrón que uso para los sistemas de menús en C es algo como esto:
Luego declaro una matriz de
menu
s que contienemenuitem
sy punteros achild
submenús. Arriba y abajo se mueve a través de la matriz demenuitem
s seleccionada actualmente . Atrás se mueve alparent
menú y avanza / selecciona se mueve a unchild
submenú o llamahandlerFunc
a un nodo hoja.Renderizar un menú solo implica iterar a través de sus elementos.
La ventaja de este esquema es que está totalmente basado en datos, las estructuras de menú pueden declararse estáticamente en ROM independientemente de las funciones de renderizador y controlador.
fuente
La respuesta de Toby es un muy buen punto de partida. Las estructuras mencionadas suponen que los menús son estáticos y simplemente navega por ellos.
Si desea menús dinámicos (por ejemplo, mostrar ciertos valores, como temperatura, tiempo, etc.), debe poder generarlos.
Una forma podría ser registrar una función para construir su cadena.
fuente