الفرق بين المراجعتين ل"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 (أي يطبع نصًّا يستطيع الآخرون قراءته).
 +
__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>يمكن تمرير معاملٍ ثانٍ اختياريٍّ إلى الدالة <code>print()‎</code> يحدِّد التنسيق (الأساس [base]) المراد استعماله لطباعة البيانات. أمَّا من أجل الأعداد العشرية، فيحدِّد هذا المعامل عدد الأرقام بعد الفاصلة.<syntaxhighlight lang="arduino">
+
</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>تستطيع تمرير سلاسل نصية مرتكزة على ذاكرة البرنامج (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: سطر 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/availableforwrite|availableForWrite()‎]]</code>: يجلب عدد البايتات (المحارف) المتاحة للكتابة في ذاكرة التخزين المؤقتة لمنفذ الاتصال التسلسلي دون حجب عملية الكتابة.
* الدالة <code>[[Arduino/serial/end|end()‎]]</code>: تعطِّل الاتصال التسلسلي المفتوح محرِّرةً بذلك الرجل 0 (RX) والرجل 1 (TX) لتصبح قابلةً للاستعمال كدخل أو خرج رقمي.
+
* التابع <code>[[Arduino/serial/end|end()‎]]</code>: يعطِّل الاتصال التسلسلي المفتوح محرِّرةً بذلك الرجل 0 (RX) والرجل 1 (TX) لتصبح قابلةً للاستعمال كدخل أو خرج رقمي.
* الدالة <code>[[Arduino/serial/flush|flush()‎]]</code>: تنتظر اكتمال عملية نقل البيانات المرسلة عبر الاتصال التسلسلي
+
* التابع <code>[[Arduino/serial/flush|flush()‎]]</code>: ينتظر اكتمال عملية نقل البيانات المرسلة عبر الاتصال التسلسلي
* الدالة <code>[[Arduino/serial/println|println()‎]]</code>: تطبع البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي نص يستطيع الأشخاص الآخرين قراءته) ثمَّ تتبعها بمحرف العودة إلى بداية السطر (المحرف 'r\' أو ASCII 13) ومحرف سطر جديد (المحرف 'n\' أو ASCII 10).
+
* التابع <code>[[Arduino/serial/println|println()‎]]</code>: يطبع البيانات المُمرَّرة إليها على منفذ الاتصال التسلسلي بترميز ASCII (أي نص يستطيع الأشخاص الآخرين قراءته) ثمَّ يُتبعها بمحرف العودة إلى بداية السطر (المحرف 'r\' أو ASCII 13) ومحرف سطر جديد (المحرف 'n\' أو ASCII 10).
* الدالة <code>[[Arduino/serial/read|read()‎]]</code>: تقرأ البيانات المستلمة عبر الاتصال التسلسلي.
+
* التابع <code>[[Arduino/serial/read|read()‎]]</code>: يقرأ البيانات المستلمة عبر الاتصال التسلسلي.
* الدالة <code>[[Arduino/serial/write|write()‎]]</code>: تكتب بيانات ثنائية على منفذ الاتصال التسلسلي.
+
* التابع <code>[[Arduino/serial/write|write()‎]]</code>: يكتب بيانات ثنائية على منفذ الاتصال التسلسلي.
  
 
==مصادر==
 
==مصادر==
*[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 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()‎: يكتب بيانات ثنائية على منفذ الاتصال التسلسلي.

مصادر