kelas DisplayData -- Data Display

Kelas DisplayData menyediakan akses ke tautan saluran samping dari display HDMI / DisplayPort yang terhubung:

  • DDC (Display Data Channel) adalah bus I2C yang membawa EDID display -- blok terstruktur yang mendeskripsikan kemampuan panel (produsen, resolusi dan laju refresh yang didukung, format warna dan audio, ...). Perangkat sumber membacanya sekali saat startup untuk mengetahui apa yang didukung oleh sink.

  • CEC (Consumer Electronics Control) adalah bus bidireksional satu kawat yang memungkinkan perangkat HDMI / DisplayPort yang terhubung untuk bertukar paket kontrol pendek -- daya hidup/mati, pergantian input, volume, penerusan remote control, dll.

Salah satu atau kedua saluran dapat diaktifkan saat konstruksi. EDID mentah dibaca dengan display_id(); bingkai CEC dapat dikirim dengan send_frame(), dipolling secara sinkron melalui receive_frame(), atau diarahkan ke callback dengan frame_callback().

Contoh -- kueri EDID display yang terhubung dan dengarkan bingkai CEC yang ditujukan ke alamat logis 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)

Konstruktor

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

cec atur ke True untuk mengaktifkan komunikasi CEC dengan display eksternal.

ddc atur ke True untuk mengaktifkan komunikasi DDC dengan display eksternal.

ddc_addr alamat I2C dari EEPROM display eksternal.

display_id() bytes

Mengembalikan data EDID display eksternal sebagai objek bytes. Header dan checksum EDID diverifikasi dan semua bagian digabungkan menjadi satu objek bytes. Menghasilkan OSError jika gagal.

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

Mengirim bingkai CEC ke dst_addr dari src_addr yang berisi data. Menghasilkan OSError jika gagal.

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

Menunggu hingga timeout milidetik untuk bingkai CEC yang ditujukan ke dst_addr. Mengembalikan tuple (src_addr, data). Menghasilkan OSError jika timeout atau gagal.

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

Mendaftarkan callback untuk dipanggil ketika bingkai CEC yang ditujukan ke dst_addr diterima. Callback dipanggil dengan dua argumen: alamat sumber sebagai int dan payload bingkai sebagai objek bytes.

Berikan None sebagai callback untuk menonaktifkan penerimaan. Selama callback terdaftar, jangan panggil DisplayData.receive_frame().