class DisplayData -- بيانات العرض

توفر الفئة DisplayData وصولًا إلى روابط القناة الجانبية لعرض HDMI / DisplayPort متصل:

  • DDC (قناة بيانات العرض) هي ناقل I2C يحمل بيانات EDID الخاصة بالعرض -- وهي كتلة مهيكلة تصف إمكانيات اللوحة (الشركة المصنّعة، والدقات ومعدلات التحديث المدعومة، وصيغ الألوان والصوت، ...). تستعلم عنها الأجهزة المصدر مرة واحدة عند بدء التشغيل لاكتشاف ما يدعمه الجهاز المستقبِل.

  • CEC (التحكم في الإلكترونيات الاستهلاكية) هو ناقل ثنائي الاتجاه بسلك واحد يتيح لأجهزة HDMI / DisplayPort المتصلة تبادل حزم تحكم قصيرة -- التشغيل/الإيقاف، وتبديل المدخل، ومستوى الصوت، وتمرير التحكم عن بُعد، إلخ.

يمكن تفعيل إحدى القناتين أو كلتيهما عند الإنشاء. تُقرأ بيانات EDID الخام بواسطة display_id()؛ ويمكن إرسال إطارات CEC بواسطة send_frame()، أو استطلاعها بشكل متزامن عبر receive_frame()، أو توجيهها إلى دالة رد نداء عبر frame_callback().

مثال -- الاستعلام عن بيانات EDID الخاصة بالعرض المتصل والاستماع لإطارات CEC الموجهة إلى العنوان المنطقي 0:

import display

data = display.DisplayData(cec=True, ddc=True)

# Read the EDID once at startup.
edid = data.display_id()
print("EDID:", edid)

def on_frame(src, payload):
    print("CEC from {:#x}: {}".format(src, payload))

data.frame_callback(on_frame, 0)

البواني

class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)

cec اضبطه على True لتفعيل اتصال CEC مع عرض خارجي.

ddc اضبطه على True لتفعيل اتصال DDC مع عرض خارجي.

ddc_addr عنوان I2C لذاكرة EEPROM الخاصة بالعرض الخارجي.

display_id() bytes

تُرجع بيانات EDID الخاصة بالعرض الخارجي ككائن bytes. يتم التحقق من ترويسات EDID ومجاميع التحقق وتُدمج جميع الأقسام في كائن bytes واحد. تطلق OSError عند الفشل.

send_frame(dst_addr: int, src_addr: int, data: bytes) None

ترسل إطار CEC إلى dst_addr من src_addr يحتوي على data. تطلق OSError عند الفشل.

receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]

تنتظر حتى timeout ميلي ثانية لاستقبال إطار CEC موجّه إلى dst_addr. تُرجع صفًا بالشكل (src_addr, data). تطلق OSError عند انتهاء المهلة أو الفشل.

frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None

تسجّل callback ليُستدعى عند استقبال إطار CEC موجّه إلى dst_addr. تُستدعى دالة رد النداء بوسيطين: عنوان المصدر كـ int وحمولة الإطار ككائن bytes.

مرّر None كـ callback لتعطيل الاستقبال. وأثناء تسجيل دالة رد نداء، لا تستدعِ DisplayData.receive_frame().