class DisplayData – Dados do Ecrã¶
A classe DisplayData permite acesso aos canais laterais de um ecrã HDMI / DisplayPort ligado:
DDC (Display Data Channel) é um barramento I2C que transporta o EDID do ecrã – 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 consultam-no uma vez no arranque para descobrir o que o destino suporta.
CEC (Consumer Electronics Control) é um barramento bidirecional de fio único que permite aos dispositivos HDMI / DisplayPort ligados trocar pacotes de controlo curtos – ligar/desligar, comutação de entrada, volume, reencaminhamento de telecomando, etc.
Um ou ambos os canais podem ser ativados na construção. O EDID bruto é lido com display_id(); as tramas CEC podem ser enviadas com send_frame(), consultadas de forma síncrona através de receive_frame(), ou encaminhadas para uma callback com frame_callback().
Exemplo – consultar o EDID do ecrã ligado e aguardar tramas CEC endereçadas 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 ativar a comunicação CEC com um ecrã externo.ddcdefinido comoTruepara ativar a comunicação DDC com um ecrã externo.ddc_addrendereço I2C da EEPROM do ecrã externo.- display_id() bytes¶
Devolve os dados EDID do ecrã externo como um objeto
bytes. Os cabeçalhos e somas de verificação EDID são verificados e todas as secções são concatenadas num único objetobytes. LançaOSErrorem caso de falha.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Envia uma trama CEC para
dst_addra partir desrc_addrcontendodata. LançaOSErrorem caso de falha.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Aguarda até
timeoutmilissegundos por uma trama CEC endereçada adst_addr. Devolve um tuplo de(src_addr, data). LançaOSErrorem caso de tempo limite ou falha.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Regista
callbackpara ser chamada quando uma trama CEC endereçada adst_addré recebida. A callback é invocada com dois argumentos: o endereço de origem como uminte o payload da trama como um objetobytes.Passe
Nonecomocallbackpara desativar a receção. Enquanto uma callback estiver registada, não chameDisplayData.receive_frame().