pyb — funkcje związane z płytką

Ostrzeżenie

Moduł pyb jest przestarzały. W nowym kodzie używaj wieloplatformowego modułu machine – zapewnia on tę samą funkcjonalność na każdej OpenMV Cam niezależnie od rodziny MCU, podczas gdy pyb istnieje tylko na płytkach opartych na STM32. pyb jest zachowany dla wstecznej zgodności ze starszymi skryptami, nie będą do niego dodawane nowe funkcje, a w przyszłym wydaniu może zostać usunięty.

Moduł pyb zawiera funkcje specyficzne dla STM32 związane z płytką.

Funkcje różne

pyb.have_cdc() bool

Zwraca True, jeśli USB jest podłączone jako urządzenie szeregowe, w przeciwnym razie False.

Informacja

Ta funkcja jest przestarzała. Zamiast niej użyj pyb.USB_VCP().isconnected().

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

Przyjmuje 4-elementową krotkę (lub listę) i wysyła ją do hosta USB (komputera PC), aby zasygnalizować zdarzenie ruchu myszy HID.

Informacja

Ta funkcja jest przestarzała. Zamiast niej użyj pyb.USB_HID.send().

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

Wypisuje wiele informacji o płytce.

pyb.main(filename: str) None

Ustawia nazwę pliku głównego skryptu uruchamianego po zakończeniu boot.py. Jeśli ta funkcja nie zostanie wywołana, wykonany zostanie domyślny plik main.py.

Wywoływanie tej funkcji ma sens tylko z wnętrza boot.py.

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

Informacja

Ta funkcja jest przestarzała. Zamiast niej użyj vfs.mount() / vfs.umount() oraz urządzenia blokowego pochodzącego od vfs.AbstractBlockDev.

Montuje urządzenie blokowe pod mountpoint. device musi implementować starszy protokół urządzenia blokowego pyb (również przestarzały – nowoczesny interfejs opisuje vfs.AbstractBlockDev):

Metoda

Przeznaczenie

readblocks(self, blocknum, buf)

Kopiuje buf bajtów z urządzenia, zaczynając od bloku blocknum. Długość buf jest wielokrotnością 512.

writeblocks(self, blocknum, buf) (opcjonalna)

Zapisuje buf na urządzeniu, zaczynając od bloku blocknum. W przypadku pominięcia urządzenie jest montowane tylko do odczytu.

count(self)

Zwraca liczbę 512-bajtowych bloków na urządzeniu.

sync(self) (opcjonalna)

Zapisuje wszelkie buforowane dane (flush).

mountpoint to ścieżka w korzeniu systemu plików, pod którą zostanie zamontowane urządzenie; musi zaczynać się od ukośnika. readonly wymusza montowanie tylko do odczytu. mkfs tworzy nowy system plików, jeśli żaden nie jest obecny.

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

Pobiera lub ustawia obiekt UART, na którym powielany jest REPL.

pyb.rng() int

Zwraca 30-bitową liczbę losową generowaną sprzętowo.

pyb.sync() None

Synchronizuje wszystkie systemy plików.

pyb.unique_id() bytes

Zwraca ciąg 12 bajtów (96 bitów), który jest unikalnym identyfikatorem MCU.

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

Wywołana bez argumentów zwraca bieżący tryb USB jako ciąg znaków.

Wywołana z podanym modestr próbuje skonfigurować tryb USB. Rozpoznawane są następujące wartości modestr:

modestr

Konfiguruje

None

Wyłącza USB.

'VCP'

Tylko VCP (Virtual COM Port).

'MSC'

Tylko MSC (USB mass storage class).

'VCP+MSC'

VCP i MSC.

'VCP+HID'

VCP i HID (human interface device).

'VCP+MSC+HID'

VCP, MSC i HID razem. Nieobsługiwane na każdej OpenMV Cam.

Dla wstecznej zgodności 'CDC' jest interpretowane jako 'VCP' (i analogicznie dla 'CDC+MSC' oraz 'CDC+HID').

Parametr port powinien być liczbą całkowitą (0, 1, …) i wybiera, który port USB ma być użyty, jeśli płytka obsługuje wiele portów. Wartość -1 powoduje użycie domyślnego lub automatycznie wybranego portu.

Parametry vid i pid pozwalają określić VID (vendor id) oraz PID (product id). Wartość pid równa -1 wybierze PID na podstawie wartości modestr.

Jeśli włączasz tryb MSC, parametr msc może posłużyć do określenia listy jednostek SCSI LUN udostępnianych na interfejsie pamięci masowej. Na przykład msc=(pyb.Flash(), pyb.SDCard()).

Jeśli włączasz tryb HID, możesz również podać szczegóły HID, przekazując parametr nazwany hid. Przyjmuje on krotkę (subclass, protocol, max packet length, polling interval, report descriptor). Domyślnie ustawia odpowiednie wartości dla myszy USB. Istnieje również stała pyb.hid_keyboard, która jest odpowiednią krotką dla klawiatury USB.

Parametr high_speed, ustawiony na True, włącza tryb USB HS, jeśli jest on obsługiwany przez sprzęt.

Stałe

Obie poniższe stałe to gotowe 5-elementowe krotki w postaci

(subclass, protocol, max_packet_size, polling_interval_ms, report_descriptor)

odpowiednie do przekazania jako argument hid funkcji usb_mode(), aby OpenMV Cam zaprezentowała się hostowi jako urządzenie USB HID. subclass = 1 oznacza „boot interface”, a protocol wybiera klasę urządzenia boot (1 = klawiatura, 2 = mysz). Piąty element to obiekt bytes zawierający deskryptor raportu HID używany, gdy host wylicza urządzenie.

pyb.hid_mouse: tuple

Gotowy deskryptor HID dla 3-przyciskowej myszy boot z względnym ruchem X/Y. Krotka ma postać (1, 2, 4, 8, <mouse report descriptor>): podklasa boot, protokół myszy, 4-bajtowe raporty wejściowe (maska przycisków + X + Y + kółko), odpytywane co 8 ms. Wbudowany deskryptor raportu to ten używany przez pyb.USB_HID().send((buttons, dx, dy, wheel)).

pyb.hid_keyboard: tuple

Gotowy deskryptor HID dla klawiatury boot USB. Krotka ma postać (1, 1, 8, 8, <keyboard report descriptor>): podklasa boot, protokół klawiatury, 8-bajtowe raporty wejściowe (bajt modyfikatorów, jeden bajt zarezerwowany, sześć jednocześnie wciśniętych kodów klawiszy), odpytywane co 8 ms. Wbudowany deskryptor raportu odpowiada standardowemu 8-bajtowemu układowi klawiatury boot HID, więc raport wysyłany przez USB_HID.send() powinien być obiektem bytes w postaci (modifiers, 0, key1, key2, key3, key4, key5, key6).

Klasy