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.RTSiUSB_VCP.CTS.RTSsteruje zachowaniem odczytu;CTSsteruje 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 razieFalse.
- 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
nbytesz urządzenia szeregowego i zwraca je jako obiekt bytes. Jeślinbytesnie 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żejlen(buf)bajtów. Jeśli podanomaxlen, odczytywanych jest co najwyżejmin(maxlen, len(buf))bajtów.Zwraca liczbę bajtów odczytanych i zapisanych do
buflubNone, 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
bufdo urządzenia szeregowego.Zwraca liczbę zapisanych bajtów.
- recv(data: int | bytearray, *, timeout: int = 5000) bytes | int¶
Odbiera dane z magistrali:
datamoże być liczbą całkowitą, która jest liczbą bajtów do odebrania, lub modyfikowalnym buforem, który zostanie wypełniony odebranymi bajtami.timeoutto limit czasu w milisekundach oczekiwania na odbiór.
Wartość zwracana: jeśli
datajest liczbą całkowitą, to nowy bufor z odebranymi bajtami; w przeciwnym razie zwracana jest liczba bajtów odczytanych dodata.
- send(data: int | bytes | bytearray, *, timeout: int = 5000) int¶
Wysyła dane przez USB VCP:
datato dane do wysłania (liczba całkowita do wysłania lub obiekt bufora).timeoutto 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łączenieRTSpowoduje, że urządzenie ogranicza transmisję hosta, gdy bufor odczytu jest pełny.