classe DisplayData – Données d’affichage¶
La classe DisplayData donne accès aux liaisons annexes d’un écran HDMI / DisplayPort connecté :
DDC (Display Data Channel) est un bus I2C qui transporte l’EDID de l’écran – un bloc structuré décrivant les capacités du panneau (fabricant, résolutions et fréquences de rafraîchissement prises en charge, formats de couleur et audio, …). Les périphériques sources l’interrogent une fois au démarrage pour découvrir ce que le récepteur prend en charge.
CEC (Consumer Electronics Control) est un bus bidirectionnel à fil unique qui permet aux périphériques HDMI / DisplayPort connectés d’échanger de courts paquets de contrôle – mise sous/hors tension, commutation d’entrée, volume, transfert de télécommande, etc.
L’un ou l’autre de ces canaux, ou les deux, peuvent être activés à la construction. L’EDID brut est lu avec display_id() ; les trames CEC peuvent être envoyées avec send_frame(), interrogées de manière synchrone via receive_frame(), ou redirigées vers une fonction de rappel avec frame_callback().
Exemple – interroger l’EDID de l’écran connecté et écouter les trames CEC adressées à l’adresse logique 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)
Constructeurs¶
- class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)¶
cecréglé surTruepour activer la communication CEC avec un écran externe.ddcréglé surTruepour activer la communication DDC avec un écran externe.ddc_addradresse I2C de l’EEPROM de l’écran externe.- display_id() bytes¶
Renvoie les données EDID de l’écran externe sous la forme d’un objet
bytes. Les en-têtes et sommes de contrôle EDID sont vérifiés et toutes les sections sont concaténées en un seul objetbytes. LèveOSErroren cas d’échec.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Envoie une trame CEC vers
dst_addrdepuissrc_addrcontenantdata. LèveOSErroren cas d’échec.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Attend jusqu’à
timeoutmillisecondes une trame CEC adressée àdst_addr. Renvoie un tuple(src_addr, data). LèveOSErroren cas d’expiration du délai ou d’échec.
- frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None¶
Enregistre
callbackpour qu’elle soit appelée lorsqu’une trame CEC adressée àdst_addrest reçue. La fonction de rappel est invoquée avec deux arguments : l’adresse source sous forme d”intet la charge utile de la trame sous forme d’objetbytes.Passez
Nonecommecallbackpour désactiver la réception. Tant qu’une fonction de rappel est enregistrée, n’appelez pasDisplayData.receive_frame().