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.