class DisplayData – Display-gegevens

De DisplayData-klasse biedt toegang tot de side-channel-verbindingen van een aangesloten HDMI-/DisplayPort-display:

  • DDC (Display Data Channel) is een I2C-bus die de EDID van de display draagt – een gestructureerd blok dat de mogelijkheden van het paneel beschrijft (fabrikant, ondersteunde resoluties en verversingsfrequenties, kleur- en audioformaten, …). Bronapparaten bevragen dit eenmalig bij het opstarten om te ontdekken wat de sink ondersteunt.

  • CEC (Consumer Electronics Control) is een bidirectionele bus met één draad waarmee aangesloten HDMI-/DisplayPort-apparaten korte besturingspakketten kunnen uitwisselen – in-/uitschakelen, ingangsomschakeling, volume, doorsturen van afstandsbediening, enz.

Beide kanalen, of een ervan, kunnen bij constructie worden ingeschakeld. De ruwe EDID wordt gelezen met display_id(); CEC-frames kunnen worden verzonden met send_frame(), synchroon gepold via receive_frame(), of doorgestuurd naar een callback met frame_callback().

Voorbeeld – de EDID van de aangesloten display opvragen en luisteren naar CEC-frames die gericht zijn aan logisch adres 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)

Constructors

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

cec ingesteld op True om CEC-communicatie met een externe display in te schakelen.

ddc ingesteld op True om DDC-communicatie met een externe display in te schakelen.

ddc_addr I2C-adres van de EEPROM van de externe display.

display_id() bytes

Geeft de EDID-gegevens van de externe display terug als een bytes-object. EDID-headers en controlesommen worden geverifieerd en alle secties worden samengevoegd tot één enkel bytes-object. Genereert OSError bij een fout.

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

Verzendt een CEC-frame naar dst_addr vanaf src_addr met data. Genereert OSError bij een fout.

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

Wacht maximaal timeout milliseconden op een CEC-frame gericht aan dst_addr. Geeft een tuple (src_addr, data) terug. Genereert OSError bij time-out of fout.

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

Registreert callback om aangeroepen te worden wanneer een CEC-frame gericht aan dst_addr wordt ontvangen. De callback wordt aangeroepen met twee argumenten: het bronadres als int en de frame-payload als bytes-object.

Geef None door als callback om ontvangst uit te schakelen. Roep DisplayData.receive_frame() niet aan terwijl er een callback is geregistreerd.