13.3.1.1. openmv-CLI:t

När paketet installeras läggs en körbar fil openmv till som öppnar en pygame-visare ansluten till en kamera via USB. Utan argument efter serieporten kör den ett litet inbyggt testskript, strömmar den resulterande bildbufferten tillbaka och visar den skalad och försedd med information om aktuell bildhastighet:

openmv --port /dev/ttyACM0

Sökvägen till porten beror på värdplattformen. På Linux är det /dev/ttyACMx för USB CDC och /dev/ttyUSBx för en USB-till-UART-brygga. På macOS är det /dev/tty.usbmodem... eller /dev/cu.usbmodem.... På Windows är det COMx.

Visaren är det snabbaste sättet att bekräfta att paketet är installerat, att kameran är nåbar och att protokollet fungerar. Den är också ett användbart demoverktyg under skriptutveckling – byt ut det inbyggda testskriptet mot vilken MicroPython-fil som helst med --script och se resultatet utan att lämna terminalen.

Esc, Ctrl+C i terminalen eller att stänga visarfönstret avslutar allt på ett rent sätt.

13.3.1.1.1. Köra ett eget skript

--script pekar CLI:t mot en MicroPython-källfil på disk. Filen laddas upp till kameran, körs i stället för det inbyggda testskriptet, och alla bildrutor den producerar strömmas tillbaka till visaren:

openmv --port /dev/ttyACM0 --script my_script.py

Allt som skriptet skriver till stdout speglas till värdterminalen i realtid. Skicka --quiet för att undertrycka det, eller --debug för utförlig protokolloggning.

13.3.1.1.2. Förhandsgranska en egen kanal

--channel NAME pollar en egen datakanal som registrerats av det körande skriptet på kamerasidan och skriver ut de första tio byten av varje uppdatering till terminalen:

openmv --port /dev/ttyACM0 --channel ticks

Det inbyggda testskript som körs när inget --script anges registrerar en ticks-kanal som returnerar kamerans drifttid i millisekunder, så --channel ticks demonstrerar den dubbelriktade kanalytan som Egna kanaler beskriver i detalj – utan att du själv skriver någon kod på vare sig värden eller kameran.

13.3.1.1.3. Benchmark-läge

--bench byter ut standardtestskriptet mot ett genomströmningstest för JPEG-komprimering:

openmv --port /dev/ttyACM0 --bench

Kameran fångar en RGB565 QVGA-bildruta, komprimerar den till JPEG och tömmer sedan samma komprimerade buffert i en tät slinga. Visaren rapporterar den råa USB-datahastigheten i stället för en live-avkodad bildruta, så siffran på skärmen är den övre gräns som länken kan upprätthålla till den värden. Användbart för att jämföra kameror eller värdar utan variationen som uppstår av att ändra vad som faktiskt fångas.

13.3.1.1.4. Profilering

CLI:t kan lägga live-profileringsdata som ett överlägg på de strömmade bildrutorna. Överlägget är bara användbart när kameran kör en fast programvara byggd med PROFILE_ENABLE=1 och med profile-kanalen registrerad; på standardfirmware har profileringskontrollerna ingen effekt.

  • --firmware PATH – laddar den firmware-ELF som kameran kör så att överlägget kan omvandla funktionsadresserna i profileringsposterna till läsbara namn. Utan den visar överlägget råa adresser.

Tre tangentbordsgenvägar i visaren styr profileraren:

Tangent

Åtgärd

P

Bläddra mellan profileringsöverläggen: av, prestanda, händelser.

M

Växla profileringsläget mellan inkluderande och exkluderande. Inkluderande tidtagning bokför anropad funktions tid på anroparen; exkluderande tidtagning gör det inte.

R

Nollställ profilerarens räknare.

13.3.1.1.5. Flaggor för protokolljustering

Flaggorna nedan speglar konstruktorparametrarna i openmv.Camera. Standardvärdena fungerar på alla levererade kameror; åsidosätt dem endast vid felsökning av en egen firmware-build eller vid simulering av ogynnsamma länkförhållanden.

  • --baudrate N – standardvärdet är 921600 (det magiska värde som växlar USB till OpenMV-protokollet). Åsidosätt endast på UART-länkar.

  • --timeout SEC – timeout per operation i sekunder (standard 1.0).

  • --max-retry N – antal återförsök innan länken förklaras bruten (standard 3).

  • --max-payload N – maximal nyttolaststorlek i byte (standard 4096). Kameran förhandlar ned värdet om den inte klarar så mycket.

  • --crc BOOL – aktivera CRC-validering på varje paket (standard true).

  • --seq BOOL – aktivera validering av sekvensnummer (standard true).

  • --ack BOOL – aktivera bekräftelse per paket (standard true).

  • --events BOOL – aktivera händelsenotifieringar från kameran (standard true).

  • --drop-rate FLOAT – frekvens för simulering av paketbortfall i [0.0, 1.0] (standard 0.0). Endast för testning.

En CLI-specifik justeringsratt:

  • --poll MS – pollningsfrekvens för visarens huvudslinga, i millisekunder (standard 4).

13.3.1.1.6. Diverse flaggor

Två flaggor justerar hur visaren presenterar strömmen utan att ändra beteendet på kamerasidan:

  • --scale N – zoomfaktor för visningen (standard 4). Användbart när QVGA-bildrutor är för små för att läsas på en 4K-skärm.

  • --raw – begär att kameran skickar pixelbuffertar okomprimerade i stället för JPEG-komprimerade. Användbart på kameror utan hårdvarustöd för JPEG; Strömma bildrutor beskriver avvägningarna.

13.3.1.1.7. Vad visaren gör

CLI:t är i sig ett openmv.Camera-program. Det ansluter, anropar stop() för att rensa eventuellt körande skript, laddar upp skriptet med exec(), aktiverar strömning med streaming() och kör sedan en slinga som anropar read_frame() (för att uppdatera visningen), read_stdout() (för att spegla skriptets utskrifter) och read_status() (för att bevaka aktivitet på alla andra registrerade kanaler). Källkoden finns i cli.py och är en fungerande referens för en applikation som driver en kamera från början till slut.