pyb — функции, связанные с платой

Предупреждение

Модуль pyb устарел. Для нового кода используйте кросс-портовый модуль machine – он предоставляет ту же функциональность на любой OpenMV Cam независимо от семейства MCU, тогда как pyb существует только на платах на базе STM32. pyb сохранён для обратной совместимости со старыми скриптами, новые возможности в него добавляться не будут, и он может быть удалён в будущем выпуске.

Модуль pyb содержит специфичные для STM32 функции, связанные с платой.

Прочие функции

pyb.have_cdc() bool

Возвращает True, если USB подключён как последовательное устройство, иначе False.

Примечание

Эта функция устарела. Вместо неё используйте pyb.USB_VCP().isconnected().

pyb.hid(data: Tuple[int, int, int, int]) None

Принимает 4-кортеж (или список) и отправляет его USB-хосту (ПК), чтобы сигнализировать о событии перемещения HID-мыши.

Примечание

Эта функция устарела. Вместо неё используйте pyb.USB_HID.send().

pyb.info(dump_alloc_table: bool | None = None) None

Выводит множество сведений о плате.

pyb.main(filename: str) None

Устанавливает имя файла основного скрипта, который будет запущен после завершения boot.py. Если эта функция не вызвана, то будет выполнен файл по умолчанию main.py.

Эту функцию имеет смысл вызывать только из boot.py.

pyb.mount(device: Any, mountpoint: str, *, readonly: bool = False, mkfs: bool = False) None

Примечание

Эта функция устарела. Вместо неё используйте vfs.mount() / vfs.umount() и блочное устройство, производное от vfs.AbstractBlockDev.

Монтирует блочное устройство в точку mountpoint. device должно реализовывать устаревший протокол блочного устройства pyb (также устаревший – современный интерфейс см. в vfs.AbstractBlockDev):

Метод

Назначение

readblocks(self, blocknum, buf)

Копирует buf байт с устройства, начиная с блока blocknum. Длина buf кратна 512.

writeblocks(self, blocknum, buf) (необязательный)

Записывает buf на устройство, начиная с блока blocknum. Если опущен, устройство монтируется только для чтения.

count(self)

Возвращает число 512-байтовых блоков на устройстве.

sync(self) (необязательный)

Сбрасывает все кэшированные записи.

mountpoint – это путь в корне файловой системы, по которому монтируется устройство; он должен начинаться с прямого слеша. readonly принудительно монтирует только для чтения. mkfs создаёт новую файловую систему, если ни одной нет.

pyb.repl_uart(uart: UART | None = None) UART | None

Получает или устанавливает объект UART, на который дублируется REPL.

pyb.rng() int

Возвращает 30-битное аппаратно сгенерированное случайное число.

pyb.sync() None

Синхронизирует все файловые системы.

pyb.unique_id() bytes

Возвращает строку из 12 байт (96 бит), являющуюся уникальным идентификатором MCU.

pyb.usb_mode(modestr: str | None = None, port: int = -1, vid: int = 0xf055, pid: int = -1, msc: Tuple = (), hid: Tuple = pyb.hid_mouse, high_speed: bool = False) str | None

Если вызвана без аргументов, возвращает текущий режим USB в виде строки.

Если вызвана с предоставленным modestr, пытается настроить режим USB. Распознаются следующие значения modestr:

modestr

Настраивает

None

Отключает USB.

'VCP'

Только VCP (Virtual COM Port).

'MSC'

Только MSC (класс USB-устройств массового хранения).

'VCP+MSC'

VCP и MSC.

'VCP+HID'

VCP и HID (устройство пользовательского интерфейса).

'VCP+MSC+HID'

VCP, MSC и HID вместе. Поддерживается не на каждой OpenMV Cam.

Для обратной совместимости 'CDC' понимается как 'VCP' (и аналогично для 'CDC+MSC' и 'CDC+HID').

Параметр port должен быть целым числом (0, 1, …) и выбирает, какой USB-порт использовать, если плата поддерживает несколько портов. Значение -1 использует порт по умолчанию или выбранный автоматически.

Параметры vid и pid позволяют указать VID (идентификатор производителя) и PID (идентификатор продукта). Значение pid, равное -1, выберет PID на основе значения modestr.

При включении режима MSC параметр msc можно использовать для указания списка SCSI LUN, отображаемых на интерфейсе массового хранения. Например, msc=(pyb.Flash(), pyb.SDCard()).

При включении режима HID вы также можете указать параметры HID, передав ключевой параметр hid. Он принимает кортеж (subclass, protocol, max packet length, polling interval, report descriptor). По умолчанию он устанавливает подходящие значения для USB-мыши. Также существует константа pyb.hid_keyboard, которая является подходящим кортежем для USB-клавиатуры.

Параметр high_speed, если установлен в True, включает режим USB HS, если он поддерживается аппаратно.

Константы

Обе константы ниже представляют собой готовые 5-кортежи в форме

(subclass, protocol, max_packet_size, polling_interval_ms, report_descriptor)

подходящие для передачи в качестве аргумента hid функции usb_mode(), чтобы OpenMV Cam отображалась для хоста как USB-устройство HID. subclass = 1 означает «boot interface», а protocol выбирает класс boot-устройства (1 = клавиатура, 2 = мышь). Пятый элемент – это объект bytes, содержащий дескриптор отчёта HID, используемый при перечислении устройства хостом.

pyb.hid_mouse: tuple

Готовый дескриптор HID для 3-кнопочной boot-мыши с относительным перемещением по X/Y. Кортеж имеет вид (1, 2, 4, 8, <mouse report descriptor>): boot-подкласс, протокол мыши, 4-байтовые входные отчёты (маска кнопок + X + Y + колесо), опрос каждые 8 мс. Встроенный дескриптор отчёта – это тот, который используется в pyb.USB_HID().send((buttons, dx, dy, wheel)).

pyb.hid_keyboard: tuple

Готовый дескриптор HID для USB boot-клавиатуры. Кортеж имеет вид (1, 1, 8, 8, <keyboard report descriptor>): boot-подкласс, протокол клавиатуры, 8-байтовые входные отчёты (байт модификаторов, один зарезервированный байт, шесть одновременных кодов клавиш), опрос каждые 8 мс. Встроенный дескриптор отчёта соответствует стандартной 8-байтовой раскладке HID boot-клавиатуры, поэтому отчёт, отправляемый через USB_HID.send(), должен быть объектом bytes вида (modifiers, 0, key1, key2, key3, key4, key5, key6).

Классы