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.