AsciiMassage อนุญาตให้ส่งและรับข้อความ แม่นยำยิ่งขึ้นคือเป็นเครื่อง นวด และแยกวิเคราะห์ไมโครคอนโทรลเลอร์สำหรับรูปแบบ ASCII สำหรับสตรีมทุกประเภท (Serial, UDP ฯลฯ ) ข้อความ การนวด จะเริ่มต้นด้วยสตริงที่อยู่เสมอ และตามด้วยจำนวนองค์ประกอบที่ผู้ใช้กำหนด (ไบต์, ints, longs, floats หรือ string) สตริงที่อยู่ใช้เพื่อกำหนดเส้นทางข้อความ
นี่คือการใช้งาน ASCII ของ Massage API
https://github.com/SofaPirate/AsciiMassage
เอกสารประกอบชั้นเรียนฉบับสมบูรณ์สามารถพบได้ในโฟลเดอร์ "docs" หรือทางออนไลน์ที่นี่
เพิ่มไลบรารี่ที่ด้านบนของโค้ดของคุณและสร้างอินสแตนซ์ AsciiMassageParser ชื่อ "inbound":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
Inside loop() แยกวิเคราะห์กระแสอนุกรมด้วย parse() หาก parse() คืนค่าเป็นจริง แสดงว่าการนวดเสร็จสิ้นและพร้อม
if ( inbound.parseStream( &Serial ) ) {
// parse completed massage elements here.
}
ตัวอย่างนี้แยกวิเคราะห์องค์ประกอบของการนวดที่ขึ้นต้นด้วยที่อยู่ "ค่า" และที่มีหนึ่งยาวตามด้วยหนึ่ง 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 ();
}
บล็อกโค้ดที่สมบูรณ์มีดังนี้:
# 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 ();
}
}
// [...]
}
เพิ่มไลบรารี่ที่ด้านบนของโค้ดของคุณและสร้างอินสแตนซ์ AsciiMassageParser ชื่อ "inbound":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
เพิ่มก่อน loop() ฟังก์ชันที่จะถูกเรียกเมื่อได้รับข้อความ
void readMessage () {
// parse completed massage elements here.
}
Inside loop() แยกวิเคราะห์กระแสข้อมูลอนุกรมด้วย parse() และเรียกใช้ "readMessage" เมื่อได้รับข้อความ
inbound.parseStream( &Serial , readMessage );
บล็อกโค้ดที่สมบูรณ์มีดังนี้:
# 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 );
// [...]
}
เพิ่มไลบรารีที่ด้านบนของโค้ดของคุณและสร้างอินสแตนซ์ AsciiMassagePacker ชื่อ "outbound":
# include < AsciiMassagePacker.h >
AsciiMassagePacker outbound;
แพ็ค นวด แล้วอบไอน้ำผ่าน 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.