class DisplayData – Data displeje¶
Třída DisplayData poskytuje přístup k vedlejším komunikačním kanálům připojeného HDMI / DisplayPort displeje:
DDC (Display Data Channel) je sběrnice I2C, která přenáší EDID displeje – strukturovaný blok popisující schopnosti panelu (výrobce, podporovaná rozlišení a obnovovací frekvence, barevné a zvukové formáty, …). Zdrojová zařízení jej při spuštění jednou dotáží, aby zjistila, co cílové zařízení podporuje.
CEC (Consumer Electronics Control) je jednovodičová obousměrná sběrnice, která umožňuje připojeným HDMI / DisplayPort zařízením vyměňovat si krátké řídicí pakety – zapnutí/vypnutí, přepínání vstupů, hlasitost, předávání signálů dálkového ovládání atd.
Při konstrukci lze povolit jeden nebo oba kanály. Surová data EDID se čtou pomocí display_id(); CEC snímky lze odesílat pomocí send_frame(), synchronně dotazovat pomocí receive_frame() nebo směrovat na callback pomocí frame_callback().
Příklad – dotaz na EDID připojeného displeje a naslouchání CEC snímkům adresovaným na logickou adresu 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)
Konstruktory¶
- class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)¶
cecnastavte naTruepro povolení CEC komunikace s externím displejem.ddcnastavte naTruepro povolení DDC komunikace s externím displejem.ddc_addrI2C adresa EEPROM externího displeje.- display_id() bytes¶
Vrátí data EDID externího displeje jako objekt
bytes. Hlavičky EDID a kontrolní součty jsou ověřeny a všechny sekce jsou spojeny do jediného objektubytes. Při selhání vyvoláOSError.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Odešle CEC snímek na
dst_addrzsrc_addrobsahujícídata. Při selhání vyvoláOSError.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Čeká až
timeoutmilisekund na CEC snímek adresovaný nadst_addr. Vrátí n-tici(src_addr, data). Při vypršení časového limitu nebo selhání vyvoláOSError.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Zaregistruje
callback, který se zavolá při přijetí CEC snímku adresovaného nadst_addr. Callback je vyvolán se dvěma argumenty: zdrojovou adresou jakointa obsahem snímku jako objektembytes.Předejte
Nonejakocallbackpro zakázání příjmu. Dokud je callback zaregistrován, nevolejteDisplayData.receive_frame().