¿Qué es memset () en Arduino?
El memset es una función utilizada en la programación de Arduino que puede almacenar un número específico de bytes tomados de un valor dado a su destino. Usando esta función, podemos copiar un byte de valor al byte de bloque de memoria de destino por byte.
Ahora discutiremos el uso de la función memset () en la programación Arduino.
sintaxis memset ()
memset (destino, valor, n_bytes);
parámetros memset ()
La función memset () tiene tres parámetros:
1: destino
Los destinos indican la ubicación de memoria donde el valor del bloque de memoria será configurado por byte por byte. Cualquier tipo de valor se puede establecer aquí en forma de byte. El valor anterior será reemplazado por n número de bytes. Si N es mayor que el tamaño del objeto de destino, el comportamiento de salida estará indefinido.
2: valor
Este es el punto de origen desde el cual el carácter se copiará al bloque de memoria de destino. Aquí el valor está en entero, pero se convertirá en carácter sin firmar antes de copiarse.
3: n_bytes/longitud
Esto indica el número de bytes que se establecerán en el bloque de destino. La función memset () tomará n bytes específicos de un valor dado y lo almacenará dentro del bloque de memoria de destino.
Cómo usar memset () en Arduino
En Arduino utilizamos memset () para establecer datos de n bytes de valor dado al destino con un número especificado de bytes. memset () copia o reemplaza a los bytes de valor n dados a cada uno de los primeros n caracteres en el bloque de destino.
Para comprender más sobre la función memset (), tomaremos un boceto Arduino e intentaremos copiar un byte a nuestra matriz de destino.
setup () void
De serie.comenzar (115200);
Destino de char [14] = "Linuxhint.com ";
De serie.println ("antes del destino de Memset:");
De serie.println (destino);
memset (destino, '.', 5*sizeOf (char)); /* Llena los primeros 5 caracteres que comienzan desde el destino [14] con '.' */
De serie.println ("After Memset Destination:");
De serie.println (destino);
regresar 0;
bucle vacío ()
En el ejemplo anterior hemos declarado la matriz de personajes destino. El tamaño de la matriz de char es 14.
En la siguiente línea después de declarar la variable Char, hemos imprimido la salida de la matriz de destino en el monitor en serie como "Antes del destino de Memset".
Después de eso hemos ejecutado un memset () función que reemplazará la matriz de destino con los primeros cinco caracteres con el valor "."Y el resto de la matriz permanecerá como está. Aquí el valor multiplicado con sizeof (char) determinará el número de bytes que se reemplazarán en el bloque de memoria de destino o la matriz.
En la línea 8 imprimimos la salida de la matriz de destino después de aplicar la función memset () en el monitor en serie. La representación pictórica de la función memset () se puede dar como se muestra a continuación:
La salida en el monitor serial se muestra en la figura a continuación:
¿Cómo vacío una matriz en Arduino?
Para vaciar una matriz en Arduino también usamos la función memset (). La única diferencia es que ahora copiaremos 0 o nulo a n bytes del bloque de memoria de destino. Una vez que todos los caracteres de la matriz estén configurados en 0, la matriz estará vacía. Tomemos un boceto de ejemplo y reemplacemos a todos los personajes de una matriz con 0.
setup () void
De serie.comenzar (115200);
Char Array [14] = "Linuxhint.com ";
De serie.println ("antes de la matriz de memset:");
De serie.println (matriz);
memset (matriz, '0', 13*sizeOf (char)); / *Llena los 13 caracteres de la matriz con 0 */
De serie.println ("After Memset Array:");
De serie.println (matriz);
regresar 0;
bucle vacío ()
En el código anterior primero, hemos inicializado la comunicación en serie definiendo la tasa de baudios después de eso, definimos una matriz de char "Linuxhint.comunicarse"Con una longitud de cadena de 14.
A continuación, imprimimos una matriz en el monitor en serie antes de aplicar la función memset ().
En la línea 7 se define la función memset () que reemplazará todos los valores de matriz de char a cero byte por byte. Alternativamente, podemos decir que nuestra matriz ahora está vacía que no contiene valores de byte. A continuación se muestra una ilustración de todo el código que dará una mejor comprensión.
Salida del monitor en serie
Alternativamente, también podemos reemplazar cualquier entidad de matriz con nulo o cero. Esta es otra forma de vaciar una matriz sin mostrar caracteres nulos en la salida. Solo tenemos que cambiar el valor de la función memset () que se debe copiar '\ 0'.
memset (matriz, '\ 0', 13*sizeOf (char));
Conclusión
En este artículo, hemos aprendido cómo se usa la función memset () en la programación Arduino. La función memset () en Arduino puede establecer o reemplazar cualquier valores de matriz byte por byte. Además, discutimos cómo esta función es útil para vaciar una matriz. Usando esta función, puede optimizar el rendimiento general del código.