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)¶
cecharici bir ekranla CEC iletişimini etkinleştirmek içinTrueolarak ayarlanır.ddcharici bir ekranla DDC iletişimini etkinleştirmek içinTrueolarak ayarlanır.ddc_addrharici ekran EEPROM’unun I2C adresidir.- display_id() bytes¶
Harici ekran EDID verisini bir
bytesnesnesi olarak döndürür. EDID başlıkları ve sağlama toplamları doğrulanır ve tüm bölümler tek birbytesnesnesinde birleştirilir. Başarısızlık durumundaOSErroryükseltir.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
src_addradresindendst_addradresinedataiçeren bir CEC çerçevesi gönderir. Başarısızlık durumundaOSErroryükseltir.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
dst_addradresine yönlendirilmiş bir CEC çerçevesi içintimeoutmilisaniyeye kadar bekler.(src_addr, data)şeklinde bir demet döndürür. Zaman aşımı veya başarısızlık durumundaOSErroryükseltir.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
dst_addradresine yönlendirilmiş bir CEC çerçevesi alındığında çağrılmak üzerecallbackkaydeder. Geri çağırma iki argümanla çağrılır: birintolarak kaynak adresi ve birbytesnesnesi olarak çerçeve yükü.Alımı devre dışı bırakmak için
callbackolarakNonegeçirin. Bir geri çağırma kayıtlıykenDisplayData.receive_frame()çağrısı yapmayın.