classe USB_VCP – porta de comunicação virtual USB

A classe USB_VCP permite criar um objeto semelhante a um stream que representa a porta de comunicação virtual USB. Pode ser utilizada para ler e escrever dados via USB para o host ligado.

Construtores

class pyb.USB_VCP(id: int = 0)

Cria um novo objeto USB_VCP. O argumento id seleciona qual a porta USB VCP a utilizar quando mais de uma está exposta.

Métodos

init(*, flow: int = -1) None

Configura a porta USB VCP. Se o argumento flow não for -1, define o controlo de fluxo como um OR lógico bit a bit de USB_VCP.RTS e USB_VCP.CTS. RTS condiciona o comportamento de leitura; CTS condiciona o comportamento de escrita.

setinterrupt(chr: int) None

Define o carácter que interrompe o código Python em execução. É definido como 3 (CTRL-C) por padrão, e quando um carácter CTRL-C é recebido pela porta USB VCP, é lançada uma exceção KeyboardInterrupt.

Defina como -1 para desativar esta funcionalidade de interrupção. Isto é útil quando se pretende enviar bytes brutos pela porta USB VCP.

isconnected() bool

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

debug_mode_enabled() bool

Devolve True se o OpenMV IDE estiver ligado à OpenMV Cam.

any() bool

Devolve True se houver carateres à espera, caso contrário False.

close() None

Este método não faz nada. Existe para que o objeto USB_VCP possa funcionar como um ficheiro.

read(nbytes: int | None = None) bytes | None

Lê no máximo nbytes do dispositivo série e devolve-os como objeto bytes. Se nbytes não for especificado, o método lê todos os bytes disponíveis do dispositivo série. O stream USB_VCP trabalha implicitamente em modo não bloqueante, pelo que, se não houver dados pendentes disponíveis, este método retornará imediatamente com o valor None.

readinto(buf: bytearray, maxlen: int | None = None) int | None

Lê bytes do dispositivo série e armazena-os em buf, que deve ser um objeto semelhante a um buffer. São lidos no máximo len(buf) bytes. Se maxlen for fornecido, são lidos no máximo min(maxlen, len(buf)) bytes.

Devolve o número de bytes lidos e armazenados em buf ou None se não houver dados pendentes disponíveis.

readline() bytes | None

Lê uma linha completa do dispositivo série.

Devolve um objeto bytes com os dados, incluindo o carácter de nova linha no final, ou None se não houver dados pendentes disponíveis.

readlines() List[bytes]

Lê o máximo de dados possível do dispositivo série, dividindo-os em linhas.

Devolve uma lista de objetos bytes, sendo cada objeto uma das linhas. Cada linha incluirá o carácter de nova linha.

write(buf: bytes | bytearray | str) int

Escreve os bytes de buf no dispositivo série.

Devolve o número de bytes escritos.

recv(data: int | bytearray, *, timeout: int = 5000) bytes | int

Recebe dados no barramento:

  • data pode ser um inteiro, que é o número de bytes a receber, ou um buffer mutável que será preenchido com os bytes recebidos.

  • timeout é o tempo limite em milissegundos para aguardar a receção.

Valor de retorno: se data for um inteiro, devolve um novo buffer com os bytes recebidos; caso contrário, é devolvido o número de bytes lidos em data.

send(data: int | bytes | bytearray, *, timeout: int = 5000) int

Envia dados pela USB VCP:

  • data são os dados a enviar (um inteiro a enviar, ou um objeto buffer).

  • timeout é o tempo limite em milissegundos para aguardar o envio.

Valor de retorno: número de bytes enviados.

irq(handler: Callable[[USB_VCP], None] | None = None, trigger: int = IRQ_RX, hard: bool = False) None

Regista handler para ser chamado sempre que ocorra um evento especificado por trigger. A função handler deve aceitar exatamente um argumento, que será o objeto USB VCP. Passe None para desativar o callback.

Os valores válidos para trigger são:

  • USB_VCP.IRQ_RX: novos dados estão disponíveis para leitura a partir do objeto USB VCP.

Constantes

RTS: int

Flag de controlo de fluxo para init(). Ao ativar RTS, o dispositivo limita a transmissão do host quando o buffer de leitura está cheio.

CTS: int

Flag de controlo de fluxo para init(). Ao ativar CTS, o dispositivo respeita o controlo de fluxo do host durante as escritas (bloqueando até o host estar pronto para receber). Pode ser combinado com OR com RTS.

IRQ_RX: int

Gatilho de irq(): é acionado quando novos dados estão disponíveis para leitura a partir do objeto USB VCP.