classe DisplayData – Dados do Display¶
A classe DisplayData fornece acesso aos links de canal lateral de um display HDMI / DisplayPort conectado:
DDC (Display Data Channel) é um barramento I2C que transporta o EDID do display – um bloco estruturado que descreve as capacidades do painel (fabricante, resoluções e taxas de atualização suportadas, formatos de cor e áudio, …). Os dispositivos de origem o consultam uma vez na inicialização para descobrir o que o destino (sink) suporta.
CEC (Consumer Electronics Control) é um barramento bidirecional de fio único que permite que dispositivos HDMI / DisplayPort conectados troquem pequenos pacotes de controle – ligar/desligar, troca de entrada, volume, encaminhamento de controle remoto, etc.
Um dos canais ou ambos podem ser habilitados na construção. O EDID bruto é lido com display_id(); quadros CEC podem ser enviados com send_frame(), consultados de forma síncrona via receive_frame(), ou roteados para um callback com frame_callback().
Exemplo – consultar o EDID do display conectado e escutar quadros CEC endereçados ao endereço lógico 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)
Construtores¶
- class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)¶
cecdefinido comoTruepara habilitar a comunicação CEC com um display externo.ddcdefinido comoTruepara habilitar a comunicação DDC com um display externo.ddc_addrendereço I2C da EEPROM do display externo.- display_id() bytes¶
Retorna os dados EDID do display externo como um objeto
bytes. Os cabeçalhos e checksums do EDID são verificados e todas as seções são concatenadas em um único objetobytes. LevantaOSErrorem caso de falha.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Envia um quadro CEC para
dst_addra partir desrc_addrcontendodata. LevantaOSErrorem caso de falha.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Aguarda até
timeoutmilissegundos por um quadro CEC endereçado adst_addr. Retorna uma tupla de(src_addr, data). LevantaOSErrorem caso de timeout ou falha.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Registra
callbackpara ser chamado quando um quadro CEC endereçado adst_addrfor recebido. O callback é invocado com dois argumentos: o endereço de origem como uminte o payload do quadro como um objetobytes.Passe
Nonecomocallbackpara desabilitar a recepção. Enquanto um callback estiver registrado, não chameDisplayData.receive_frame().