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ànhTrueđể bật giao tiếp CEC với màn hình ngoài.ddcđặt thànhTrueđể 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ượngbytesduy nhất. NémOSErrorkhi thất bại.
- send_frame(dst_addr: int, src_addr: int, data: bytes) None¶
Gửi khung CEC đến
dst_addrtừsrc_addrchứadata. NémOSErrorkhi thất bại.
- receive_frame(dst_addr: int, *, timeout: int = 1000) tuple[int, bytes]¶
Chờ tối đa
timeoutmili giây để nhận khung CEC gửi đếndst_addr. Trả về tuple(src_addr, data). NémOSErrorkhi 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 đếndst_addr. Hàm gọi lại được gọi với hai đối số: địa chỉ nguồn làintvà nội dung khung là đối tượngbytes.Truyền
Nonelàmcallbackđể tắt việc nhận. Trong khi có hàm gọi lại đang được đăng ký, không gọiDisplayData.receive_frame().