clase USB_VCP – puerto de comunicación virtual USB

La clase USB_VCP permite crear un objeto similar a un stream que representa el puerto de comunicación virtual USB. Puede usarse para leer y escribir datos a través de USB hacia el host conectado.

Constructores

class pyb.USB_VCP(id: int = 0)

Crea un nuevo objeto USB_VCP. El argumento id selecciona qué puerto USB VCP usar cuando hay más de uno expuesto.

Métodos

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

Configura el puerto USB VCP. Si el argumento flow no es -1, establece el control de flujo, una operación OR a nivel de bits de USB_VCP.RTS y USB_VCP.CTS. RTS regula el comportamiento de lectura; CTS regula el comportamiento de escritura.

setinterrupt(chr: int) None

Establece el carácter que interrumpe la ejecución del código Python. Está establecido en 3 (CTRL-C) por defecto, y cuando se recibe un carácter CTRL-C a través del puerto USB VCP, se lanza una excepción KeyboardInterrupt.

Establézcalo en -1 para deshabilitar esta función de interrupción. Esto es útil cuando se desea enviar bytes en bruto a través del puerto USB VCP.

isconnected() bool

Devuelve True si el USB está conectado como un dispositivo serie, de lo contrario False.

debug_mode_enabled() bool

Devuelve True si OpenMV IDE está conectado a la OpenMV Cam.

any() bool

Devuelve True si hay caracteres en espera, de lo contrario False.

close() None

Este método no hace nada. Existe para que el objeto USB_VCP pueda actuar como un archivo.

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

Lee como máximo nbytes del dispositivo serie y los devuelve como un objeto bytes. Si no se especifica nbytes, el método lee todos los bytes disponibles del dispositivo serie. El stream USB_VCP funciona implícitamente en modo no bloqueante, por lo que si no hay datos pendientes disponibles, este método devolverá inmediatamente con el valor None.

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

Lee bytes del dispositivo serie y los almacena en buf, que debe ser un objeto de tipo búfer. Se leen como máximo len(buf) bytes. Si se da maxlen, se leen como máximo min(maxlen, len(buf)) bytes.

Devuelve el número de bytes leídos y almacenados en buf o None si no hay datos pendientes disponibles.

readline() bytes | None

Lee una línea completa del dispositivo serie.

Devuelve un objeto bytes que contiene los datos, incluido el carácter de nueva línea final, o None si no hay datos pendientes disponibles.

readlines() List[bytes]

Lee todos los datos posibles del dispositivo serie, dividiéndolos en líneas.

Devuelve una lista de objetos bytes, siendo cada objeto una de las líneas. Cada línea incluirá el carácter de nueva línea.

write(buf: bytes | bytearray | str) int

Escribe los bytes de buf en el dispositivo serie.

Devuelve el número de bytes escritos.

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

Recibe datos en el bus:

  • data puede ser un entero, que es el número de bytes que recibir, o un búfer mutable, que se llenará con los bytes recibidos.

  • timeout es el tiempo de espera en milisegundos que esperar la recepción.

Valor de retorno: si data es un entero, entonces un nuevo búfer con los bytes recibidos; de lo contrario, se devuelve el número de bytes leídos en data.

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

Envía datos a través del USB VCP:

  • data son los datos que enviar (un entero que enviar, o un objeto búfer).

  • timeout es el tiempo de espera en milisegundos que esperar el envío.

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 que sea llamado cada vez que ocurra un evento especificado por trigger. La función handler debe tomar exactamente un argumento, que será el objeto USB VCP. Pase None para deshabilitar la función de retorno (callback).

Los valores válidos para trigger son:

  • USB_VCP.IRQ_RX: hay nuevos datos disponibles para leer desde el objeto USB VCP.

Constantes

RTS: int

Bandera de control de flujo para init(). Habilitar RTS hace que el dispositivo limite la transmisión del host cuando el búfer de lectura está lleno.

CTS: int

Bandera de control de flujo para init(). Habilitar CTS hace que el dispositivo respete el control de flujo del host durante las escrituras (bloqueando hasta que el host esté listo para recibir). Puede combinarse mediante OR con RTS.

IRQ_RX: int

Disparador de irq(): se activa cuando hay nuevos datos disponibles para leer desde el objeto USB VCP.