class USB_VCP -- منفذ اتصال افتراضي عبر USB

تتيح فئة USB_VCP إنشاء كائن شبيه بـ stream يمثّل منفذ الاتصال الافتراضي عبر USB. يمكن استخدامه لقراءة وكتابة البيانات عبر USB إلى المضيف الموصول.

المُنشئات

class pyb.USB_VCP(id: int = 0)

إنشاء كائن USB_VCP جديد. يحدد معامل id أي منفذ USB VCP يُستخدم عند الكشف عن أكثر من منفذ واحد.

الأساليب

init(*, flow: int = -1) None

تهيئة منفذ USB VCP. إذا لم يكن معامل flow بقيمة -1 فإنه يضبط التحكم في التدفق، وهو عامل OR بتي بين USB_VCP.RTS وUSB_VCP.CTS. يتحكم RTS في سلوك القراءة؛ ويتحكم CTS في سلوك الكتابة.

setinterrupt(chr: int) None

تعيين الحرف الذي يقاطع تنفيذ كود Python. يُضبط افتراضيًا على 3 (CTRL-C)، وعند استقبال حرف CTRL-C عبر منفذ USB VCP، يُطلق استثناء KeyboardInterrupt.

اضبطه على -1 لتعطيل ميزة المقاطعة هذه. هذا مفيد عندما تريد إرسال بايتات خام عبر منفذ USB VCP.

isconnected() bool

يُرجع True إذا كان USB موصولًا كجهاز تسلسلي، وإلا False.

debug_mode_enabled() bool

يُرجع True إذا كان OpenMV IDE موصولًا بـ OpenMV Cam.

any() bool

يُرجع True إذا كانت هناك أي أحرف منتظرة، وإلا False.

close() None

لا يفعل هذا الأسلوب شيئًا. وهو موجود حتى يتمكن كائن USB_VCP من التصرف كملف.

read(nbytes: int | None = None) bytes | None

قراءة ما لا يزيد عن nbytes من الجهاز التسلسلي وإرجاعها ككائن bytes. إذا لم يُحدَّد nbytes فإن الأسلوب يقرأ جميع البايتات المتاحة من الجهاز التسلسلي. يعمل stream الخاص بـ USB_VCP ضمنيًا في الوضع غير الحاجب، لذا إذا لم تتوفر بيانات معلّقة، فسيعود هذا الأسلوب فورًا بالقيمة None.

readinto(buf: bytearray, maxlen: int | None = None) int | None

قراءة البايتات من الجهاز التسلسلي وتخزينها في buf، الذي ينبغي أن يكون كائنًا شبيهًا بمخزن مؤقت. تُقرأ على الأكثر len(buf) بايت. وإذا أُعطي maxlen فتُقرأ على الأكثر min(maxlen, len(buf)) بايت.

يُرجع عدد البايتات المقروءة والمخزّنة في buf أو None إذا لم تتوفر بيانات معلّقة.

readline() bytes | None

قراءة سطر كامل من الجهاز التسلسلي.

يُرجع كائن bytes يحتوي على البيانات، بما في ذلك حرف السطر الجديد الختامي أو None إذا لم تتوفر بيانات معلّقة.

readlines() List[bytes]

قراءة أكبر قدر ممكن من البيانات من الجهاز التسلسلي، مع تقسيمها إلى أسطر.

يُرجع قائمة من كائنات bytes، يمثّل كل كائن أحد الأسطر. وسيتضمّن كل سطر حرف السطر الجديد.

write(buf: bytes | bytearray | str) int

كتابة البايتات من buf إلى الجهاز التسلسلي.

يُرجع عدد البايتات المكتوبة.

recv(data: int | bytearray, *, timeout: int = 5000) bytes | int

استقبال البيانات على الناقل:

  • data يمكن أن يكون عددًا صحيحًا، وهو عدد البايتات المراد استقبالها، أو مخزنًا مؤقتًا قابلًا للتعديل سيُملأ بالبايتات المستقبَلة.

  • timeout هو زمن الانتظار بالميلي ثانية لانتظار الاستقبال.

القيمة المُرجَعة: إذا كان data عددًا صحيحًا فيُرجَع مخزن مؤقت جديد بالبايتات المستقبَلة، وإلا يُرجَع عدد البايتات المقروءة في data.

send(data: int | bytes | bytearray, *, timeout: int = 5000) int

إرسال البيانات عبر USB VCP:

  • data هي البيانات المراد إرسالها (عدد صحيح للإرسال، أو كائن مخزن مؤقت).

  • timeout هو زمن الانتظار بالميلي ثانية لانتظار الإرسال.

القيمة المُرجَعة: عدد البايتات المُرسَلة.

irq(handler: Callable[[USB_VCP], None] | None = None, trigger: int = IRQ_RX, hard: bool = False) None

تسجيل handler ليُستدعى كلما وقع حدث محدد بواسطة trigger. يجب أن تأخذ دالة handler وسيطًا واحدًا بالضبط، وهو كائن USB VCP. مرّر None لتعطيل دالة رد النداء.

القيم الصالحة لـ trigger هي:

  • USB_VCP.IRQ_RX: تتوفر بيانات جديدة للقراءة من كائن USB VCP.

الثوابت

RTS: int

علم التحكم في التدفق لـ init(). تمكين RTS يجعل الجهاز يخنق إرسال المضيف عندما يكون مخزن القراءة المؤقت ممتلئًا.

CTS: int

علم التحكم في التدفق لـ init(). تمكين CTS يجعل الجهاز يحترم التحكم في تدفق المضيف أثناء عمليات الكتابة (مع الحجب حتى يكون المضيف جاهزًا للاستقبال). يمكن دمجه بعامل OR مع RTS.

IRQ_RX: int

مُطلِق irq(): يُطلَق عندما تتوفر بيانات جديدة للقراءة من كائن USB VCP.