AsciiMassage permite enviar y recibir mensajes. Más precisamente, es un empaquetador y analizador de masajes de microcontroladores para el formato ASCII para cualquier tipo de flujo (Serial, UDP, etc.). Un mensaje de masaje siempre comienza con una cadena de dirección y va seguido de un número de elementos definido por el usuario (bytes, ints, longs, flotantes o cadenas). La cadena de dirección se utiliza para enrutar el mensaje.
Esta es la implementación ASCII de la API de Massage.
https://github.com/SofaPirate/AsciiMassage
La documentación completa de la clase se puede encontrar en la carpeta "docs" o en línea aquí.
Agregue la biblioteca al principio de su código y cree una instancia de un AsciiMassageParser llamado "entrante":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
Inside loop() analiza la secuencia en serie con parse(). Si parse() devuelve verdadero, el masaje se completa y está listo.
if ( inbound.parseStream( &Serial ) ) {
// parse completed massage elements here.
}
Este ejemplo analiza los elementos de un masaje que comienza con la dirección "valor" y que contiene un largo seguido de un int:
// Does the massage's address match "value"?
if ( inbound.fullMatch ( " value " ) ) {
// Get the first long.
long ms = inbound. nextLong ();
// Get the next int.
int an0 = inbound. nextInt ();
}
El bloque completo de código es el siguiente:
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
// [...]
void loop () {
if ( inbound. parseStream ( &Serial ) ) {
// parse completed massage elements here.
// Does the massage's address match "value"?
if ( inbound. fullMatch ( " value " ) ) {
// Get the first long.
long ms = inbound. nextLong ();
// Get the next int.
int an0 = inbound. nextInt ();
}
}
// [...]
}
Agregue la biblioteca al principio de su código y cree una instancia de un AsciiMassageParser llamado "entrante":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
Agregue antes de loop() una función que se llamará cuando se reciba un mensaje
void readMessage () {
// parse completed massage elements here.
}
Inside loop() analiza el flujo serial con parse() y ejecuta "readMessage" cuando se recibe un mensaje
inbound.parseStream( &Serial , readMessage );
El bloque completo de código es el siguiente:
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
// [...]
void readMessage () {
// parse completed massage elements here.
// Does the massage's address match "value"?
if ( inbound. fullMatch ( " value " ) ) {
// Get the first long.
long ms = inbound. nextLong ();
// Get the next int.
int an0 = inbound. nextInt ();
}
}
void loop () {
inbound. parseStream ( &Serial , readMessage );
// [...]
}
Agregue la biblioteca al principio de su código y cree una instancia de un AsciiMassagePacker llamado "saliente":
# include < AsciiMassagePacker.h >
AsciiMassagePacker outbound;
Empaca un masaje y luego vaporízalo a través de Serial:
outbound.beginPacket( " value " ); // Start a packet with the address called "value".
outbound.addLong( millis() ); // Add the milliseconds.
outbound.addInt( analogRead( 0 ) ); // Add a reading of analog 0.
outbound.streamPacket(&Serial); // End the packet and stream it.