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.