AsciiMassage permet l'envoi et la réception de messages. Plus précisément, il s'agit d'un packer et analyseur de massage sur microcontrôleur pour le format ASCII pour tout type de flux (Série, UDP, etc.). Un message de massage commence toujours par une chaîne d'adresse et est suivi d'un nombre d'éléments défini par l'utilisateur (octets, entiers, longs, flottants ou chaînes). La chaîne d'adresse est utilisée pour acheminer le message.
Il s'agit de l'implémentation ASCII de l'API Massage.
https://github.com/SofaPirate/AsciiMassage
La documentation complète du cours peut être trouvée dans le dossier "docs" ou en ligne ici.
Ajoutez la bibliothèque en haut de votre code et instanciez un AsciiMassageParser appelé "inbound" :
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
À l’intérieur de loop(), analysez le flux Serial avec parse(). Si parse() renvoie true, le massage est terminé et prêt.
if ( inbound.parseStream( &Serial ) ) {
// parse completed massage elements here.
}
Cet exemple analyse les éléments d'un massage qui commence par l'adresse "value" et qui contient un long suivi d'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 ();
}
Le bloc de code complet est le suivant :
# 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 ();
}
}
// [...]
}
Ajoutez la bibliothèque en haut de votre code et instanciez un AsciiMassageParser appelé "inbound" :
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
Ajouter avant loop() une fonction qui sera appelée lors de la réception d'un message
void readMessage () {
// parse completed massage elements here.
}
À l'intérieur de loop(), analysez le flux Serial avec parse() et exécutez "readMessage" lorsqu'un message est reçu
inbound.parseStream( &Serial , readMessage );
Le bloc de code complet est le suivant :
# 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 );
// [...]
}
Ajoutez la bibliothèque en haut de votre code et instanciez un AsciiMassagePacker appelé « sortant » :
# include < AsciiMassagePacker.h >
AsciiMassagePacker outbound;
Préparez un massage , puis vaporisez-le via 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.