class DisplayData -- 显示数据¶
DisplayData 类提供对所连接的 HDMI / DisplayPort 显示器旁路通道链接的访问:
DDC(显示数据通道)是一条 I2C 总线,用于承载显示器的 EDID——一个描述面板能力的结构化数据块(制造商、支持的分辨率和刷新率、颜色和音频格式……)。源设备在启动时查询一次,以发现接收端所支持的功能。
CEC(消费电子控制)是一条单线双向总线,让连接的 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¶
以
bytes对象的形式返回外部显示器的 EDID 数据。EDID 头部和校验和会被验证,并将所有段拼接成单个bytes对象。失败时抛出OSError。
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
从
src_addr向dst_addr发送一个包含data的 CEC 帧。失败时抛出OSError。