class DisplayData – נתוני תצוגה

המחלקה DisplayData מספקת גישה לקישורי הערוץ הצדדי של תצוגת HDMI / DisplayPort מחוברת:

  • DDC (Display Data Channel) הוא אפיק I2C שנושא את ה-EDID של התצוגה – בלוק מובנה המתאר את יכולות הפאנל (יצרן, רזולוציות וקצבי רענון נתמכים, פורמטי צבע ואודיו, …). התקני מקור שולחים אליו שאילתה פעם אחת בהפעלה כדי לגלות מה הצרכן (sink) תומך.

  • CEC (Consumer Electronics Control) הוא אפיק דו-כיווני בעל חוט יחיד המאפשר להתקני HDMI / DisplayPort מחוברים להחליף חבילות בקרה קצרות – הדלקה/כיבוי, מיתוג קלט, עוצמת קול, העברת שלט רחוק וכדומה.

ניתן להפעיל אחד מהערוצים או את שניהם בעת הבנייה. ה-EDID הגולמי נקרא באמצעות display_id(); ניתן לשלוח פריימים של CEC באמצעות send_frame(), לתשאל אותם באופן סינכרוני באמצעות receive_frame(), או לנתב אותם לפונקציית callback באמצעות 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. ה-callback נקרא עם שני ארגומנטים: כתובת המקור כ-int ומטען הפריים כאובייקט bytes.

העבירו None כ-callback כדי להשבית את הקבלה. כל עוד רשום callback, אל תקראו ל-DisplayData.receive_frame().