13.3.1.1. Interfejs wiersza poleceń openmv¶
Instalacja pakietu dodaje program wykonywalny openmv, który otwiera podgląd pygame połączony z kamerą przez USB. Bez argumentów poza portem szeregowym uruchamia on niewielki wbudowany skrypt testowy, przesyła z powrotem powstały bufor ramki i wyświetla go przeskalowany oraz opatrzony adnotacją z bieżącą liczbą klatek na sekundę:
openmv --port /dev/ttyACM0
Ścieżka portu zależy od platformy hosta. W systemie Linux jest to /dev/ttyACMx dla USB CDC oraz /dev/ttyUSBx dla mostka USB-UART. W systemie macOS /dev/tty.usbmodem... lub /dev/cu.usbmodem.... W systemie Windows COMx.
Podgląd to najszybszy sposób na potwierdzenie, że pakiet jest zainstalowany, kamera jest osiągalna, a protokół działa. Jest to także przydatne środowisko demonstracyjne podczas tworzenia skryptów – wystarczy zastąpić wbudowany skrypt testowy dowolnym plikiem MicroPython za pomocą opcji --script i obserwować wynik bez opuszczania terminala.
Klawisz Esc, kombinacja Ctrl+C w terminalu lub zamknięcie okna podglądu kończą działanie w czysty sposób.
13.3.1.1.1. Uruchamianie własnego skryptu¶
Opcja --script wskazuje interfejsowi wiersza poleceń plik źródłowy MicroPython na dysku. Plik jest przesyłany do kamery, wykonywany zamiast wbudowanego skryptu testowego, a wszelkie generowane przez niego ramki są przesyłane z powrotem do podglądu:
openmv --port /dev/ttyACM0 --script my_script.py
Wszystko, co skrypt wypisuje do stdout, jest na bieżąco odzwierciedlane w terminalu hosta. Przekaż opcję --quiet, aby to wyłączyć, lub --debug w celu szczegółowego logowania protokołu.
13.3.1.1.2. Podgląd własnego kanału¶
Opcja --channel NAME odpytuje własny kanał danych zarejestrowany przez działający po stronie kamery skrypt i wypisuje pierwszych dziesięć bajtów każdej aktualizacji do terminala:
openmv --port /dev/ttyACM0 --channel ticks
Wbudowany skrypt testowy uruchamiany, gdy nie podano opcji --script, rejestruje kanał ticks zwracający czas pracy kamery w milisekundach, więc --channel ticks demonstruje dwukierunkową powierzchnię kanałów, którą szczegółowo omawia Własne kanały – bez pisania jakiegokolwiek kodu po stronie hosta czy kamery.
13.3.1.1.3. Tryb testu wydajności¶
Opcja --bench zastępuje standardowy skrypt testowy testem przepustowości kompresji JPEG:
openmv --port /dev/ttyACM0 --bench
Kamera przechwytuje jedną ramkę RGB565 QVGA, kompresuje ją do formatu JPEG, a następnie w ciasnej pętli przesyła ten sam skompresowany bufor. Podgląd raportuje surową szybkość przesyłu danych USB, a nie dekodowaną ramkę na żywo, więc liczba na ekranie to górna granica, jaką łącze jest w stanie utrzymać wobec danego hosta. Przydatne do porównywania kamer lub hostów bez zmienności wynikającej ze zmiany tego, co jest faktycznie przechwytywane.
13.3.1.1.4. Profilowanie¶
Interfejs wiersza poleceń może nakładać na przesyłane ramki dane profilera na żywo. Nakładka jest przydatna tylko wtedy, gdy kamera korzysta z kompilacji oprogramowania układowego z opcją PROFILE_ENABLE=1 oraz zarejestrowanym kanałem profile; w fabrycznym oprogramowaniu układowym elementy sterujące profilowaniem nie mają żadnego efektu.
Opcja
--firmware PATH– ładuje plik ELF oprogramowania układowego, które kamera uruchamia, aby nakładka mogła rozwiązać adresy funkcji w rekordach profilu na czytelne dla człowieka nazwy. Bez niej nakładka pokazuje surowe adresy.
Trzy skróty klawiaturowe w podglądzie sterują profilerem:
Klawisz |
Działanie |
|---|---|
|
Przełącza nakładkę profilera: wyłączona, wydajność, zdarzenia. |
|
Przełącza tryb profilera między inkluzywnym a ekskluzywnym. Pomiar inkluzywny zalicza czas funkcji wywoływanej do funkcji wywołującej; pomiar ekskluzywny tego nie robi. |
|
Resetuje liczniki profilera. |
13.3.1.1.5. Flagi strojenia protokołu¶
Poniższe flagi odzwierciedlają parametry konstruktora klasy openmv.Camera. Wartości domyślne działają na każdej dostarczanej kamerze; nadpisuj je tylko podczas debugowania własnej kompilacji oprogramowania układowego lub symulowania niekorzystnych warunków łącza.
Opcja
--baudrate N– domyślnie921600(magiczna wartość przełączająca USB na protokół OpenMV). Nadpisuj tylko na łączach UART.Opcja
--timeout SEC– limit czasu na operację w sekundach (domyślnie1.0).Opcja
--max-retry N– liczba ponownych prób, zanim łącze zostanie uznane za zerwane (domyślnie3).Opcja
--max-payload N– maksymalny rozmiar ładunku w bajtach (domyślnie4096). Kamera negocjuje niższą wartość, jeśli nie jest w stanie obsłużyć takiej ilości.Opcja
--crc BOOL– włącza walidację CRC dla każdego pakietu (domyślnietrue).Opcja
--seq BOOL– włącza walidację numerów sekwencyjnych (domyślnietrue).Opcja
--ack BOOL– włącza potwierdzanie każdego pakietu (domyślnietrue).Opcja
--events BOOL– włącza powiadomienia o zdarzeniach z kamery (domyślnietrue).Opcja
--drop-rate FLOAT– współczynnik symulacji odrzucania pakietów w zakresie[0.0, 1.0](domyślnie0.0). Tylko do testów.
Jedno pokrętło strojenia specyficzne dla interfejsu wiersza poleceń:
Opcja
--poll MS– częstotliwość odpytywania głównej pętli podglądu, w milisekundach (domyślnie4).
13.3.1.1.6. Różne flagi¶
Dwie flagi dostosowują sposób prezentacji strumienia przez podgląd bez zmiany zachowania po stronie kamery:
Opcja
--scale N– współczynnik powiększenia wyświetlania (domyślnie4). Przydatna, gdy ramki QVGA są zbyt małe, aby je odczytać na wyświetlaczu 4K.Opcja
--raw– żąda, aby kamera wysyłała bufory pikseli nieskompresowane zamiast skompresowanych do formatu JPEG. Przydatna na kamerach bez sprzętowej obsługi JPEG; Strumieniowanie ramek omawia kompromisy.
13.3.1.1.7. Co robi podgląd¶
Interfejs wiersza poleceń sam jest programem openmv.Camera. Łączy się, wywołuje stop(), aby wyczyścić wszelkie działające skrypty, przesyła skrypt za pomocą exec(), włącza strumieniowanie za pomocą streaming(), a następnie w pętli wywołuje read_frame() (aby zaktualizować wyświetlacz), read_stdout() (aby odzwierciedlić wydruki skryptu) oraz read_status() (aby śledzić aktywność każdego innego zarejestrowanego kanału). Kod źródłowy znajduje się pod adresem cli.py i stanowi działający materiał referencyjny dla aplikacji sterującej kamerą od początku do końca.