class DisplayData -- Dữ liệu màn hình

Lớp DisplayData cung cấp truy cập vào các kết nối kênh phụ của màn hình HDMI / DisplayPort đã kết nối:

  • DDC (Display Data Channel) là bus I2C mang EDID của màn hình -- một khối dữ liệu có cấu trúc mô tả khả năng của tấm nền (nhà sản xuất, độ phân giải và tốc độ làm mới được hỗ trợ, định dạng màu sắc và âm thanh, ...). Thiết bị nguồn truy vấn nó một lần khi khởi động để biết những gì thiết bị đích hỗ trợ.

  • CEC (Consumer Electronics Control) là bus hai chiều một dây cho phép các thiết bị HDMI / DisplayPort đã kết nối trao đổi các gói điều khiển ngắn -- bật/tắt nguồn, chuyển đầu vào, âm lượng, chuyển tiếp điều khiển từ xa, v.v.

Một hoặc cả hai kênh có thể được bật khi khởi tạo. EDID thô được đọc bằng display_id(); các khung CEC có thể được gửi bằng send_frame(), thăm dò đồng bộ qua receive_frame(), hoặc định tuyến đến hàm gọi lại bằng frame_callback().

Ví dụ -- truy vấn EDID của màn hình đã kết nối và lắng nghe các khung CEC được gửi đến địa chỉ logic 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)

Hàm khởi tạo

class display.DisplayData(*, cec: bool = False, ddc: bool = False, ddc_addr: int = 0x50)

cec đặt thành True để bật giao tiếp CEC với màn hình ngoài.

ddc đặt thành True để bật giao tiếp DDC với màn hình ngoài.

ddc_addr địa chỉ I2C của EEPROM màn hình ngoài.

display_id() bytes

Trả về dữ liệu EDID của màn hình ngoài dưới dạng đối tượng bytes. Tiêu đề và checksum EDID được xác minh và tất cả các phần được ghép thành một đối tượng bytes duy nhất. Ném OSError khi thất bại.

send_frame(dst_addr: int, src_addr: int, data: bytes) None

Gửi khung CEC đến dst_addr từ src_addr chứa data. Ném OSError khi thất bại.

receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]

Chờ tối đa timeout mili giây để nhận khung CEC gửi đến dst_addr. Trả về tuple (src_addr, data). Ném OSError khi hết thời gian hoặc thất bại.

frame_callback(callback: Callable[[int, bytes], None] | None, dst_addr: int) None

Đăng ký callback để được gọi khi nhận được khung CEC gửi đến dst_addr. Hàm gọi lại được gọi với hai đối số: địa chỉ nguồn là int và nội dung khung là đối tượng bytes.

Truyền None làm callback để tắt việc nhận. Trong khi có hàm gọi lại đang được đăng ký, không gọi DisplayData.receive_frame().