class DisplayData – Dati del Display¶
La classe DisplayData fornisce l’accesso ai canali laterali di un display HDMI / DisplayPort collegato:
DDC (Display Data Channel) e un bus I2C che trasporta l’EDID del display – un blocco strutturato che descrive le capacita del pannello (produttore, risoluzioni e frequenze di aggiornamento supportate, formati di colore e audio, …). I dispositivi sorgente lo interrogano una sola volta all’avvio per scoprire cosa supporta il sink.
CEC (Consumer Electronics Control) e un bus bidirezionale a filo singolo che consente ai dispositivi HDMI / DisplayPort collegati di scambiarsi brevi pacchetti di controllo – accensione/spegnimento, cambio di ingresso, volume, inoltro del telecomando, ecc.
Uno o entrambi i canali possono essere abilitati alla costruzione. L’EDID grezzo viene letto con display_id(); i frame CEC possono essere inviati con send_frame(), interrogati in modo sincrono tramite receive_frame(), oppure instradati a un callback con frame_callback().
Esempio – interroga l’EDID del display collegato e resta in ascolto dei frame CEC indirizzati all’indirizzo logico 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)
Costruttori¶
- class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)¶
cecimpostato aTrueper abilitare la comunicazione CEC con un display esterno.ddcimpostato aTrueper abilitare la comunicazione DDC con un display esterno.ddc_addrindirizzo I2C della EEPROM del display esterno.- display_id() bytes¶
Restituisce i dati EDID del display esterno come oggetto
bytes. Le intestazioni e i checksum dell’EDID vengono verificati e tutte le sezioni sono concatenate in un unico oggettobytes. SollevaOSErrorin caso di errore.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Invia un frame CEC a
dst_addrdasrc_addrcontenentedata. SollevaOSErrorin caso di errore.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Attende fino a
timeoutmillisecondi un frame CEC indirizzato adst_addr. Restituisce una tupla(src_addr, data). SollevaOSErrorin caso di timeout o errore.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Registra
callbackaffinche venga chiamato quando viene ricevuto un frame CEC indirizzato adst_addr. Il callback viene invocato con due argomenti: l’indirizzo sorgente comeinte il payload del frame come oggettobytes.Passa
Nonecomecallbackper disabilitare la ricezione. Mentre un callback e registrato, non chiamareDisplayData.receive_frame().