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)¶
cecingesteld opTrueom CEC-communicatie met een externe display in te schakelen.ddcingesteld opTrueom DDC-communicatie met een externe display in te schakelen.ddc_addrI2C-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 enkelbytes-object. GenereertOSErrorbij een fout.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Verzendt een CEC-frame naar
dst_addrvanafsrc_addrmetdata. GenereertOSErrorbij een fout.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Wacht maximaal
timeoutmilliseconden op een CEC-frame gericht aandst_addr. Geeft een tuple(src_addr, data)terug. GenereertOSErrorbij time-out of fout.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Registreert
callbackom aangeroepen te worden wanneer een CEC-frame gericht aandst_addrwordt ontvangen. De callback wordt aangeroepen met twee argumenten: het bronadres alsinten de frame-payload alsbytes-object.Geef
Nonedoor alscallbackom ontvangst uit te schakelen. RoepDisplayData.receive_frame()niet aan terwijl er een callback is geregistreerd.