Red de conocimiento informático - Aprendizaje de programación - Cómo implementa minigui el motor subyacente

Cómo implementa minigui el motor subyacente

Los sistemas integrados suelen tener dispositivos de entrada específicos. Los dispositivos de entrada se utilizan para implementar la entrada de datos y la interacción persona-computadora. Hay muchos tipos de dispositivos de entrada y diferentes dispositivos dependen de diferentes implementaciones de hardware. Para reducir la dependencia del hardware del sistema y mejorar la portabilidad, MiniGUI proporciona una interfaz IAL (Input Abstract Layer) de capa de abstracción de entrada unificada, que admite diferentes dispositivos de entrada y reduce la dificultad de desarrollar dispositivos de entrada. A continuación se toma el desarrollo de la entrada de teclado 4×4 como ejemplo para presentar el método de desarrollo e implementación de dispositivos de entrada de teclado específicos en MiniGUI.

1 Cómo maneja MiniGUI la entrada del teclado La forma en que MiniGUI maneja la entrada del teclado se muestra en la Figura 1. El controlador del dispositivo de teclado recibe datos y eventos de entrada sin procesar del teclado y los convierte en datos y eventos de teclado abstractos MiniGUI. Las rutinas de procesamiento de eventos subyacentes relevantes convierten estos eventos de teclado en información clave de nivel superior y los colocan en la cola de información correspondiente. La aplicación recupera estos mensajes a través del bucle de mensajes y los pasa al proceso de ventana. Para desarrollar entradas de teclado específicas, el trabajo subyacente se divide principalmente en dos partes: diseño del controlador de teclado y desarrollo del motor de entrada de teclado. El primero es responsable de recibir datos y eventos de entrada sin procesar del teclado, y el segundo es responsable de convertir datos y eventos de entrada sin procesar en datos y eventos de teclado abstractos de la interfaz de usuario MiniG. En cuanto a convertir datos y eventos abstractos del teclado en información clave de la capa superior, las rutinas de procesamiento de eventos subyacentes proporcionadas por MiniGUI lo completarán por sí mismas sin diseño del usuario. Este es el beneficio de proporcionar una interfaz de capa de abstracción de entrada (IAL) para MiniGUI. A continuación se presentará el proceso de desarrollo y la implementación de la entrada del teclado, principalmente presentando la implementación de funciones de interfaz importantes.

2 Diseño del controlador de teclado La función principal de este controlador de dispositivo es escanear filas y columnas del teclado y recibir eventos y datos de entrada del teclado sin procesar, como si se presiona una tecla, si se presiona o se suelta una tecla. La información clave de carácter devuelta (código de escaneo del teclado) consta de dos partes: los "bits altos" representan eventos de entrada de teclas, es decir, presionar teclas (O alto) o soltarlas (1 alto) representan datos de entrada de teclas; es decir, pulsaciones de teclas Valor presionado o liberado.

Obtiene el valor del teclado Cuando se presiona una tecla, los dos pines de E/S periféricos generales conectados a la fila y columna de la tecla se encenderán con el mismo nivel, por lo que el controlador solo necesita. sondear cada uno El valor clave se puede conocer desde el pin de E/S. Por ejemplo, configure la entrada de cada fila en un nivel bajo, conecte cada fila a un nivel alto a través de una resistencia pull-up y luego detecte cada columna. Si el nivel de una columna es bajo, significa que el teclado donde está. se ha presionado la columna donde se encuentra, cambiando así la columna y la fila al nivel bajo, de modo que el número de columna (j) donde se encuentra la clave se pueda determinar de manera similar, configurando cada columna al nivel bajo y luego consultando cada fila en; A su vez, puede determinar el número de columna (j) donde se encuentra la clave número de línea (i). 'D', 'O', '., 'E'}}, entonces el valor clave es key_arrow[i][j]. Cuando se inicializa, los números de fila y columna son 0, por lo que cuando no hay teclas en el teclado, el valor de la clave devuelve 0 (el carácter NULL). Cabe señalar que después de configurar el modo de entrada/salida de la línea de fila/columna, se requiere un cierto tiempo de retraso antes de que se pueda iniciar la consulta de fila (columna) para garantizar el funcionamiento normal del controlador. Esto se debe a retrasos del hardware en la conmutación del modo de entrada/salida de línea.