Sistema de menú LCD de texto estándar

9

¿Existe un patrón para un sistema de menú simple en C para una pantalla LCD de texto? Me encuentro reescribiendo mucho el código para manejar menús de texto con LCD simples.

Me parece 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.

Lo ideal es que este sistema de menú se pueda navegar con 4 teclas simples, como ingresar, cancelar, subir y bajar.

En mi aplicación, estoy usando un LCD de texto de 2 líneas x 16 caracteres, aunque una solución ideal debería poder aplicarse a cualquier pantalla NxM.

    
pregunta mjh2007

1 respuesta

4

El patrón que uso para los sistemas de menú en C es algo como esto:

struct menuitem
{
  const char *name; // name to be rendered
  functionPointer handlerFunc; // handler for this leaf node (optionally NULL)
  struct menu *child; // pointer to child submenu (optionally NULL)
};

struct menu
{
  struct menu *parent; // pointer to parent menu
  struct **menuitem; // array of menu items, NULL terminated
};

Luego declaro una matriz de menu s que contiene menuitem sy punteros a los submenús de child . Los movimientos arriba y abajo se mueven a través de la matriz seleccionada actualmente de menuitem s. La parte posterior se mueve al menú parent y la función de avance / selección se mueve a un submenú child o llama a un handlerFunc para un nodo de hoja.

La representación de un menú solo implica iterar a través de sus elementos.

La ventaja de este esquema es que está totalmente controlado por datos, las estructuras de menú se pueden declarar estáticamente en la ROM independientemente de las funciones del procesador y del controlador.

    
respondido por el Toby Jaffey

Lea otras preguntas en las etiquetas