AsciiMassage memungkinkan pengiriman dan penerimaan pesan. Lebih tepatnya, ini adalah pengemas dan parser pijat mikrokontroler untuk format ASCII untuk semua jenis aliran (Serial, UDP, dll). Pesan pijat selalu dimulai dengan string alamat dan diikuti oleh sejumlah elemen yang ditentukan pengguna (byte, int, long, float, atau string). String alamat digunakan untuk merutekan pesan.
Ini adalah implementasi ASCII dari API Pijat.
https://github.com/SofaPirate/AsciiMassage
Dokumentasi kelas lengkap dapat ditemukan di folder "docs" atau online di sini.
Tambahkan perpustakaan ke bagian atas kode Anda dan buat instance AsciiMassageParser yang disebut "inbound":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
Di dalam loop() parsing aliran Serial dengan parse(). Jika parse() mengembalikan nilai true, pemijatan selesai dan siap.
if ( inbound.parseStream( &Serial ) ) {
// parse completed massage elements here.
}
Contoh ini menguraikan elemen pijatan yang dimulai dengan alamat "nilai" dan berisi satu long diikuti oleh satu 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 ();
}
Blok kode lengkapnya adalah sebagai berikut:
# 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 ();
}
}
// [...]
}
Tambahkan perpustakaan ke bagian atas kode Anda dan buat instance AsciiMassageParser yang disebut "inbound":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
Tambahkan sebelum loop() fungsi yang akan dipanggil ketika pesan diterima
void readMessage () {
// parse completed massage elements here.
}
Di dalam loop() parsing aliran Serial dengan parse() dan jalankan "readMessage" ketika pesan diterima
inbound.parseStream( &Serial , readMessage );
Blok kode lengkapnya adalah sebagai berikut:
# 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 );
// [...]
}
Tambahkan perpustakaan ke bagian atas kode Anda dan buat instance AsciiMassagePacker yang disebut "outbound":
# include < AsciiMassagePacker.h >
AsciiMassagePacker outbound;
Kemas pijatan lalu kukus melalui 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.