Arduino serialEvent – recepción serial asíncrona

La función de Arduino serialEvent te permite recibir datos seriales de una forma parecida a una interrupción o de forma asíncrona. Entonces está función sólo se ejecuta si existen datos seriales en el buffer del puerto serial. La función de Arduino Serial Read se usa para leer a estos datos seriales. Es importante mencionar que esta función no es asíncrona propiamente, sino que es ejecutada en cada iteración de la función loop. Por lo tanto si la función loop demora mucho, así será la demora de la recepción de los datos seriales. Esta función no es compatible con el Arduino Esplora, Leonardo y Micro.

Sintaxis de la función de Arduino serialEvent

La sintaxis de la función de Arduino serialEvent sólo requiere definir a la función void serialEvent() después de la función loop. Entonces dentro de esta función se puede agregar las instrucciones para la lectura de los datos seriales mediante el serial read. El propósito de esta función es ejecutarse al inicio de cada iteración para la función loop. Esto se realizará hasta encontrar un carácter del código ascii que nos permita saber si ya se termino la transmisión. Para dicho evento, normalmente se utilizan a los caracteres \n o \r.

void serialEvent( ){

//Código para la recepción serial.

}

Función de Arduino serialEvent

Código de Ejemplo para la función de Arduino serialEvent

El siguiente código de ejemplo, permite la recepción de caracteres numéricos y su posterior conversión a una variable entera. Recordemos que el puerto serial esta «transportando» bytes en forma de caracteres en código ascii. Entonces, una vez que hemos terminado de recibir una línea que contenga exclusivamente numeros ascii, se procede a convertirlo a una variable entera,  (int) mediante la función de Arduino atoi.

Elementos del código de ejemplo

El código del ejemplo anterior contiene ciertas instrucciones que permiten la recepción serial.

  • String. La variable del tipo string permite guardar una cadena de caracteres. Por ejemplo, un string es como un vector de variables char, pero con mejoras.
  • bool. Es una variable que puede guardar dos estados, false o true.  Esta variable se utiliza para saber si ya recibió o no el fin de la línea de transmisión.
  • Serial.available(). Está función te regresa verdadero, si hay dos sin leer en el buffer de entrada serial. También regresa falso si ya no hay información para leer.
  • Serial.read(). Lee un byte a la vez de puerto serial. Es por eso que se utiliza en conjunto con el while(serial.avialable()) para leer todos y cada uno de los bytes recibidos.
  • .toChayArray() . Permite convertir un string a un vector de caracteres.
  • atoi. Esta función nos permite convertir un vector de caracteres a una variable entera.

Otras funciones de Arduino

 

One Response

  1. John Rincon julio 14, 2018

Escríbenos tus dudas o comentarios

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.