class USB_VCP – porta di comunicazione virtuale USB

La classe USB_VCP permette la creazione di un oggetto di tipo stream che rappresenta la porta di comunicazione virtuale USB. Può essere usata per leggere e scrivere dati tramite USB verso l’host connesso.

Costruttori

class pyb.USB_VCP(id: int = 0)

Crea un nuovo oggetto USB_VCP. L’argomento id seleziona quale porta USB VCP usare quando ne è esposta più di una.

Metodi

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

Configura la porta USB VCP. Se l’argomento flow non è -1 imposta il controllo di flusso, un OR bit a bit di USB_VCP.RTS e USB_VCP.CTS. RTS regola il comportamento in lettura; CTS regola il comportamento in scrittura.

setinterrupt(chr: int) None

Imposta il carattere che interrompe l’esecuzione del codice Python. È impostato a 3 (CTRL-C) per impostazione predefinita, e quando un carattere CTRL-C viene ricevuto sulla porta USB VCP, viene sollevata un’eccezione KeyboardInterrupt.

Imposta a -1 per disabilitare questa funzionalità di interrupt. Questo è utile quando vuoi inviare byte grezzi sulla porta USB VCP.

isconnected() bool

Restituisce True se l’USB è connesso come dispositivo seriale, altrimenti False.

debug_mode_enabled() bool

Restituisce True se OpenMV IDE è connesso all’OpenMV Cam.

any() bool

Restituisce True se ci sono caratteri in attesa, altrimenti False.

close() None

Questo metodo non fa nulla. Esiste affinché l’oggetto USB_VCP possa comportarsi come un file.

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

Legge al massimo nbytes dal dispositivo seriale e li restituisce come oggetto bytes. Se nbytes non è specificato, il metodo legge tutti i byte disponibili dal dispositivo seriale. Lo stream USB_VCP funziona implicitamente in modalità non bloccante, quindi se non ci sono dati in attesa disponibili, questo metodo restituirà immediatamente con valore None.

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

Legge byte dal dispositivo seriale e li memorizza in buf, che dovrebbe essere un oggetto di tipo buffer. Vengono letti al massimo len(buf) byte. Se maxlen è fornito, vengono letti al massimo min(maxlen, len(buf)) byte.

Restituisce il numero di byte letti e memorizzati in buf oppure None se non ci sono dati in attesa disponibili.

readline() bytes | None

Legge un’intera riga dal dispositivo seriale.

Restituisce un oggetto bytes contenente i dati, incluso il carattere di nuova linea finale, oppure None se non ci sono dati in attesa disponibili.

readlines() List[bytes]

Legge la maggior quantità di dati possibile dal dispositivo seriale, suddividendoli in righe.

Restituisce una lista di oggetti bytes, ognuno dei quali è una delle righe. Ogni riga includerà il carattere di nuova linea.

write(buf: bytes | bytearray | str) int

Scrive i byte da buf al dispositivo seriale.

Restituisce il numero di byte scritti.

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

Riceve dati sul bus:

  • data può essere un intero, che è il numero di byte da ricevere, oppure un buffer mutabile, che verrà riempito con i byte ricevuti.

  • timeout è il timeout in millisecondi per attendere la ricezione.

Valore restituito: se data è un intero allora un nuovo buffer dei byte ricevuti, altrimenti viene restituito il numero di byte letti in data.

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

Invia dati tramite l’USB VCP:

  • data sono i dati da inviare (un intero da inviare, oppure un oggetto buffer).

  • timeout è il timeout in millisecondi per attendere l’invio.

Valore restituito: numero di byte inviati.

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

Registra handler affinché venga chiamato ogni volta che si verifica un evento specificato da trigger. La funzione handler deve accettare esattamente un argomento, che sarà l’oggetto USB VCP. Passa None per disabilitare la callback.

I valori validi per trigger sono:

  • USB_VCP.IRQ_RX: nuovi dati sono disponibili per la lettura dall’oggetto USB VCP.

Costanti

RTS: int

Flag di controllo di flusso per init(). Abilitare RTS fa sì che il dispositivo limiti la trasmissione dell’host quando il buffer di lettura è pieno.

CTS: int

Flag di controllo di flusso per init(). Abilitare CTS fa sì che il dispositivo rispetti il controllo di flusso dell’host durante le scritture (bloccando finché l’host non è pronto a ricevere). Può essere combinato in OR con RTS.

IRQ_RX: int

Trigger di irq(): si attiva quando nuovi dati sono disponibili per la lettura dall’oggetto USB VCP.