classe USB_VCP – porta de comunicação virtual USB

A classe USB_VCP permite a criação de um objeto do tipo stream que representa a porta de comunicação virtual USB. Ela pode ser usada para ler e escrever dados via USB para o host conectado.

Construtores

class pyb.USB_VCP(id: int = 0)

Cria um novo objeto USB_VCP. O argumento id seleciona qual porta USB VCP usar quando mais de uma é exposta.

Métodos

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

Configura a porta USB VCP. Se o argumento flow não for -1, ele define o controle de fluxo, um OR bit a bit de USB_VCP.RTS e USB_VCP.CTS. RTS controla o comportamento de leitura; CTS controla o comportamento de escrita.

setinterrupt(chr: int) None

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

Defina como -1 para desabilitar esse recurso de interrupção. Isso é útil quando você deseja enviar bytes brutos pela porta USB VCP.

isconnected() bool

Retorna True se o USB estiver conectado como um dispositivo serial, caso contrário False.

debug_mode_enabled() bool

Retorna True se a OpenMV IDE estiver conectada à OpenMV Cam.

any() bool

Retorna True se houver algum caractere aguardando, caso contrário False.

close() None

Este método não faz nada. Ele existe para que o objeto USB_VCP possa agir como um arquivo.

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

Lê no máximo nbytes do dispositivo serial e os retorna como um objeto bytes. Se nbytes não for especificado, o método lê todos os bytes disponíveis do dispositivo serial. O stream USB_VCP funciona implicitamente em modo não bloqueante, portanto, se nenhum dado pendente estiver disponível, este método retornará imediatamente com o valor None.

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

Lê bytes do dispositivo serial e os armazena em buf, que deve ser um objeto do tipo buffer. No máximo len(buf) bytes são lidos. Se maxlen for fornecido, então no máximo min(maxlen, len(buf)) bytes são lidos.

Retorna o número de bytes lidos e armazenados em buf ou None se nenhum dado pendente estiver disponível.

readline() bytes | None

Lê uma linha inteira do dispositivo serial.

Retorna um objeto bytes contendo os dados, incluindo o caractere de nova linha no final, ou None se nenhum dado pendente estiver disponível.

readlines() List[bytes]

Lê a maior quantidade de dados possível do dispositivo serial, dividindo-os em linhas.

Retorna uma lista de objetos bytes, cada objeto sendo uma das linhas. Cada linha incluirá o caractere de nova linha.

write(buf: bytes | bytearray | str) int

Escreve os bytes de buf no dispositivo serial.

Retorna 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 recepção.

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

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

Envia dados pela USB VCP:

  • data são os dados a serem enviados (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

Registra handler para ser chamado sempre que um evento especificado por trigger ocorrer. A função handler deve receber exatamente um argumento, que será o objeto USB VCP. Passe None para desabilitar o callback.

Os valores válidos para trigger são:

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

Constantes

RTS: int

Flag de controle de fluxo para init(). Habilitar RTS faz com que o dispositivo limite a transmissão do host quando o buffer de leitura está cheio.

CTS: int

Flag de controle de fluxo para init(). Habilitar CTS faz com que o dispositivo respeite o controle de fluxo do host durante as escritas (bloqueando até que o host esteja pronto para receber). Pode ser combinado via OR com RTS.

IRQ_RX: int

Gatilho de irq(): dispara quando novos dados estão disponíveis para leitura no objeto USB VCP.