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.