třída USB_VCP – USB virtuální komunikační port

Třída USB_VCP umožňuje vytvoření objektu podobného stream, který představuje USB virtuální komunikační port. Lze jej použít ke čtení a zápisu dat přes USB do připojeného hostitele.

Konstruktory

class pyb.USB_VCP(id: int = 0)

Vytvoří nový objekt USB_VCP. Argument id vybírá, který USB VCP port se má použít, když je vyveden více než jeden.

Metody

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

Nakonfiguruje USB VCP port. Pokud argument flow není -1, nastaví řízení toku, bitový OR USB_VCP.RTS a USB_VCP.CTS. RTS řídí chování čtení; CTS řídí chování zápisu.

setinterrupt(chr: int) None

Nastaví znak, který přeruší běžící Python kód. Ten je standardně nastaven na 3 (CTRL-C), a když je přes USB VCP port přijat znak CTRL-C, vyvolá se výjimka KeyboardInterrupt.

Nastavte na -1 pro vypnutí této funkce přerušení. To je užitečné, když chcete odesílat surové bajty přes USB VCP port.

isconnected() bool

Vrátí True, pokud je USB připojeno jako sériové zařízení, jinak False.

debug_mode_enabled() bool

Vrátí True, pokud je OpenMV IDE připojeno ke kameře OpenMV Cam.

any() bool

Vrátí True, pokud čekají nějaké znaky, jinak False.

close() None

Tato metoda nedělá nic. Existuje proto, aby se objekt USB_VCP mohl chovat jako soubor.

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

Přečte nejvýše nbytes ze sériového zařízení a vrátí je jako objekt bytes. Pokud nbytes není zadáno, metoda přečte ze sériového zařízení všechny dostupné bajty. USB_VCP stream implicitně pracuje v neblokujícím režimu, takže pokud nejsou k dispozici žádná čekající data, tato metoda se okamžitě vrátí s hodnotou None.

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

Přečte bajty ze sériového zařízení a uloží je do buf, což by měl být objekt podobný bufferu. Přečte se nejvýše len(buf) bajtů. Pokud je zadáno maxlen, pak se přečte nejvýše min(maxlen, len(buf)) bajtů.

Vrátí počet bajtů přečtených a uložených do buf nebo None, pokud nejsou k dispozici žádná čekající data.

readline() bytes | None

Přečte celý řádek ze sériového zařízení.

Vrátí objekt bytes obsahující data včetně koncového znaku nového řádku nebo None, pokud nejsou k dispozici žádná čekající data.

readlines() List[bytes]

Přečte co nejvíce dat ze sériového zařízení a rozdělí je na řádky.

Vrátí seznam objektů bytes, kde každý objekt je jedním z řádků. Každý řádek bude zahrnovat znak nového řádku.

write(buf: bytes | bytearray | str) int

Zapíše bajty z buf do sériového zařízení.

Vrátí počet zapsaných bajtů.

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

Přijme data ze sběrnice:

  • data může být celé číslo, což je počet bajtů k přijetí, nebo měnitelný buffer, který se naplní přijatými bajty.

  • timeout je časový limit v milisekundách pro čekání na příjem.

Návratová hodnota: pokud je data celé číslo, pak nový buffer s přijatými bajty, jinak se vrátí počet bajtů přečtených do data.

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

Odešle data přes USB VCP:

  • data jsou data k odeslání (celé číslo k odeslání nebo objekt bufferu).

  • timeout je časový limit v milisekundách pro čekání na odeslání.

Návratová hodnota: počet odeslaných bajtů.

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

Zaregistruje handler, který se zavolá pokaždé, když nastane událost určená pomocí trigger. Funkce handler musí přijímat přesně jeden argument, kterým bude objekt USB VCP. Předáním None callback vypnete.

Platné hodnoty pro trigger jsou:

  • USB_VCP.IRQ_RX: jsou k dispozici nová data ke čtení z objektu USB VCP.

Konstanty

RTS: int

Příznak řízení toku pro init(). Zapnutí RTS způsobí, že zařízení omezí vysílání hostitele, když je čtecí buffer plný.

CTS: int

Příznak řízení toku pro init(). Zapnutí CTS způsobí, že zařízení během zápisu respektuje řízení toku hostitele (blokuje, dokud není hostitel připraven přijímat). Lze ho zkombinovat operací OR s RTS.

IRQ_RX: int

Spouštěč irq(): aktivuje se, když jsou k dispozici nová data ke čtení z objektu USB VCP.