يسمح AsciiMassage بإرسال واستقبال الرسائل. بتعبير أدق، فهو عبارة عن أداة تعبئة ومحلل لتدليك متحكم دقيق لتنسيق ASCII لأي نوع من أنواع الدفق (المسلسل، UDP، إلخ). تبدأ رسالة التدليك دائمًا بسلسلة عنوان ويتبعها عدد محدد من العناصر بواسطة المستخدم (البايت أو int أو longs أو floats أو strings). يتم استخدام سلسلة العنوان لتوجيه الرسالة.
هذا هو تطبيق ASCII لواجهة برمجة تطبيقات التدليك.
https://github.com/SofaPirate/AsciiMassage
يمكن العثور على وثائق الفصل الدراسي الكاملة في مجلد "المستندات" أو عبر الإنترنت هنا.
أضف المكتبة إلى الجزء العلوي من التعليمات البرمجية الخاصة بك وقم بإنشاء مثيل AsciiMassageParser المسمى "inbound":
# include < AsciiMassageParser.h >
AsciiMassageParser inbound;
تقوم الحلقة الداخلية () بتحليل الدفق التسلسلي باستخدام التحليل (). إذا عادت الدالة parse() إلى القيمة true، فهذا يعني أن عملية التدليك قد اكتملت وأصبحت جاهزة.
if ( inbound.parseStream( &Serial ) ) {
// parse completed massage elements here.
}
يقوم هذا المثال بتحليل عناصر التدليك الذي يبدأ بالعنوان "value" والذي يحتوي على عنوان طويل متبوعًا بواحد 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;
أضف قبل الحلقة () وظيفة سيتم استدعاؤها عند تلقي رسالة
void readMessage () {
// parse completed massage elements here.
}
تقوم الحلقة الداخلية () بتحليل الدفق التسلسلي باستخدام 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;
قم بتعبئة التدليك ثم قم بالبخار من خلال المسلسل:
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.