class DisplayData – 디스플레이 데이터¶
DisplayData 클래스는 연결된 HDMI / DisplayPort 디스플레이의 사이드 채널 링크에 대한 접근을 제공합니다:
DDC (Display Data Channel)는 디스플레이의 EDID를 전달하는 I2C 버스입니다. EDID는 패널 성능(제조사, 지원 해상도 및 재생률, 색상 및 오디오 형식 등)을 기술하는 구조화된 블록입니다. 소스 장치는 시작 시 한 번 이를 조회하여 싱크가 무엇을 지원하는지 알아냅니다.
CEC (Consumer Electronics Control)는 연결된 HDMI / DisplayPort 장치들이 짧은 제어 패킷(전원 켜기/끄기, 입력 전환, 볼륨, 리모컨 전달 등)을 주고받을 수 있게 하는 단선 양방향 버스입니다.
두 채널 중 하나 또는 둘 다 생성 시점에 활성화할 수 있습니다. 원시 EDID는 display_id() 로 읽으며, CEC 프레임은 send_frame() 으로 전송하거나 receive_frame() 을 통해 동기적으로 폴링하거나 frame_callback() 으로 콜백에 라우팅할 수 있습니다.
예제 – 연결된 디스플레이의 EDID를 조회하고 논리 주소 0으로 보내진 CEC 프레임을 수신 대기합니다:
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)
생성자¶
- class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)¶
cec를True로 설정하면 외부 디스플레이와의 CEC 통신을 활성화합니다.ddc를True로 설정하면 외부 디스플레이와의 DDC 통신을 활성화합니다.ddc_addr외부 디스플레이 EEPROM의 I2C 주소입니다.- display_id() bytes¶
외부 디스플레이 EDID 데이터를
bytes객체로 반환합니다. EDID 헤더와 체크섬이 검증되고 모든 섹션이 하나의bytes객체로 연결됩니다. 실패 시OSError를 발생시킵니다.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
src_addr에서dst_addr로data를 담은 CEC 프레임을 전송합니다. 실패 시OSError를 발생시킵니다.