pyb — funciones relacionadas con la placa

Advertencia

El módulo pyb está obsoleto. Para código nuevo, utilice el módulo multiplataforma machine, ya que ofrece la misma funcionalidad en cualquier OpenMV Cam independientemente de la familia de MCU, mientras que pyb solo existe en las placas basadas en STM32. pyb se conserva por compatibilidad con scripts antiguos, no se añadirán nuevas funciones y podría eliminarse en una versión futura.

El módulo pyb contiene funciones específicas de STM32 relacionadas con la placa.

Funciones varias

pyb.have_cdc() bool

Devuelve True si el USB está conectado como dispositivo serie, y False en caso contrario.

Nota

Esta función está obsoleta. Use pyb.USB_VCP().isconnected() en su lugar.

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

Toma una tupla de 4 elementos (o lista) y la envía al host USB (el PC) para señalar un evento de movimiento de ratón HID.

Nota

Esta función está obsoleta. Use pyb.USB_HID.send() en su lugar.

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

Imprime gran cantidad de información sobre la placa.

pyb.main(filename: str) None

Establece el nombre del archivo del script principal que se ejecutará después de que finalice boot.py. Si no se llama a esta función, se ejecutará el archivo predeterminado main.py.

Solo tiene sentido llamar a esta función desde dentro de boot.py.

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

Nota

Esta función está obsoleta. Use vfs.mount() / vfs.umount() y un dispositivo de bloques derivado de vfs.AbstractBlockDev en su lugar.

Monta un dispositivo de bloques en mountpoint. device debe implementar el protocolo heredado de dispositivos de bloques de pyb (también obsoleto; consulte vfs.AbstractBlockDev para la interfaz moderna):

Método

Propósito

readblocks(self, blocknum, buf)

Copia buf bytes desde el dispositivo a partir del bloque blocknum. La longitud de buf es un múltiplo de 512.

writeblocks(self, blocknum, buf) (opcional)

Escribe buf en el dispositivo a partir del bloque blocknum. Si se omite, el dispositivo se monta en modo de solo lectura.

count(self)

Devuelve el número de bloques de 512 bytes del dispositivo.

sync(self) (opcional)

Vacía cualquier escritura en caché.

mountpoint es la ruta en la raíz del sistema de archivos donde se montará el dispositivo; debe comenzar con una barra inclinada. readonly fuerza un montaje de solo lectura. mkfs crea un nuevo sistema de archivos si no hay ninguno presente.

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

Obtiene o establece el objeto UART en el que se repite el REPL.

pyb.rng() int

Devuelve un número aleatorio generado por hardware de 30 bits.

pyb.sync() None

Sincroniza todos los sistemas de archivos.

pyb.unique_id() bytes

Devuelve una cadena de 12 bytes (96 bits) que es el ID único del 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

Si se llama sin argumentos, devuelve el modo USB actual como una cadena.

Si se llama proporcionando modestr, intenta configurar el modo USB. Se entienden los siguientes valores de modestr:

modestr

Configura

None

Deshabilita el USB.

'VCP'

Solo VCP (Virtual COM Port).

'MSC'

Solo MSC (clase de almacenamiento masivo USB).

'VCP+MSC'

VCP y MSC.

'VCP+HID'

VCP y HID (dispositivo de interfaz humana).

'VCP+MSC+HID'

VCP, MSC y HID juntos. No compatible con todas las OpenMV Cam.

Por compatibilidad con versiones anteriores, 'CDC' se interpreta como 'VCP' (y de forma análoga 'CDC+MSC' y 'CDC+HID').

El parámetro port debe ser un entero (0, 1, …) y selecciona qué puerto USB usar si la placa admite varios puertos. Un valor de -1 usa el puerto predeterminado o seleccionado automáticamente.

Los parámetros vid y pid permiten especificar el VID (identificador de fabricante) y el PID (identificador de producto). Un valor de pid de -1 seleccionará un PID basado en el valor de modestr.

Si se habilita el modo MSC, el parámetro msc puede usarse para especificar una lista de LUN SCSI que se expondrán en la interfaz de almacenamiento masivo. Por ejemplo, msc=(pyb.Flash(), pyb.SDCard()).

Si se habilita el modo HID, también puede especificar los detalles HID pasando el parámetro de palabra clave hid. Toma una tupla de (subclase, protocolo, longitud máxima de paquete, intervalo de sondeo, descriptor de informe). De forma predeterminada establecerá valores apropiados para un ratón USB. También existe la constante pyb.hid_keyboard, que es una tupla apropiada para un teclado USB.

El parámetro high_speed, cuando se establece en True, habilita el modo USB HS si el hardware lo admite.

Constantes

Ambas constantes a continuación son tuplas de 5 elementos predefinidas con la forma

(subclass, protocol, max_packet_size, polling_interval_ms, report_descriptor)

adecuadas para pasarse como argumento hid de usb_mode() para hacer que la OpenMV Cam aparezca ante el host como un dispositivo USB HID. subclass = 1 significa «interfaz de arranque» y protocol selecciona la clase de dispositivo de arranque (1 = teclado, 2 = ratón). El quinto elemento es un objeto bytes que contiene el descriptor de informe HID utilizado cuando el host enumera el dispositivo.

pyb.hid_mouse: tuple

Descriptor HID predefinido para un ratón de arranque de 3 botones con movimiento relativo en X/Y. La tupla es (1, 2, 4, 8, <mouse report descriptor>): subclase de arranque, protocolo de ratón, informes de entrada de 4 bytes (máscara de botones + X + Y + rueda), sondeado cada 8 ms. El descriptor de informe integrado es el que usa pyb.USB_HID().send((buttons, dx, dy, wheel)).

pyb.hid_keyboard: tuple

Descriptor HID predefinido para un teclado de arranque USB. La tupla es (1, 1, 8, 8, <keyboard report descriptor>): subclase de arranque, protocolo de teclado, informes de entrada de 8 bytes (byte modificador, un byte reservado, seis códigos de tecla simultáneos), sondeado cada 8 ms. El descriptor de informe integrado coincide con la disposición estándar del teclado de arranque HID de 8 bytes, por lo que el informe enviado mediante USB_HID.send() debe ser un objeto bytes de la forma (modifiers, 0, key1, key2, key3, key4, key5, key6).

Clases