pyb — Funktionen rund um das Board

Warnung

Das pyb-Modul ist veraltet. Verwenden Sie für neuen Code das portübergreifende machine-Modul – es bietet dieselbe Funktionalität auf jeder OpenMV Cam unabhängig von der MCU-Familie, während pyb nur auf den STM32-basierten Boards existiert. pyb bleibt aus Gründen der Abwärtskompatibilität mit älteren Skripten erhalten, es werden keine neuen Funktionen hinzugefügt und es kann in einer zukünftigen Version entfernt werden.

Das pyb-Modul enthält STM32-spezifische Funktionen rund um das Board.

Verschiedene Funktionen

pyb.have_cdc() bool

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

Bemerkung

Diese Funktion ist veraltet. Verwenden Sie stattdessen pyb.USB_VCP().isconnected().

pyb.hid(data: Tuple[int, int, int, int]) None

Nimmt ein 4-Tupel (oder eine Liste) entgegen und sendet es an den USB-Host (den PC), um ein HID-Maus-Bewegungsereignis zu signalisieren.

Bemerkung

Diese Funktion ist veraltet. Verwenden Sie stattdessen pyb.USB_HID.send().

pyb.info(dump_alloc_table: bool | None = None) None

Gibt zahlreiche Informationen über das Board aus.

pyb.main(filename: str) None

Legt den Dateinamen des Hauptskripts fest, das ausgeführt werden soll, nachdem boot.py abgeschlossen ist. Wenn diese Funktion nicht aufgerufen wird, wird die Standarddatei main.py ausgeführt.

Es ist nur sinnvoll, diese Funktion innerhalb von boot.py aufzurufen.

pyb.mount(device: Any, mountpoint: str, *, readonly: bool = False, mkfs: bool = False) None

Bemerkung

Diese Funktion ist veraltet. Verwenden Sie stattdessen vfs.mount() / vfs.umount() und ein von vfs.AbstractBlockDev abgeleitetes Blockgerät.

Hängt ein Blockgerät unter mountpoint ein. device muss das alte pyb-Blockgeräteprotokoll implementieren (ebenfalls veraltet – siehe vfs.AbstractBlockDev für die moderne Schnittstelle):

Methode

Zweck

readblocks(self, blocknum, buf)

Kopiert buf an Bytes vom Gerät, beginnend bei Block blocknum. Die Länge von buf ist ein Vielfaches von 512.

writeblocks(self, blocknum, buf) (optional)

Schreibt buf auf das Gerät, beginnend bei Block blocknum. Wenn weggelassen, wird das Gerät schreibgeschützt eingehängt.

count(self)

Gibt die Anzahl der 512-Byte-Blöcke auf dem Gerät zurück.

sync(self) (optional)

Schreibt alle zwischengespeicherten Schreibvorgänge zurück.

mountpoint ist der Pfad im Wurzelverzeichnis des Dateisystems, an dem das Gerät eingehängt wird; er muss mit einem Schrägstrich beginnen. readonly erzwingt ein schreibgeschütztes Einhängen. mkfs erstellt ein neues Dateisystem, falls keines vorhanden ist.

pyb.repl_uart(uart: UART | None = None) UART | None

Ruft das UART-Objekt ab, auf dem die REPL gespiegelt wird, oder legt es fest.

pyb.rng() int

Gibt eine 30-Bit-Hardware-generierte Zufallszahl zurück.

pyb.sync() None

Synchronisiert alle Dateisysteme.

pyb.unique_id() bytes

Gibt eine Zeichenkette aus 12 Bytes (96 Bit) zurück, die die eindeutige ID der MCU ist.

pyb.usb_mode(modestr: str | None = None, port: int = -1, vid: int = 0xf055, pid: int = -1, msc: Tuple = (), hid: Tuple = pyb.hid_mouse, high_speed: bool = False) str | None

Wenn ohne Argumente aufgerufen, wird der aktuelle USB-Modus als Zeichenkette zurückgegeben.

