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().