клас USB_VCP – віртуальний COM-порт USB

Клас USB_VCP дозволяє створити об’єкт типу stream, що представляє віртуальний COM-порт 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), і коли через USB VCP-порт отримується символ CTRL-C, генерується виняток 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 не задано, метод читає всі доступні байти з послідовного пристрою. USB_VCP stream неявно працює в неблокуючому режимі, тому якщо немає очікуваних даних, цей метод поверне негайно значення 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.