luokka DisplayData – näyttödata

DisplayData-luokka tarjoaa pääsyn kytketyn HDMI- / DisplayPort-näytön sivukanavien linkkeihin:

  • DDC (Display Data Channel) on I2C-väylä, joka kuljettaa näytön EDID-tietoa – jäsenneltyä lohkoa, joka kuvaa paneelin ominaisuudet (valmistaja, tuetut resoluutiot ja virkistystaajuudet, väri- ja äänimuodot, …). Lähdelaitteet kyselevät sen kerran käynnistyksen yhteydessä selvittääkseen, mitä vastaanotin tukee.

  • CEC (Consumer Electronics Control) on yksijohtiminen kaksisuuntainen väylä, jonka avulla kytketyt HDMI- / DisplayPort-laitteet voivat vaihtaa lyhyitä ohjauspaketteja – virran kytkentä päälle/pois, sisääntulon vaihto, äänenvoimakkuus, kaukosäätimen välitys jne.

Kumpi tahansa tai molemmat kanavat voidaan ottaa käyttöön rakennusvaiheessa. Raaka EDID luetaan display_id()-metodilla; CEC-kehyksiä voidaan lähettää send_frame()-metodilla, kysellä synkronisesti receive_frame()-metodilla tai reitittää takaisinkutsuun frame_callback()-metodilla.

Esimerkki – kysele kytketyn näytön EDID ja kuuntele loogiseen osoitteeseen 0 osoitettuja CEC-kehyksiä:

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)

Rakentajat

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

cec arvoon True ottaaksesi käyttöön CEC-viestinnän ulkoisen näytön kanssa.

ddc arvoon True ottaaksesi käyttöön DDC-viestinnän ulkoisen näytön kanssa.

ddc_addr ulkoisen näytön EEPROM:in I2C-osoite.

display_id() bytes

Palauttaa ulkoisen näytön EDID-datan bytes-oliona. EDID-otsakkeet ja tarkistussummat varmennetaan ja kaikki osiot yhdistetään yhdeksi bytes-olioksi. Nostaa OSError-poikkeuksen virhetilanteessa.

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

Lähettää CEC-kehyksen osoitteeseen dst_addr osoitteesta src_addr sisältäen datan data. Nostaa OSError-poikkeuksen virhetilanteessa.

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

Odottaa enintään timeout millisekuntia osoitteeseen dst_addr osoitettua CEC-kehystä. Palauttaa monikon (src_addr, data). Nostaa OSError-poikkeuksen aikakatkaisun tai virheen yhteydessä.

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

Rekisteröi callback-funktion kutsuttavaksi, kun osoitteeseen dst_addr osoitettu CEC-kehys vastaanotetaan. Takaisinkutsua kutsutaan kahdella argumentilla: lähdeosoite int-tyyppisenä ja kehyksen hyötykuorma bytes-oliona.

Anna None arvona callback poistaaksesi vastaanoton käytöstä. Kun takaisinkutsu on rekisteröity, älä kutsu DisplayData.receive_frame()-metodia.