الصنف TVDisplay -- مشغل درع TV

يقود الصنف TVDisplay درع OpenMV TV Shield، الذي يحوّل مخزن إطارات RGB565 إلى إشارة فيديو NTSC مركّبة (352x240، 60 حقلًا/ثانية متشابكة) مناسبة لأي تلفاز أو شاشة فيديو تناظرية.

يُدعم نوعان من الدروع:

  • درع TV Shield السلكي، الذي يكشف عن الإشارة المركّبة على مقبس RCA واحد.

  • درع Wireless TV Shield اللاسلكي، الذي يُغذّي الإشارة نفسها إلى مرسل فيديو تناظري بتردد 2.4 جيجاهرتز. يُختار قناة المستقبل (1--8) أثناء التشغيل عبر ioctl() مع display.IOCTL_CHANNEL؛ ولا تُختار أي قناة حتى يُجرى ذلك الاستدعاء.

الدقة والتأطير ثابتان -- لا يأخذ TVDisplay وسيطة framesize. تُعرض الإطارات بتمرير image.Image إلى write()، التي تتعامل داخليًا مع التحجيم ومنطقة الاهتمام واللوحة وتحويلات الاتجاه.

مثال على الاستخدام:

import csi
import display

csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.SIF)              # 352x240, matches the TV output

tv = display.TVDisplay()

while True:
    tv.write(csi0.snapshot())

المنشئات

class display.TVDisplay(triple_buffer: bool = True)

triple_buffer إذا كانت True فإنها تجعل تحديثات الشاشة غير حاجزة على حساب ثلاثة أضعاف حجم الشاشة في RAM. القيمة الافتراضية تعتمد على اللوحة.

deinit() None

تحرّر دبابيس الإدخال/الإخراج وذاكرة RAM المستخدمة من قبل الصنف. تُستدعى تلقائيًا عند التدمير.

width() int

تُعيد عرض الشاشة (352).

height() int

تُعيد ارتفاع الشاشة (240).

refresh() int

تُعيد معدل التحديث (60).

triple_buffer() bool

تُعيد ما إذا كان التخزين المؤقت الثلاثي مُمكّنًا.

write(image: image.Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 256, color_palette: int | 'image.Image' | None = None, alpha_palette: 'image.Image' | None = None, hint: int = 0) None

تعرض image تبدأ زاويتها العلوية اليسرى عند الموقع x، y.

x_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه x (قيمة عشرية). إذا كانت هذه القيمة سالبة تُقلب الصورة أفقيًا.

y_scale يتحكم في مقدار تحجيم الصورة المعروضة في اتجاه y (قيمة عشرية). إذا كانت هذه القيمة سالبة تُقلب الصورة رأسيًا.

roi هو صف مستطيل منطقة الاهتمام (x, y, w, h) من الصورة المراد عرضها.

rgb_channel هو قناة RGB (0=R، G=1، B=2) المراد استخلاصها من صورة RGB565 وعرضها على الشاشة.

alpha يتحكم في مدى عتامة الصورة. تعرض القيمة 256 صورة معتمة بينما تنتج القيمة الأقل من 256 صورة شفافة سوداء. ينتج عن 0 صورة سوداء تمامًا.

color_palette إذا لم تكن -1 يمكن أن تكون تعداد لوحة ألوان أو صورة RGB565 بإجمالي 256 بكسل تُستخدم كجدول بحث للألوان على قيمة تدرج الرمادي للصورة المدخلة.

alpha_palette إذا لم تكن -1 يمكن أن تكون صورة GRAYSCALE بإجمالي 256 بكسل تُستخدم كلوحة ألفا تُعدّل قيمة alpha للصورة المدخلة على مستوى كل بكسل.

hint هو OR منطقي للأعلام:

clear(display_off: bool = False) None

تمسح الشاشة إلى اللون الأسود.

display_off مقبول للتوافق مع واجهة أصناف العرض الأخرى ويُتجاهل.

ioctl(cmd: int, *args) object

نقطة دخول ioctl العامة.

مرّر display.IOCTL_CHANNEL كـ cmd لضبط أو الحصول على قناة بث درع TV اللاسلكي. مع وسيطة ثانية (1-8) تُضبط القناة؛ وبدون وسيطة ثانية تُعاد القناة الحالية. لا تُختار أي قناة حتى يُجرى أول استدعاء ضبط.