13.3.1.1. De openmv CLI

Het installeren van het pakket voegt een openmv uitvoerbaar bestand toe dat een pygame-viewer opent die via USB met een cam is verbonden. Zonder argumenten na de seriële poort voert het een klein ingebouwd testscript uit, streamt het de resulterende framebuffer terug en toont het deze geschaald en geannoteerd met de huidige framesnelheid:

openmv --port /dev/ttyACM0

Het poortpad hangt af van het hostplatform. Op Linux is dat /dev/ttyACMx voor USB CDC en /dev/ttyUSBx voor een USB-naar-UART-brug. Op macOS is dat /dev/tty.usbmodem... of /dev/cu.usbmodem.... Op Windows is dat COMx.

De viewer is de snelste manier om te bevestigen dat het pakket geïnstalleerd is, de cam bereikbaar is en het protocol werkt. Het is ook een handig demo-hulpmiddel tijdens scriptontwikkeling – vervang het ingebouwde testscript door een willekeurig MicroPython-bestand met --script en bekijk het resultaat zonder de terminal te verlaten.

Esc, Ctrl+C in de terminal, of het sluiten van het viewervenster sluiten allemaal netjes af.

13.3.1.1.1. Een aangepast script uitvoeren

--script wijst de CLI naar een MicroPython-bronbestand op schijf. Het bestand wordt naar de cam geüpload, uitgevoerd in plaats van het ingebouwde testscript, en alle frames die het produceert worden teruggestreamd naar de viewer:

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

Alles wat het script naar stdout schrijft, wordt in realtime naar de hostterminal gespiegeld. Geef --quiet op om dat te onderdrukken, of --debug voor uitgebreide protocollogging.

13.3.1.1.2. Een aangepast kanaal bekijken

--channel NAME peilt een aangepast datakanaal dat door het draaiende cam-zijdige script is geregistreerd en drukt de eerste tien bytes van elke update af naar de terminal:

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

Het ingebouwde testscript dat draait wanneer er geen --script is opgegeven, registreert een ticks kanaal dat de uptime van de cam in milliseconden teruggeeft, zodat --channel ticks het bidirectionele kanaaloppervlak demonstreert dat Aangepaste kanalen in detail behandelt – zonder dat je zelf code op de host of cam hoeft te schrijven.

13.3.1.1.3. Benchmarkmodus

--bench vervangt het standaard testscript door een doorvoerbenchmark voor JPEG-compressie:

openmv --port /dev/ttyACM0 --bench

De cam legt één RGB565 QVGA-frame vast, comprimeert het naar JPEG en flusht vervolgens dezelfde gecomprimeerde buffer in een strakke lus. De viewer rapporteert de ruwe USB-datasnelheid in plaats van een live gedecodeerd frame, dus het getal op het scherm is de bovengrens die de verbinding naar die host kan volhouden. Handig om cams of hosts te vergelijken zonder de variabiliteit van het veranderen van wat er daadwerkelijk wordt vastgelegd.

13.3.1.1.4. Profilering

De CLI kan live profilergegevens over de gestreamde frames leggen. De overlay is alleen nuttig wanneer de cam een PROFILE_ENABLE=1 firmware-build draait met het profile kanaal geregistreerd; op standaardfirmware hebben de profileringsbedieningen geen effect.

  • --firmware PATH – laadt de firmware-ELF die de cam draait, zodat de overlay functieadressen in de profielrecords kan herleiden tot leesbare namen. Zonder dit toont de overlay ruwe adressen.

Drie sneltoetsen in de viewer bedienen de profiler:

Toets

Actie

P

Wissel de profiler-overlay: uit, prestaties, gebeurtenissen.

M

Schakel de profilermodus tussen inclusief en exclusief. Inclusieve timing rekent de tijd van de aangeroepene toe aan de aanroeper; exclusieve timing doet dat niet.

R

Reset de profilertellers.

13.3.1.1.5. Vlaggen voor protocolafstemming

De onderstaande vlaggen weerspiegelen de constructorparameters van openmv.Camera. De standaardwaarden werken op elke geleverde cam; overschrijf ze alleen bij het debuggen van een aangepaste firmware-build of het simuleren van ongunstige verbindingsomstandigheden.

  • --baudrate N – standaard 921600 (de magische waarde die USB naar het OpenMV-protocol omschakelt). Overschrijf alleen op UART-verbindingen.

  • --timeout SEC – time-out per operatie in seconden (standaard 1.0).

  • --max-retry N – pogingen voordat de verbinding als verbroken wordt verklaard (standaard 3).

  • --max-payload N – maximale payloadgrootte in bytes (standaard 4096). De cam onderhandelt naar beneden als hij niet zoveel aankan.

  • --crc BOOL – schakel CRC-validatie in op elk pakket (standaard true).

  • --seq BOOL – schakel validatie van volgnummers in (standaard true).

  • --ack BOOL – schakel bevestiging per pakket in (standaard true).

  • --events BOOL – schakel gebeurtenismeldingen van de cam in (standaard true).

  • --drop-rate FLOAT – simulatiesnelheid voor pakketverlies in [0.0, 1.0] (standaard 0.0). Alleen voor testen.

Eén CLI-specifieke afstemknop:

  • --poll MS – peilsnelheid voor de hoofdlus van de viewer, in milliseconden (standaard 4).

13.3.1.1.6. Diverse vlaggen

Twee vlaggen passen aan hoe de viewer de stream presenteert zonder het gedrag aan de cam-zijde te veranderen:

  • --scale N – weergavezoomfactor (standaard 4). Handig wanneer QVGA-frames te klein zijn om te lezen op een 4K-scherm.

  • --raw – vraagt de cam om pixelbuffers ongecomprimeerd te verzenden in plaats van JPEG-gecomprimeerd. Handig op cams zonder hardware-JPEG-ondersteuning; Frames streamen behandelt de afwegingen.

13.3.1.1.7. Wat de viewer doet

De CLI is zelf een openmv.Camera programma. Het maakt verbinding, roept stop() aan om eventueel draaiende scripts te wissen, uploadt het script met exec(), schakelt streaming in met streaming(), en doorloopt vervolgens een lus die read_frame() (om de weergave bij te werken), read_stdout() (om de prints van het script te spiegelen) en read_status() (om elk ander geregistreerd kanaal op activiteit te volgen) aanroept. De broncode staat op cli.py en is een werkende referentie voor een applicatie die een cam van begin tot eind aanstuurt.