الفرق بين المراجعتين لصفحة: «Arduino/serial/print»
جميل-بيلوني (نقاش | مساهمات) أنشأ الصفحة ب'تطبع الدالة <code>print()</code> البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي...' |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:التابع <code>Serial.print()</code> في أردوينو}}</noinclude> | |||
يطبع التابع <code>print()</code> البيانات المُمرَّرة إليه على منفذ الاتصال التسلسلي بترميز ASCII (أي يطبع نصًّا يستطيع الآخرون قراءته). | |||
__TOC__ | |||
تُطبَع الأعداد باستعمال الترميز [[Arduino/asciichart|ASCII]] لكل رقم، وتُطبَع الأعداد العشرية بشكل مشابه بترميز [[Arduino/asciichart|ASCII]] وبدقة عددين بعد الفاصلة افتراضيًّا. تُرسَل البايتات فرادى، كل محرف على حدة، وتُرسَل المحارف والسلاسل النصية كما هي.<syntaxhighlight lang="arduino"> | |||
Serial.print(78) // "يعطي القيمة "78 | Serial.print(78) // "يعطي القيمة "78 | ||
Serial.print(1.23456) // "يعطي القيمة "1.23 | Serial.print(1.23456) // "يعطي القيمة "1.23 | ||
Serial.print('N') // "N" يعطي القيمة | Serial.print('N') // "N" يعطي القيمة | ||
Serial.print("Hello world.") // نفسها "Hello world" يعطي السلسلة | Serial.print("Hello world.") // نفسها "Hello world" يعطي السلسلة | ||
</syntaxhighlight>يمكن تمرير معاملٍ ثانٍ اختياريٍّ إلى | </syntaxhighlight>يمكن تمرير معاملٍ ثانٍ اختياريٍّ إلى التابع <code>print()</code> يحدِّد التنسيق (الأساس [base]) المراد استعماله لطباعة البيانات. أمَّا من أجل الأعداد العشرية، فيحدِّد هذا المعامل عدد الأرقام بعد الفاصلة.<syntaxhighlight lang="arduino"> | ||
Serial.print(78, BIN) // "يعطي القيمة "1001110 | Serial.print(78, BIN) // "يعطي القيمة "1001110 | ||
Serial.print(78, OCT) // "يعطي القيمة "116 | Serial.print(78, OCT) // "يعطي القيمة "116 | ||
سطر 12: | سطر 15: | ||
Serial.print(1.23456, 2) // "يعطي القيمة "1.23 | Serial.print(1.23456, 2) // "يعطي القيمة "1.23 | ||
Serial.print(1.23456, 4) // "يعطي القيمة "1.2346 | Serial.print(1.23456, 4) // "يعطي القيمة "1.2346 | ||
</syntaxhighlight>تستطيع تمرير سلاسل نصية | </syntaxhighlight>تستطيع تمرير سلاسل نصية مخزَّنة في ذاكرة البرنامج (flash-memory) إلى التابع <code>print()</code> عبر تغليفها بالتابع <code>[[Arduino/progmem|F()]]</code>:<syntaxhighlight lang="arduino"> | ||
Serial.print(F(“Hello World”)) | Serial.print(F(“Hello World”)) | ||
</syntaxhighlight>إن أردت إرسال البيانات دون إجراء أية عملية تحويل عليها، فاستعمل | </syntaxhighlight>إن أردت إرسال البيانات دون إجراء أية عملية تحويل عليها، فاستعمل التابع <code>[[Arduino/serial/write|write()]]</code>. | ||
==البنية العامة== | ==البنية العامة== | ||
سطر 33: | سطر 36: | ||
* <code>DEC(decimal, or base 10)</code> | * <code>DEC(decimal, or base 10)</code> | ||
* <code>HEX(hexadecimal, or base 16)</code> | * <code>HEX(hexadecimal, or base 16)</code> | ||
إن كان المعامل val عددًأ عشريًّا، فسيُحدِّد هذا المعامل دقة ذلك العدد (عدد الأرقام بعد الفاصلة). | إن كان المعامل <code>val</code> عددًأ عشريًّا، فسيُحدِّد هذا المعامل دقة ذلك العدد (عدد الأرقام بعد الفاصلة). | ||
==القيم المعادة== | ==القيم المعادة== | ||
سطر 83: | سطر 86: | ||
== ملاحظات وتحذيرات == | == ملاحظات وتحذيرات == | ||
بدءًا من الإصدار 1.0، أصبحت عملية النقل عبر الاتصال التسلسلي غير متزامنة؛ ستعيد | بدءًا من الإصدار 1.0، أصبحت عملية النقل عبر الاتصال التسلسلي غير متزامنة؛ ستعيد التابع عدد البايتات التي طبعتها قبل أن يُنقَل أيٌّ منها. | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
* | * التابع <code>[[Arduino/serial/availableforwrite|availableForWrite()]]</code>: يجلب عدد البايتات (المحارف) المتاحة للكتابة في ذاكرة التخزين المؤقتة لمنفذ الاتصال التسلسلي دون حجب عملية الكتابة. | ||
* | * التابع <code>[[Arduino/serial/end|end()]]</code>: يعطِّل الاتصال التسلسلي المفتوح محرِّرةً بذلك الرجل 0 (RX) والرجل 1 (TX) لتصبح قابلةً للاستعمال كدخل أو خرج رقمي. | ||
* | * التابع <code>[[Arduino/serial/flush|flush()]]</code>: ينتظر اكتمال عملية نقل البيانات المرسلة عبر الاتصال التسلسلي | ||
* | * التابع <code>[[Arduino/serial/println|println()]]</code>: يطبع البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي نص يستطيع الأشخاص الآخرين قراءته) ثمَّ يُتبعها بمحرف العودة إلى بداية السطر (المحرف 'r\' أو ASCII 13) ومحرف سطر جديد (المحرف 'n\' أو ASCII 10). | ||
* | * التابع <code>[[Arduino/serial/read|read()]]</code>: يقرأ البيانات المستلمة عبر الاتصال التسلسلي. | ||
* | * التابع <code>[[Arduino/serial/write|write()]]</code>: يكتب بيانات ثنائية على منفذ الاتصال التسلسلي. | ||
==مصادر== | ==مصادر== | ||
*[https://www.arduino.cc/reference/en/language/functions/communication/serial/print/ صفحة | *[https://www.arduino.cc/reference/en/language/functions/communication/serial/print/ صفحة التابع Serial.print() في توثيق أردوينو الرسمي.] | ||
[[تصنيف: Arduino]] | |||
[[تصنيف: Arduino Method]] | |||
[[تصنيف: Arduino Communication]] | |||
[[تصنيف: Arduino Serial]] |
المراجعة الحالية بتاريخ 17:48، 6 نوفمبر 2018
يطبع التابع print()
البيانات المُمرَّرة إليه على منفذ الاتصال التسلسلي بترميز ASCII (أي يطبع نصًّا يستطيع الآخرون قراءته).
تُطبَع الأعداد باستعمال الترميز ASCII لكل رقم، وتُطبَع الأعداد العشرية بشكل مشابه بترميز ASCII وبدقة عددين بعد الفاصلة افتراضيًّا. تُرسَل البايتات فرادى، كل محرف على حدة، وتُرسَل المحارف والسلاسل النصية كما هي.
Serial.print(78) // "يعطي القيمة "78
Serial.print(1.23456) // "يعطي القيمة "1.23
Serial.print('N') // "N" يعطي القيمة
Serial.print("Hello world.") // نفسها "Hello world" يعطي السلسلة
يمكن تمرير معاملٍ ثانٍ اختياريٍّ إلى التابع print()
يحدِّد التنسيق (الأساس [base]) المراد استعماله لطباعة البيانات. أمَّا من أجل الأعداد العشرية، فيحدِّد هذا المعامل عدد الأرقام بعد الفاصلة.
Serial.print(78, BIN) // "يعطي القيمة "1001110
Serial.print(78, OCT) // "يعطي القيمة "116
Serial.print(78, DEC) // "يعطي القيمة "78
Serial.print(78, HEX) // "4E" يعطي القيمة
Serial.print(1.23456, 0) // "يعطي القيمة "1
Serial.print(1.23456, 2) // "يعطي القيمة "1.23
Serial.print(1.23456, 4) // "يعطي القيمة "1.2346
تستطيع تمرير سلاسل نصية مخزَّنة في ذاكرة البرنامج (flash-memory) إلى التابع print()
عبر تغليفها بالتابع F()
:
Serial.print(F(“Hello World”))
إن أردت إرسال البيانات دون إجراء أية عملية تحويل عليها، فاستعمل التابع write()
.
البنية العامة
Serial.print(val)
Serial.print(val, format)
المعاملات
val
البيانات المراد طباعتها على منفذ الاتصال التسلسلي.
format
معامل اختياري يحدِّد تنسيق (أساس) البيانات المراد طباعتها. القيم المتاحة التي يمكن استعمالها هي:
BIN(binary, or base 2)
OCT(octal, or base 8)
DEC(decimal, or base 10)
HEX(hexadecimal, or base 16)
إن كان المعامل val
عددًأ عشريًّا، فسيُحدِّد هذا المعامل دقة ذلك العدد (عدد الأرقام بعد الفاصلة).
القيم المعادة
يعاد عدد البايتات التي كُتبَت.
أمثلة
مثالٌ على استعمال حلقة for لطباعة أعداد بتنسيقات مختلفة:
void setup() {
Serial.begin(9600); // فتح منفذ تسلسلي بمعدل 9600 بت/ثا
}
void loop() {
// طباعة عناوين
Serial.print("NO FORMAT"); // طباعة عنوان
Serial.print("\t"); // طباعة مسافة جدولة
Serial.print("DEC");
Serial.print("\t");
Serial.print("HEX");
Serial.print("\t");
Serial.print("OCT");
Serial.print("\t");
Serial.print("BIN");
Serial.println(); // طباعة محرف العودة لبداية السطر بعد العنوان الأخير
for (int x = 0; x < 64; x++) { // ASCII طباعة جزء من الجدول
// طباعة الجدول بتنسيقات مختلفة
Serial.print(x); // ASCII طباعة عدد عشري مرمَّز بالترميز
Serial.print("\t\t"); // طباعة مسافتي جدولة لاستيعاب طول العنوان
Serial.print(x, DEC); // ASCII طباعة عدد عشري مرمَّز بالترميز
Serial.print("\t"); // طباعة مسافة جدولة
Serial.print(x, HEX); // ASCII طباعة عدد ست عشري مرمَّز بالترميز
Serial.print("\t"); // طباعة مسافة جدولة
Serial.print(x, OCT); // ASCII طباعة عدد ثماني مرمَّز بالترميز
Serial.print("\t"); // طباعة مسافة جدولة
Serial.println(x, BIN); // ASCII طباعة عدد ثنائي مرمَّز بالترميز
delay(200); // تأخير 200 ميلي ثانية
}
Serial.println(); // طباعة محرف العودة لبداية السطر مرة أخرى
}
ملاحظات وتحذيرات
بدءًا من الإصدار 1.0، أصبحت عملية النقل عبر الاتصال التسلسلي غير متزامنة؛ ستعيد التابع عدد البايتات التي طبعتها قبل أن يُنقَل أيٌّ منها.
انظر أيضًا
- التابع
availableForWrite()
: يجلب عدد البايتات (المحارف) المتاحة للكتابة في ذاكرة التخزين المؤقتة لمنفذ الاتصال التسلسلي دون حجب عملية الكتابة. - التابع
end()
: يعطِّل الاتصال التسلسلي المفتوح محرِّرةً بذلك الرجل 0 (RX) والرجل 1 (TX) لتصبح قابلةً للاستعمال كدخل أو خرج رقمي. - التابع
flush()
: ينتظر اكتمال عملية نقل البيانات المرسلة عبر الاتصال التسلسلي - التابع
println()
: يطبع البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي نص يستطيع الأشخاص الآخرين قراءته) ثمَّ يُتبعها بمحرف العودة إلى بداية السطر (المحرف 'r\' أو ASCII 13) ومحرف سطر جديد (المحرف 'n\' أو ASCII 10). - التابع
read()
: يقرأ البيانات المستلمة عبر الاتصال التسلسلي. - التابع
write()
: يكتب بيانات ثنائية على منفذ الاتصال التسلسلي.