klasa DisplayData – Podaci zaslona¶
Klasa DisplayData omogućuje pristup sporednim komunikacijskim kanalima priključenog HDMI / DisplayPort zaslona:
DDC (Display Data Channel) je I2C sabirnica koja prenosi EDID zaslona – strukturirani blok koji opisuje mogućnosti panela (proizvođač, podržane razlučivosti i frekvencije osvježavanja, formati boje i zvuka, …). Izvorni uređaji ga pri pokretanju jednom upituju kako bi otkrili što odredišni uređaj podržava.
CEC (Consumer Electronics Control) je dvosmjerna sabirnica s jednom žicom koja omogućuje povezanim HDMI / DisplayPort uređajima razmjenu kratkih upravljačkih paketa – uključivanje/isključivanje napajanja, prebacivanje ulaza, glasnoću, prosljeđivanje daljinskog upravljanja itd.
Pri konstrukciji se može omogućiti jedan ili oba kanala. Sirovi EDID čita se metodom display_id(); CEC okviri mogu se slati metodom send_frame(), sinkrono provjeravati metodom receive_frame() ili usmjeriti na povratni poziv metodom frame_callback().
Primjer – upit za EDID povezanog zaslona i osluškivanje CEC okvira upućenih logičkoj adresi 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)
Konstruktori¶
- class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)¶
cecpostavite naTrueza omogućavanje CEC komunikacije s vanjskim zaslonom.ddcpostavite naTrueza omogućavanje DDC komunikacije s vanjskim zaslonom.ddc_addrI2C adresa EEPROM-a vanjskog zaslona.- display_id() bytes¶
Vraća EDID podatke vanjskog zaslona kao
bytesobjekt. EDID zaglavlja i kontrolne sume se provjeravaju, a svi se odsjeci spajaju u jedanbytesobjekt. U slučaju neuspjeha podižeOSError.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Šalje CEC okvir na
dst_addrs adresesrc_addrkoji sadržidata. U slučaju neuspjeha podižeOSError.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Čeka do
timeoutmilisekundi na CEC okvir upućendst_addr. Vraća n-torku(src_addr, data). U slučaju isteka vremena ili neuspjeha podižeOSError.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Registrira
callbackkoji će se pozvati kada se primi CEC okvir upućendst_addr. Povratni poziv se poziva s dva argumenta: izvorišnom adresom kaointi korisnim sadržajem okvira kaobytesobjektom.Proslijedite
Nonekaocallbackza onemogućavanje primanja. Dok je povratni poziv registriran, nemojte pozivatiDisplayData.receive_frame().