Función Arduino SSCANF

Función Arduino SSCANF
La programación de Arduino ha heredado múltiples funciones del lenguaje C. Una de las funciones ampliamente utilizadas es sscanf () usando los cuales podemos leer datos de cualquier cadena o texto. En esta guía, exploraremos cómo usar esta función en la programación de Arduino. Vamos a empezar:

Función arduino sscanf ()

En la programación de Arduino podemos almacenar símbolos, caracteres, números o cualquier otro datos dentro de una cadena. Para leer los datos de una cadena usamos el sscanf () función; No solo lee los datos, sino que también puede almacenarlos dentro de una nueva variable. En general, en C, los datos de programación se leen utilizando Scanf () Pero utilizando esta función solo podemos leer datos usando la consola, si uno quiere leer una entrada de String o cualquier otro texto que se use la función sscanf ().

Sintaxis

Para leer datos de una cadena debemos saber cómo funciona la función. A continuación se muestra la sintaxis de la función sscanf ().

int sscanf (char *data, char *formato, almacenamiento_variables);

En el código anterior, el primer argumento representa la entrada que contiene los datos de la matriz de carácter o cadena que se lee utilizando el formato definido en el segundo argumento. Podemos enumerar los datos disponibles en diferentes variables definiendo el formato en el segundo argumento.

Parámetros

  • datos: Este es un puntero a una cadena que queremos leer.
  • formato: Los especificadores de formato se utilizarán aquí para leer los datos de cierta manera.
  • almacenamiento_variables: Se utiliza para almacenar el valor de lectura de los punteros en argumentos adicionales. El nombre de la variable debe estar precedido por el signo si necesitamos almacenar valores en una variable regular en lugar de un puntero.

Formato de especificadores

El sscanf () La función utiliza diferentes especificadores de formato que pueden almacenar datos de cierta manera. Es un conjunto único de caracteres precedidos por % de signo seguido de símbolos de caracteres relevantes. Los siguientes símbolos generalmente se usan:

Símbolo Tipo
s Cadena
C Charla
d Decimal int
E, E, F, G, G Puntos flotantes
U Unsigned int
x, x Numadeño hexadecimal

Valor de retorno

  • El error final del archivo (EOF) se devolverá si la cadena no pudo leer un valor adecuado.
  • -1 se devuelve si se encuentra algún otro tipo de error.
  • El número total de elementos se lee es devuelto como un valor entero por la función.

Ejemplos

Ahora que conocemos la sintaxis y el funcionamiento de la función sscanf (), tomemos un ejemplo para entenderlo mejor.

1. Leer un elemento del mismo tipo

El primer ejemplo explicará cómo podemos leer solo una entrada de tipo de datos de una cadena y almacenarla dentro de una nueva variable.

Código

setup () void
De serie.comenzar (115200); /*Comunicación en serie Comienza*/
char* buffer = "Linuxhint"; /*La cadena se inicializa en la variable de búfer usando Char*/
char input_string [10]; /*Longitud de cadena definida*/
int total_input_read; /*La variable se inicializa para contar la entrada total de entrada*/
Total_input_read = sscanf (buffer, "%s", input_string); /*La función SSCANF se usa para leer la cadena de entrada*/
De serie.imprimir ("Valor de cadena almacenado en Buffer:");
De serie.println (input_string); /*La cadena de entrada se imprime en el monitor serial*/
De serie.imprimir ("No de los elementos totales, lea:");
De serie.println (total_input_read); /*No de la lectura de entrada se imprime en Serial Monitor*/

bucle vacío ()

Aquí en este código primero comenzamos la comunicación en serie para imprimir resultados en el monitor en serie. A continuación, se define una matriz de caracteres utilizando una variable buffer. La longitud de la matriz se establece en 10, que puede variar en consecuencia. Se inicializa una nueva variable que almacenará el número total de entradas leídas.

A continuación usando el sscanf () La cadena de funciones se almacenará dentro de una nueva variable entrada_string. Aquí en sscanf () usamos el especificador de formato %s porque solo leerá cadenas como entrada. Ambos resultados se imprimirán en el monitor en serie.

Producción

La salida muestra que una cadena se toma como entrada y se almacena dentro de una nueva variable entrada_string.

2. Leer múltiples elementos de diferentes tipos

Este ejemplo explicará cómo sscanf () tomará datos de múltiples tipos de datos de una sola cadena de entrada.

Código

setup () void
De serie.comenzar (115200); /*Comunicación en serie Comienza*/
char *data = "28 de febrero de 2022"; /*Se inicializa la nueva cadena*/
int fecha = 0; /*La variable se define para almacenar fecha*/
int año = 0; /*La variable se define para almacenar año*/
Mes de char [10]; /*Una matriz se inicializa para almacenar el mes*/
De serie.println (datos); /*Los datos de entrada se imprimen*/
SSCANF (datos, " %2d %s %4d", y fecha, mes y año); /*SSCANF leerá datos de la entrada y los almacenará en variables separadas*/
De serie.println (fecha); /*La fecha de lectura está impresa*/
De serie.println (mes); /*El mes de lectura está impreso*/
De serie.println (año); /*El año de lectura está impreso*/

bucle void ()

En el código anterior hemos creado un datos variable que puede almacenar la cadena dada. Tres fechas variables diferentes, año y mes almacenarán la entrada de lectura de la cadena por separado. mes La variable se inicializa con un tamaño de 10 que se puede modificar en consecuencia.

Próximo sscanf () la función leerá los datos de la entrada y los almacenará en tres variables diferentes. Como fecha y año, ambos representan un valor entero así %d El símbolo se usa junto con el número 2 y 4 que representa cuántos números queremos leer. El %s El símbolo se usa con mes que devolverá los caracteres hasta que llegue un espacio en blanco.

Si no hay espacio entre los datos, entonces podemos usar %C junto con un número que representará el número de caracteres que queremos leer. Todos los datos leídos se imprimirán por separado utilizando De serie.println ().

Producción

La salida muestra la cadena de entrada. Sscanf () leerá datos y los almacenará en tres variables separadas.

Conclusión

En general, mientras se programamos en el lenguaje C, leemos la entrada del usuario usando la función Scanf (), pero solo se limita a la consola. Para leer datos de una cadena definida y almacenarlos por separado en múltiples variables que utilizamos sscanf () función en la programación Arduino. Esta redacción lo ayudará a comprender sscanf () y leer datos de cadenas definidas.