Arduino/serial/available

من موسوعة حسوب
مراجعة 12:41، 21 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (أنشأ الصفحة ب'تجلب الدالة <code>available()‎</code> عدد البايتات (المحارف) المتاحة للقراءة من منفذ الاتصال التسلسلي....')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تجلب الدالة available()‎ عدد البايتات (المحارف) المتاحة للقراءة من منفذ الاتصال التسلسلي. يمثِّل هذا العدد كمية البيانات التي استُقبلَت مسبقًا وخُزِّنَت في ذاكرة التخزين المؤقتة للمنفذ التسلسلي ذي الحجم 64 بايت. ترث الدالة available()‎ من الصنف Stream.

البنية العامة

Serial.available()

// فقط Mega لوحات أردوينو
Serial1.available()
Serial2.available()
Serial3.available()

القيم المعادة

يعاد عدد البايتات المستلمة والمتاحة للقراءة.

أمثلة

يعيد المثال التالي المحرف المستلم عبر واجهة التخاطب التسلسلية:

// متغير لتخزين البيانات الآتية من المنفذ التسلسلي
int incomingByte = 0;

void setup() {
        // فتح منفذ اتصال تسلسلي وتعيين معدل تدفق البيانات إلى 9600 بت/ثا
	Serial.begin(9600);	
}

void loop() {

	// الرد عند استلام بيانات فقط
	if (Serial.available() > 0) {
		// قراءة البايت المستلم
		incomingByte = Serial.read();

		// إعادة إرسال ما تم استلامه
		Serial.print("I received: ");
		Serial.println(incomingByte, DEC);
	}
}

المثال التالي خاص بلوحة أردوينو Mega. يعمل المثال على إرسال البيانات المستلمة من أحد منافذ الاتصال التسلسلية إلى منفذ آخر. يمكن تطبيق هذا الأمر لوصل جهاز مع الحاسوب مثلًا عبر لوحة أردوينو:

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);

}

void loop() {
  // القراءة من المنفذ 0، والإرسال إلى المنفذ 1
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.print(inByte, DEC);

  }
  // القراءة من المنفذ 1، والإرسال إلى المنفذ 0
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.print(inByte, DEC);
  }
}

انظر أيضًا

مصادر