pyb — funções relacionadas com a placa

Aviso

O módulo pyb está obsoleto. Utilize o módulo portátil machine para novo código – este oferece a mesma funcionalidade em todas as OpenMV Cam independentemente da família de MCU, enquanto que pyb existe apenas nas placas baseadas em STM32. O pyb é mantido por compatibilidade retroativa com scripts mais antigos, não serão adicionadas novas funcionalidades e poderá ser removido numa versão futura.

O módulo pyb contém funções específicas do STM32 relacionadas com a placa.

Funções diversas

pyb.have_cdc() bool

Devolve True se o USB estiver ligado como dispositivo série, False caso contrário.

Nota

Esta função está obsoleta. Utilize pyb.USB_VCP().isconnected() em alternativa.

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

Recebe um tuplo de 4 elementos (ou lista) e envia-o ao host USB (o PC) para sinalizar um evento de movimento do rato HID.

Nota

Esta função está obsoleta. Utilize pyb.USB_HID.send() em alternativa.

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

Imprime muita informação sobre a placa.

pyb.main(filename: str) None

Define o nome do ficheiro do script principal a executar após boot.py terminar. Se esta função não for chamada, será executado o ficheiro predefinido main.py.

Só faz sentido chamar esta função a partir de boot.py.

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

Nota

Esta função está obsoleta. Utilize vfs.mount() / vfs.umount() e um dispositivo de blocos derivado de vfs.AbstractBlockDev em alternativa.

Monta um dispositivo de blocos em mountpoint. O device deve implementar o protocolo legado de dispositivo de blocos pyb (também obsoleto – consulte vfs.AbstractBlockDev para a interface moderna):

Método

Objetivo

readblocks(self, blocknum, buf)

Copia buf bytes do dispositivo a partir do bloco blocknum. O comprimento de buf é um múltiplo de 512.

writeblocks(self, blocknum, buf) (opcional)

Escreve buf no dispositivo a partir do bloco blocknum. Se omitido, o dispositivo é montado em modo de apenas leitura.

count(self)

Devolve o número de blocos de 512 bytes no dispositivo.

sync(self) (opcional)

Liberta quaisquer escritas em cache.

mountpoint é o caminho na raiz do sistema de ficheiros onde o dispositivo será montado; deve começar com uma barra diagonal. readonly força uma montagem em modo de apenas leitura. mkfs cria um novo sistema de ficheiros se não existir nenhum.

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

Obtém ou define o objeto UART onde o REPL é repetido.

pyb.rng() int

Devolve um número aleatório gerado por hardware de 30 bits.

pyb.sync() None

Sincroniza todos os sistemas de ficheiros.

pyb.unique_id() bytes

Devolve uma string de 12 bytes (96 bits), que é o ID único do 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

Se chamada sem argumentos, devolve o modo USB atual como uma string.

Se chamada com modestr fornecido, tenta configurar o modo USB. Os seguintes valores de modestr são reconhecidos:

modestr

Configura

None

Desativa o USB.

'VCP'

Apenas VCP (Porta COM Virtual).

'MSC'

Apenas MSC (classe de armazenamento em massa USB).

'VCP+MSC'

VCP e MSC.

'VCP+HID'

VCP e HID (dispositivo de interface humana).

'VCP+MSC+HID'

VCP, MSC e HID em conjunto. Não suportado em todas as OpenMV Cam.

Por compatibilidade retroativa, 'CDC' é interpretado como significando 'VCP' (e de forma semelhante para 'CDC+MSC' e 'CDC+HID').

O parâmetro port deve ser um inteiro (0, 1, …) e seleciona qual porta USB utilizar se a placa suportar múltiplas portas. Um valor de -1 utiliza a porta predefinida ou selecionada automaticamente.

Os parâmetros vid e pid permitem especificar o VID (identificador de fornecedor) e o PID (identificador de produto). Um valor de pid igual a -1 selecionará um PID com base no valor de modestr.

Se ativar o modo MSC, o parâmetro msc pode ser utilizado para especificar uma lista de LUNs SCSI a expor na interface de armazenamento em massa. Por exemplo msc=(pyb.Flash(), pyb.SDCard()).

Se ativar o modo HID, pode também especificar os detalhes HID passando o parâmetro de palavra-chave hid. Recebe um tuplo de (subclasse, protocolo, comprimento máximo de pacote, intervalo de polling, descritor de relatório). Por predefinição, definirá os valores apropriados para um rato USB. Existe também uma constante pyb.hid_keyboard, que é um tuplo adequado para um teclado USB.

O parâmetro high_speed, quando definido como True, ativa o modo USB HS se for suportado pelo hardware.

Constantes

Ambas as constantes abaixo são tuplos de 5 elementos prontos a usar na forma

(subclass, protocol, max_packet_size, polling_interval_ms, report_descriptor)

adequados para serem passados como argumento hid de usb_mode() para fazer a OpenMV Cam aparecer ao host como um dispositivo USB HID. subclass = 1 significa «interface de arranque» e protocol seleciona a classe de dispositivo de arranque (1 = teclado, 2 = rato). O quinto elemento é um objeto bytes com o descritor de relatório HID utilizado quando o host enumera o dispositivo.

pyb.hid_mouse: tuple

Descritor HID pré-construído para um rato de arranque de 3 botões com movimento relativo X/Y. O tuplo é (1, 2, 4, 8, <mouse report descriptor>): subclasse de arranque, protocolo de rato, relatórios de entrada de 4 bytes (máscara de botões + X + Y + roda), com polling a cada 8 ms. O descritor de relatório integrado é o utilizado por pyb.USB_HID().send((buttons, dx, dy, wheel)).

pyb.hid_keyboard: tuple

Descritor HID pré-construído para um teclado USB de arranque. O tuplo é (1, 1, 8, 8, <keyboard report descriptor>): subclasse de arranque, protocolo de teclado, relatórios de entrada de 8 bytes (byte modificador, um byte reservado, seis códigos de teclas simultâneos), com polling a cada 8 ms. O descritor de relatório integrado corresponde ao esquema padrão de teclado HID de arranque de 8 bytes, pelo que o relatório enviado via USB_HID.send() deve ser um bytes da forma (modifiers, 0, key1, key2, key3, key4, key5, key6).

Classes