clase DisplayData – Datos de pantalla¶
La clase DisplayData proporciona acceso a los enlaces de canal lateral de una pantalla HDMI / DisplayPort conectada:
DDC (Display Data Channel) es un bus I2C que transporta el EDID de la pantalla, un bloque estructurado que describe las capacidades del panel (fabricante, resoluciones y frecuencias de actualización admitidas, formatos de color y audio, …). Los dispositivos fuente lo consultan una vez al inicio para descubrir qué admite el receptor.
CEC (Consumer Electronics Control) es un bus bidireccional de un solo cable que permite a los dispositivos HDMI / DisplayPort conectados intercambiar paquetes de control cortos: encendido/apagado, cambio de entrada, volumen, reenvío del mando a distancia, etc.
Uno o ambos canales pueden habilitarse en la construcción. El EDID en bruto se lee con display_id(); los fotogramas CEC pueden enviarse con send_frame(), sondearse de forma síncrona mediante receive_frame() o encaminarse a una función de retorno (callback) con frame_callback().
Ejemplo – consultar el EDID de la pantalla conectada y escuchar los fotogramas CEC dirigidos a la dirección lógica 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)
Constructores¶
- class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)¶
cecestablecido enTruepara habilitar la comunicación CEC con una pantalla externa.ddcestablecido enTruepara habilitar la comunicación DDC con una pantalla externa.ddc_addrdirección I2C de la EEPROM de la pantalla externa.- display_id() bytes¶
Devuelve los datos EDID de la pantalla externa como un objeto
bytes. Las cabeceras y sumas de comprobación del EDID se verifican y todas las secciones se concatenan en un único objetobytes. LanzaOSErroren caso de fallo.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Envía un fotograma CEC a
dst_addrdesdesrc_addrque contienedata. LanzaOSErroren caso de fallo.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Espera hasta
timeoutmilisegundos un fotograma CEC dirigido adst_addr. Devuelve una tupla de(src_addr, data). LanzaOSErroren caso de tiempo de espera agotado o fallo.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Registra
callbackpara que se invoque cuando se reciba un fotograma CEC dirigido adst_addr. La función de retorno se invoca con dos argumentos: la dirección de origen comointy la carga útil del fotograma como objetobytes.Pase
Nonecomocallbackpara deshabilitar la recepción. Mientras haya una función de retorno registrada, no llame aDisplayData.receive_frame().