class DisplayData – Date de afișaj¶
Clasa DisplayData oferă acces la legăturile de canal secundar ale unui afișaj HDMI / DisplayPort atașat:
DDC (Display Data Channel) este o magistrală I2C care transportă EDID-ul afișajului – un bloc structurat care descrie capabilitățile panoului (producător, rezoluții și rate de reîmprospătare acceptate, formate de culoare și audio, …). Dispozitivele sursă îl interoghează o singură dată la pornire pentru a descoperi ce acceptă receptorul.
CEC (Consumer Electronics Control) este o magistrală bidirecțională cu un singur fir care permite dispozitivelor HDMI / DisplayPort conectate să schimbe pachete scurte de control – pornire/oprire, comutarea intrării, volum, redirecționarea telecomenzii etc.
Oricare dintre canale sau ambele pot fi activate la construcție. EDID-ul brut este citit cu display_id(); cadrele CEC pot fi trimise cu send_frame(), interogate sincron prin receive_frame() sau direcționate către o funcție de retroapelare (callback) cu frame_callback().
Exemplu – interogarea EDID-ului afișajului conectat și ascultarea cadrelor CEC adresate adresei logice 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)
Constructori¶
- class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)¶
cecsetat laTruepentru a activa comunicarea CEC cu un afișaj extern.ddcsetat laTruepentru a activa comunicarea DDC cu un afișaj extern.ddc_addradresa I2C a memoriei EEPROM a afișajului extern.- display_id() bytes¶
Returnează datele EDID ale afișajului extern ca obiect
bytes. Anteturile și sumele de control EDID sunt verificate, iar toate secțiunile sunt concatenate într-un singur obiectbytes. GenereazăOSErrorîn caz de eșec.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Trimite un cadru CEC către
dst_addrde lasrc_addrcare conținedata. GenereazăOSErrorîn caz de eșec.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Așteaptă până la
timeoutmilisecunde un cadru CEC adresat luidst_addr. Returnează un tuplu de forma(src_addr, data). GenereazăOSErrorla expirarea timpului sau în caz de eșec.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Înregistrează
callbackpentru a fi apelat când se primește un cadru CEC adresat luidst_addr. Funcția de retroapelare este invocată cu două argumente: adresa sursă caintși conținutul util al cadrului ca obiectbytes.Transmiteți
Nonecacallbackpentru a dezactiva recepția. Cât timp este înregistrată o funcție de retroapelare, nu apelațiDisplayData.receive_frame().