class DisplayData – Ekran Verisi

DisplayData sınıfı, bağlı bir HDMI / DisplayPort ekranının yan kanal bağlantılarına erişim sağlar:

  • DDC (Display Data Channel), ekranın EDID’sini taşıyan bir I2C veri yoludur – panel yeteneklerini (üretici, desteklenen çözünürlükler ve yenileme hızları, renk ve ses biçimleri, …) tanımlayan yapılandırılmış bir blok. Kaynak cihazlar, alıcının neyi desteklediğini keşfetmek için başlangıçta bunu bir kez sorgular.

  • CEC (Consumer Electronics Control), bağlı HDMI / DisplayPort cihazlarının kısa denetim paketleri alışverişinde bulunmasını sağlayan tek hatlı çift yönlü bir veri yoludur – açma/kapatma, giriş değiştirme, ses düzeyi, uzaktan kumanda iletimi vb.

Yapım sırasında kanallardan biri veya her ikisi etkinleştirilebilir. Ham EDID display_id() ile okunur; CEC çerçeveleri send_frame() ile gönderilebilir, receive_frame() aracılığıyla eşzamanlı olarak yoklanabilir veya frame_callback() ile bir geri çağırmaya yönlendirilebilir.

Örnek – bağlı ekranın EDID’sini sorgulama ve mantıksal adres 0’a yönlendirilmiş CEC çerçevelerini dinleme:

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)

Yapıcılar

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

cec harici bir ekranla CEC iletişimini etkinleştirmek için True olarak ayarlanır.

ddc harici bir ekranla DDC iletişimini etkinleştirmek için True olarak ayarlanır.

ddc_addr harici ekran EEPROM’unun I2C adresidir.

display_id() bytes

Harici ekran EDID verisini bir bytes nesnesi olarak döndürür. EDID başlıkları ve sağlama toplamları doğrulanır ve tüm bölümler tek bir bytes nesnesinde birleştirilir. Başarısızlık durumunda OSError yükseltir.

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

src_addr adresinden dst_addr adresine data içeren bir CEC çerçevesi gönderir. Başarısızlık durumunda OSError yükseltir.

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

dst_addr adresine yönlendirilmiş bir CEC çerçevesi için timeout milisaniyeye kadar bekler. (src_addr, data) şeklinde bir demet döndürür. Zaman aşımı veya başarısızlık durumunda OSError yükseltir.

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

dst_addr adresine yönlendirilmiş bir CEC çerçevesi alındığında çağrılmak üzere callback kaydeder. Geri çağırma iki argümanla çağrılır: bir int olarak kaynak adresi ve bir bytes nesnesi olarak çerçeve yükü.

Alımı devre dışı bırakmak için callback olarak None geçirin. Bir geri çağırma kayıtlıyken DisplayData.receive_frame() çağrısı yapmayın.