Está en la página 1de 5

CONSOLA

ESP-IDF proporciona un componente de consola, que incluye los componentes


básicos necesarios para desarrollar una consola interactiva a través del puerto serie.
Este componente incluye las siguientes instalaciones:

 Edición de línea, proporcionada por la biblioteca linenoise. Esto incluye el manejo


de las teclas de retroceso y de flecha, el desplazamiento por el historial de
comandos, la finalización automática de comandos y las sugerencias de
argumentos.
 División de la línea de comando en argumentos.
 Análisis de argumentos, proporcionado por la biblioteca argtable3. Esta biblioteca
incluye API utilizadas para analizar argumentos de línea de comando de estilo
GNU.
 Funciones de registro y envío de comandos.
 Funciones para establecer un entorno REPL (Read-Evaluate-Print-Loop) básico.

Nota: Estas instalaciones se pueden utilizar juntas o de forma independiente. Por


ejemplo, es posible usar funciones de edición de línea y registro de comandos, pero
use getopt o código personalizado para el análisis de argumentos, en lugar de
argtable3. Asimismo, es posible utilizar medios más simples de entrada de
comandos (como fgets) junto con el resto de los medios para la división de
comandos y el análisis de argumentos.

1. EDICIÓN DE LÍNEA

La función de edición de líneas permite a los usuarios redactar comandos


escribiéndolos, borrando símbolos usando la tecla de "retroceso", navegando dentro
del comando usando las teclas izquierda/derecha, navegando a los comandos
escritos previamente usando las teclas arriba/abajo y realizando el autocompletado
usando la tecla "tabulador".

Nota: Esta función se basa en la compatibilidad con la secuencia de escape ANSI en


la aplicación de terminal. Como tal, los monitores en serie que muestran datos UART
sin procesar no se pueden usar junto con la biblioteca de edición de línea. Si ve [6n
o una secuencia de escape similar cuando ejecuta el ejemplo del sistema/consola en
lugar de un símbolo del sistema (por ejemplo, esp> ), significa que el monitor serie
no admite secuencias de escape. Los programas que se sabe que funcionan son
GNU screen, minicom e idf_monitor.py (que se puede invocar usando idf.py monitor
desde el directorio del proyecto).

Aquí hay una descripción general de las funciones proporcionadas por la biblioteca
linenoise.

1.1 Configuración

La biblioteca linenoise no necesita una inicialización explícita. Sin embargo, es


posible que sea necesario cambiar algunos valores predeterminados de
configuración antes de invocar la función de edición de la línea principal.

linenoiseClearScreen()

Limpia la pantalla del terminal usando una secuencia de escape y coloca el cursor en
la esquina superior izquierda.

linenoiseSetMultiLine()

Cambia entre los modos de edición de una sola línea y de varias líneas. En el modo
de línea única, si la longitud del comando excede el ancho del terminal, el texto del
comando se desplaza dentro de la línea para mostrar el final del texto. En este caso
se oculta el principio del texto. Una sola línea necesita enviar menos datos para
actualizar la pantalla con cada pulsación de tecla, por lo que muestra menos fallas
en comparación con el modo de varias líneas. Por otro lado, es más difícil editar
comandos y copiar el texto del comando desde la terminal en modo de una sola
línea. El valor predeterminado es el modo de una sola línea.

linenoiseAllowEmpty()

Establezca si la biblioteca linenoise devolverá una cadena de longitud cero (si es


verdadero) o NULL (si es falso) para las líneas vacías. De forma predeterminada, se
devuelven cadenas de longitud cero.

linenoiseSetMaxLineLen()

Establezca la longitud máxima de la línea para la biblioteca linenoise. La longitud


predeterminada es 4096. Si necesita optimizar el uso de la memoria RAM, puede
hacerlo mediante esta función configurando un valor inferior a los 4 KB
predeterminados.

1.2 Bucle principal

linenoise()

En la mayoría de los casos, las aplicaciones de consola tienen algún tipo de ciclo de
lectura/evaluación. linenoise() es la única función que maneja las pulsaciones de
teclas del usuario y devuelve la línea completa una vez que se pulsa la tecla 'enter'.
Como tal, maneja la parte de "lectura" del ciclo.

linenoiseFree()

Esta función debe llamarse para liberar el búfer de la línea de comando obtenido de
la función linenoise().

1.3 Sugerencias y Complementos

1.4 Historial
2. DIVISIÓN DE LA LÍNEA DE COMANDO EN ARGUMENTOS

El componente de la consola proporciona la función esp_console_split_argv() para


dividir la cadena de la línea de comandos en argumentos. La función devuelve el
número de argumentos encontrados (argc) y llena una matriz de punteros que se
pueden pasar como argumento argv a cualquier función que acepte argumentos en
formato argc, argv.

3. ANÁLISIS DE ARGUMENTOS

4. REGISTRO Y DESPACHO DE COMANDOS

5. INICIALIZAR EL ENTORNO REPL DE LA CONSOLA

6. EJEMPLO DE APLICACIÓN

La aplicación de ejemplo que ilustra el uso del componente de la consola está


disponible en el directorio system/console. Este ejemplo muestra cómo inicializar las
funciones UART y VFS, configurar la biblioteca linenoise, leer y manejar comandos
desde UART y almacenar el historial de comandos en Flash. Consulte README.md
en el directorio de ejemplo para obtener más detalles.

Además de eso, ESP-IDF contiene varios ejemplos útiles que se basan en el


componente de la consola y pueden tratarse como "herramientas" al desarrollar
aplicaciones. Por ejemplo, peripherals/i2c/i2c_tools, wifi/iperf.

7. REFERENCIA DE LA API

7.1 Archivo de cabecera

7.2 Funciones
7.3 Estructuras

7.4 Macros

7.5 Definiciones de Tipo

También podría gustarte