AsciiMassage permite o envio e recebimento de mensagens. Mais precisamente, é um empacotador e analisador de massagem microcontrolador para o formato ASCII para qualquer tipo de fluxo (Serial, UDP, etc). Uma mensagem de massagem sempre começa com uma string de endereço e é seguida por um número de elementos definido pelo usuário (bytes, ints, longs, floats ou strings). A string de endereço é usada para rotear a mensagem.
Esta é a implementação ASCII da API Massage.
https://github.com/SofaPirate/AsciiMassage
A documentação completa da aula pode ser encontrada na pasta “docs” ou online aqui.
Adicione a biblioteca ao topo do seu código e instancie um AsciiMassageParser chamado "inbound":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
Inside loop() analisa o fluxo serial com parse(). Se parse() retornar verdadeiro, a massagem está concluída e pronta.
if ( inbound.parseStream( &Serial ) ) {
// parse completed massage elements here.
}
Este exemplo analisa os elementos de uma massagem que começa com o endereço “valor” e que contém um longo seguido de um 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 ();
}
O bloco completo de código é o seguinte:
# 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 ();
}
}
// [...]
}
Adicione a biblioteca ao topo do seu código e instancie um AsciiMassageParser chamado "inbound":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
Adicione antes de loop() uma função que será chamada quando uma mensagem for recebida
void readMessage () {
// parse completed massage elements here.
}
Inside loop() analisa o fluxo serial com parse() e executa "readMessage" quando uma mensagem é recebida
inbound.parseStream( &Serial , readMessage );
O bloco completo de código é o seguinte:
# 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 );
// [...]
}
Adicione a biblioteca ao topo do seu código e instancie um AsciiMassagePacker chamado "outbound":
# include < AsciiMassagePacker.h >
AsciiMassagePacker outbound;
Faça uma massagem e depois vaporize através do 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.