class 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, он задаёт управление потоком — побитовое ИЛИ из 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 не задан, то метод читает все доступные байты из последовательного устройства. 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 заставляет устройство соблюдать управление потоком хоста при записи (блокируя до тех пор, пока хост не будет готов к приёму). Может быть объединён по ИЛИ с RTS.

IRQ_RX: int

irq() триггер: срабатывает, когда новые данные доступны для чтения из объекта USB VCP.