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.