Wenn mit angegebenem modestr aufgerufen, wird versucht, den USB-Modus zu konfigurieren. Die folgenden Werte von modestr werden verstanden:

modestr

Konfiguriert

None

Deaktiviert USB.

'VCP'

Nur VCP (Virtual COM Port).

'MSC'

Nur MSC (USB Mass Storage Class).

'VCP+MSC'

VCP und MSC.

'VCP+HID'

VCP und HID (Human Interface Device).

'VCP+MSC+HID'

VCP, MSC und HID zusammen. Nicht auf jeder OpenMV Cam unterstützt.

Aus Gründen der Abwärtskompatibilität wird 'CDC' als 'VCP' verstanden (und entsprechend für 'CDC+MSC' und 'CDC+HID').

Der Parameter port sollte eine Ganzzahl (0, 1, …) sein und wählt aus, welcher USB-Port verwendet wird, falls das Board mehrere Ports unterstützt. Ein Wert von -1 verwendet den Standard- oder automatisch ausgewählten Port.

Die Parameter vid und pid ermöglichen es Ihnen, die VID (Vendor-ID) und PID (Product-ID) anzugeben. Ein pid-Wert von -1 wählt eine PID basierend auf dem Wert von modestr aus.

Beim Aktivieren des MSC-Modus kann der Parameter msc verwendet werden, um eine Liste von SCSI-LUNs anzugeben, die auf der Massenspeicherschnittstelle bereitgestellt werden sollen. Zum Beispiel msc=(pyb.Flash(), pyb.SDCard()).

Beim Aktivieren des HID-Modus können Sie die HID-Details auch durch Übergeben des Schlüsselwortparameters hid angeben. Er nimmt ein Tupel aus (Subclass, Protocol, maximale Paketlänge, Polling-Intervall, Report-Deskriptor) entgegen. Standardmäßig werden geeignete Werte für eine USB-Maus gesetzt. Es gibt außerdem eine pyb.hid_keyboard-Konstante, die ein geeignetes Tupel für eine USB-Tastatur ist.

Der Parameter high_speed aktiviert, wenn auf True gesetzt, den USB-HS-Modus, sofern er von der Hardware unterstützt wird.

Konstanten

Beide der folgenden Konstanten sind vorgefertigte 5-Tupel in der Form

(subclass, protocol, max_packet_size, polling_interval_ms, report_descriptor)

geeignet zur Übergabe als hid-Argument von usb_mode(), damit die OpenMV Cam dem Host als USB-HID-Gerät erscheint. subclass = 1 bedeutet „Boot-Schnittstelle“ und protocol wählt die Boot-Geräteklasse aus (1 = Tastatur, 2 = Maus). Das fünfte Element ist ein bytes-Objekt, das den HID-Report-Deskriptor enthält, der verwendet wird, wenn der Host das Gerät enumeriert.

pyb.hid_mouse: tuple

Vorgefertigter HID-Deskriptor für eine 3-Tasten-Boot-Maus mit relativer X/Y-Bewegung. Das Tupel ist (1, 2, 4, 8, <mouse report descriptor>): Boot-Subclass, Maus-Protokoll, 4-Byte-Eingabe-Reports (Tastenmaske + X + Y + Rad), alle 8 ms abgefragt. Der eingebaute Report-Deskriptor ist derjenige, der von pyb.USB_HID().send((buttons, dx, dy, wheel)) verwendet wird.

pyb.hid_keyboard: tuple

Vorgefertigter HID-Deskriptor für eine USB-Boot-Tastatur. Das Tupel ist (1, 1, 8, 8, <keyboard report descriptor>): Boot-Subclass, Tastatur-Protokoll, 8-Byte-Eingabe-Reports (Modifier-Byte, ein reserviertes Byte, sechs gleichzeitige Tastencodes), alle 8 ms abgefragt. Der eingebaute Report-Deskriptor entspricht dem standardmäßigen 8-Byte-HID-Boot-Tastatur-Layout, sodass der über USB_HID.send() gesendete Report ein bytes der Form (modifiers, 0, key1, key2, key3, key4, key5, key6) sein sollte.

Klassen