klasa USB_VCP – wirtualny port komunikacyjny USB

Klasa USB_VCP umożliwia tworzenie obiektu podobnego do stream, reprezentującego wirtualny port komunikacyjny USB. Można jej użyć do odczytu i zapisu danych przez USB do podłączonego hosta.

Konstruktory

class pyb.USB_VCP(id: int = 0)

Tworzy nowy obiekt USB_VCP. Argument id wybiera, który port USB VCP ma być użyty, gdy udostępniono więcej niż jeden.

Metody

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

Konfiguruje port USB VCP. Jeśli argument flow jest różny od -1, ustawia kontrolę przepływu jako bitową sumę (OR) USB_VCP.RTS i USB_VCP.CTS. RTS steruje zachowaniem odczytu; CTS steruje zachowaniem zapisu.

setinterrupt(chr: int) None

Ustawia znak, który przerywa wykonywanie kodu Python. Domyślnie ustawiony jest na 3 (CTRL-C), a gdy znak CTRL-C zostanie odebrany przez port USB VCP, zgłaszany jest wyjątek KeyboardInterrupt.

Ustaw na -1, aby wyłączyć tę funkcję przerywania. Jest to przydatne, gdy chcesz wysyłać surowe bajty przez port USB VCP.

isconnected() bool

Zwraca True, jeśli USB jest podłączone jako urządzenie szeregowe, w przeciwnym razie False.

debug_mode_enabled() bool

Zwraca True, jeśli OpenMV IDE jest podłączone do OpenMV Cam.

any() bool

Zwraca True, jeśli oczekują jakiekolwiek znaki, w przeciwnym razie False.

close() None

Ta metoda nic nie robi. Istnieje po to, aby obiekt USB_VCP mógł zachowywać się jak plik.

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

Odczytuje co najwyżej nbytes z urządzenia szeregowego i zwraca je jako obiekt bytes. Jeśli nbytes nie zostanie podane, metoda odczytuje wszystkie dostępne bajty z urządzenia szeregowego. Strumień stream USB_VCP domyślnie działa w trybie nieblokującym, więc jeśli brak oczekujących danych, metoda zwróci natychmiast wartość None.

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

Odczytuje bajty z urządzenia szeregowego i zapisuje je do buf, który powinien być obiektem podobnym do bufora. Odczytywanych jest co najwyżej len(buf) bajtów. Jeśli podano maxlen, odczytywanych jest co najwyżej min(maxlen, len(buf)) bajtów.

Zwraca liczbę bajtów odczytanych i zapisanych do buf lub None, jeśli brak oczekujących danych.

readline() bytes | None

Odczytuje cały wiersz z urządzenia szeregowego.

Zwraca obiekt bytes zawierający dane, w tym końcowy znak nowej linii, lub None, jeśli brak oczekujących danych.

readlines() List[bytes]

Odczytuje tyle danych, ile to możliwe, z urządzenia szeregowego, dzieląc je na wiersze.

Zwraca listę obiektów bytes, gdzie każdy obiekt jest jednym z wierszy. Każdy wiersz będzie zawierał znak nowej linii.

write(buf: bytes | bytearray | str) int

Zapisuje bajty z buf do urządzenia szeregowego.

Zwraca liczbę zapisanych bajtów.

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

Odbiera dane z magistrali:

  • data może być liczbą całkowitą, która jest liczbą bajtów do odebrania, lub modyfikowalnym buforem, który zostanie wypełniony odebranymi bajtami.

  • timeout to limit czasu w milisekundach oczekiwania na odbiór.

Wartość zwracana: jeśli data jest liczbą całkowitą, to nowy bufor z odebranymi bajtami; w przeciwnym razie zwracana jest liczba bajtów odczytanych do data.

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

Wysyła dane przez USB VCP:

  • data to dane do wysłania (liczba całkowita do wysłania lub obiekt bufora).

  • timeout to limit czasu w milisekundach oczekiwania na wysłanie.

Wartość zwracana: liczba wysłanych bajtów.

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

Rejestruje handler, który ma być wywoływany za każdym razem, gdy wystąpi zdarzenie określone przez trigger. Funkcja handler musi przyjmować dokładnie jeden argument, którym będzie obiekt USB VCP. Przekaż None, aby wyłączyć wywołanie zwrotne.

Prawidłowe wartości dla trigger to:

  • USB_VCP.IRQ_RX: nowe dane są dostępne do odczytu z obiektu USB VCP.

Stałe

RTS: int

Flaga kontroli przepływu dla init(). Włączenie RTS powoduje, że urządzenie ogranicza transmisję hosta, gdy bufor odczytu jest pełny.

CTS: int

Flaga kontroli przepływu dla init(). Włączenie CTS powoduje, że urządzenie respektuje kontrolę przepływu hosta podczas zapisu (blokując do momentu, aż host będzie gotowy do odbioru). Można ją połączyć operatorem OR z RTS.

IRQ_RX: int

Wyzwalacz irq(): uruchamia się, gdy nowe dane są dostępne do odczytu z obiektu USB VCP.