Klasse USB_VCP – virtueller USB-COM-Port

Die Klasse USB_VCP ermöglicht die Erstellung eines stream-ähnlichen Objekts, das den virtuellen USB-COM-Port repräsentiert. Sie kann verwendet werden, um Daten über USB an den verbundenen Host zu lesen und zu schreiben.

Konstruktoren

class pyb.USB_VCP(id: int = 0)

Erstellt ein neues USB_VCP-Objekt. Das Argument id wählt aus, welcher USB-VCP-Port verwendet werden soll, wenn mehr als einer verfügbar ist.

Methoden

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

Konfiguriert den USB-VCP-Port. Wenn das Argument flow nicht -1 ist, legt es die Flusssteuerung fest, eine bitweise OR-Verknüpfung von USB_VCP.RTS und USB_VCP.CTS. RTS steuert das Leseverhalten; CTS steuert das Schreibverhalten.

setinterrupt(chr: int) None

Legt das Zeichen fest, das laufenden Python-Code unterbricht. Dies ist standardmäßig auf 3 (CTRL-C) gesetzt, und wenn ein CTRL-C-Zeichen über den USB-VCP-Port empfangen wird, wird eine KeyboardInterrupt-Ausnahme ausgelöst.

Auf -1 setzen, um diese Interrupt-Funktion zu deaktivieren. Dies ist nützlich, wenn Sie rohe Bytes über den USB-VCP-Port senden möchten.

isconnected() bool

Gibt True zurück, wenn USB als serielles Gerät verbunden ist, andernfalls False.

debug_mode_enabled() bool

Gibt True zurück, wenn OpenMV IDE mit der OpenMV Cam verbunden ist.

any() bool

Gibt True zurück, wenn Zeichen warten, andernfalls False.

close() None

Diese Methode tut nichts. Sie existiert, damit das USB_VCP-Objekt sich wie eine Datei verhalten kann.

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

Liest höchstens nbytes vom seriellen Gerät und gibt sie als Bytes-Objekt zurück. Wenn nbytes nicht angegeben ist, liest die Methode alle verfügbaren Bytes vom seriellen Gerät. Der USB_VCP-stream arbeitet implizit im nicht-blockierenden Modus, sodass diese Methode sofort mit dem Wert None zurückkehrt, wenn keine ausstehenden Daten verfügbar sind.

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

Liest Bytes vom seriellen Gerät und speichert sie in buf, das ein puffer-ähnliches Objekt sein sollte. Es werden höchstens len(buf) Bytes gelesen. Wenn maxlen angegeben ist, werden höchstens min(maxlen, len(buf)) Bytes gelesen.

Gibt die Anzahl der gelesenen und in buf gespeicherten Bytes zurück oder None, wenn keine ausstehenden Daten verfügbar sind.

readline() bytes | None

Liest eine ganze Zeile vom seriellen Gerät.

Gibt ein Bytes-Objekt zurück, das die Daten einschließlich des abschließenden Zeilenumbruchzeichens enthält, oder None, wenn keine ausstehenden Daten verfügbar sind.

readlines() List[bytes]

Liest so viele Daten wie möglich vom seriellen Gerät und teilt sie in Zeilen auf.

Gibt eine Liste von Bytes-Objekten zurück, wobei jedes Objekt eine der Zeilen ist. Jede Zeile enthält das Zeilenumbruchzeichen.

write(buf: bytes | bytearray | str) int

Schreibt die Bytes aus buf an das serielle Gerät.

Gibt die Anzahl der geschriebenen Bytes zurück.

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

Empfängt Daten auf dem Bus:

  • data kann eine Ganzzahl sein, die die Anzahl der zu empfangenden Bytes angibt, oder ein veränderbarer Puffer, der mit empfangenen Bytes gefüllt wird.

  • timeout ist die Zeitüberschreitung in Millisekunden, die auf den Empfang gewartet wird.

Rückgabewert: Wenn data eine Ganzzahl ist, wird ein neuer Puffer mit den empfangenen Bytes zurückgegeben, andernfalls wird die Anzahl der in data gelesenen Bytes zurückgegeben.

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

Sendet Daten über den USB-VCP:

  • data sind die zu sendenden Daten (eine zu sendende Ganzzahl oder ein Pufferobjekt).

  • timeout ist die Zeitüberschreitung in Millisekunden, die auf das Senden gewartet wird.

Rückgabewert: Anzahl der gesendeten Bytes.

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

Registriert handler, der aufgerufen wird, wann immer ein durch trigger angegebenes Ereignis auftritt. Die handler-Funktion muss genau ein Argument annehmen, welches das USB_VCP-Objekt sein wird. Übergeben Sie None, um den Callback zu deaktivieren.

Gültige Werte für trigger sind:

  • USB_VCP.IRQ_RX: Neue Daten sind zum Lesen aus dem USB_VCP-Objekt verfügbar.

Konstanten

RTS: int

Flusssteuerungs-Flag für init(). Das Aktivieren von RTS bewirkt, dass das Gerät die Übertragung des Hosts drosselt, wenn der Lesepuffer voll ist.

CTS: int

Flusssteuerungs-Flag für init(). Das Aktivieren von CTS bewirkt, dass das Gerät die Flusssteuerung des Hosts während des Schreibens berücksichtigt (blockiert, bis der Host empfangsbereit ist). Kann mit RTS per OR verknüpft werden.

IRQ_RX: int

irq()-Trigger: Wird ausgelöst, wenn neue Daten zum Lesen aus dem USB_VCP-Objekt verfügbar sind.