الفرق بين المراجعتين لصفحة: «Arduino/serial/print»

من موسوعة حسوب
أنشأ الصفحة ب'تطبع الدالة <code>print()‎</code> البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي...'
 
إضافة محتويات الصفحة.
سطر 1: سطر 1:
تطبع الدالة <code>print()‎</code> البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي نص يستطيع الأشخاص الآخرين قراءته). يمكن لهذه الدالة أن تأخذ عدة أشكال. تُطبَع الأعداد باستعمال المحرف ASCII لكل رقم. تُطبَع الأعداد العشرية بشكل مشابه بترميز ASCII وبدقة عددين بعد الفاصلة افتراضيًّا. تُرسل البايتات فرادى كل محرف على حدة، وتُرسَل المحارف والسلاسل النصية كما هي. على سبيل المثال،<syntaxhighlight lang="arduino">
<noinclude>{{DISPLAYTITLE:الدالة <code>Serial.print()‎</code> في أردوينو}}</noinclude>
تطبع الدالة <code>print()‎</code> البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي تطبع نصًّا يستطيع الآخرون قراءته). تُطبَع الأعداد باستعمال الترميز ASCII لكل رقم، وتُطبَع الأعداد العشرية بشكل مشابه بترميز ASCII وبدقة عددين بعد الفاصلة افتراضيًّا. تُرسَل البايتات فرادى، كل محرف على حدة، وتُرسَل المحارف والسلاسل النصية كما هي.<syntaxhighlight lang="arduino">
Serial.print(78)            // "يعطي القيمة "78
Serial.print(78)            // "يعطي القيمة "78
Serial.print(1.23456)‎        // "يعطي القيمة "1.23
Serial.print(1.23456)‎        // "يعطي القيمة "1.23
سطر 12: سطر 13:
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>تستطيع تمرير سلاسل نصية مرتكزة على ذاكرة البرنامج (flash-memory) إلى الدالة <code>print()‎</code> عبر تغليفها بالدالة <code>[[Arduino/progmem|F()‎]]</code>:<syntaxhighlight lang="arduino">
</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>إن أردت إرسال البيانات دون إجراء أية عملية تحويل عليها، فاستعمل الدالة <code>write()‎</code>.
</syntaxhighlight>إن أردت إرسال البيانات دون إجراء أية عملية تحويل عليها، فاستعمل الدالة <code>[[Arduino/serial/write|write()‎]]</code>.


==البنية العامة==
==البنية العامة==
سطر 33: سطر 34:
* <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> عددًأ عشريًّا، فسيُحدِّد هذا المعامل دقة ذلك العدد (عدد الأرقام بعد الفاصلة).


==القيم المعادة==
==القيم المعادة==
سطر 95: سطر 96:
==مصادر==
==مصادر==
*[https://www.arduino.cc/reference/en/language/functions/communication/serial/print/ صفحة الدالة Serial.print()‎ في توثيق أردوينو الرسمي.]
*[https://www.arduino.cc/reference/en/language/functions/communication/serial/print/ صفحة الدالة Serial.print()‎ في توثيق أردوينو الرسمي.]
[[تصنيف: Arduino]]
[[تصنيف: Arduino Function]]
[[تصنيف: Arduino Communication]]
[[تصنيف: Arduino Serial]]

مراجعة 09:57، 22 أكتوبر 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()‎: تكتب بيانات ثنائية على منفذ الاتصال التسلسلي.

مصادر