13.3.1.1. Az openmv CLI

A csomag telepítése hozzáad egy openmv futtatható programot, amely egy USB-n keresztül a kamerához csatlakozó pygame nézegetőt nyit meg. Ha a soros port után nem adunk meg további argumentumot, egy kis beépített tesztszkriptet futtat, visszaküldi az eredményül kapott képkocka-puffert, majd kicsinyítve/nagyítva megjeleníti azt, az aktuális képkockasebességgel megjelölve:

openmv --port /dev/ttyACM0

A port elérési útja a gazdaplatformtól függ. Linuxon /dev/ttyACMx az USB CDC esetén és /dev/ttyUSBx egy USB-UART híd esetén. macOS-en /dev/tty.usbmodem... vagy /dev/cu.usbmodem.... Windowson COMx.

A nézegető a leggyorsabb módja annak, hogy megerősítsük: a csomag telepítve van, a kamera elérhető és a protokoll működik. Hasznos demókörnyezet is a szkriptfejlesztés során – cseréld le a beépített tesztszkriptet bármilyen MicroPython fájlra a --script kapcsolóval, és figyeld az eredményt anélkül, hogy elhagynád a terminált.

Az Esc, a terminálban a Ctrl+C, vagy a nézegető ablakának bezárása mind tisztán kilép.

13.3.1.1.1. Egyéni szkript futtatása

A --script a CLI-t egy lemezen lévő MicroPython forrásfájlra irányítja. A fájl feltöltődik a kamerára, a beépített tesztszkript helyett lefut, és az általa előállított képkockák visszaérkeznek a nézegetőbe:

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

Minden, amit a szkript a stdout-ra ír, valós időben tükröződik a gazdaterminálon. Add meg a --quiet kapcsolót ennek elnyomásához, vagy a --debug kapcsolót a részletes protokollnaplózáshoz.

13.3.1.1.2. Egyéni csatorna előnézete

A --channel NAME lekérdezi a futó kameraoldali szkript által regisztrált egyéni adatcsatornát, és minden frissítés első tíz bájtját kiírja a terminálra:

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

Az a beépített tesztszkript, amely akkor fut, ha nincs megadva --script, regisztrál egy ticks csatornát, amely a kamera ezredmásodpercben mért működési idejét adja vissza, így a --channel ticks bemutatja a kétirányú csatornafelületet, amelyet a Egyéni csatornák részletesen ismertet – anélkül, hogy magadnak bármilyen kódot kellene írnod a gazdagépen vagy a kamerán.

13.3.1.1.3. Benchmark mód

A --bench a szabványos tesztszkriptet egy JPEG-tömörítési átviteliteljesítmény-benchmarkra cseréli:

openmv --port /dev/ttyACM0 --bench

A kamera rögzít egy RGB565 QVGA képkockát, JPEG-be tömöríti, majd ugyanazt a tömörített puffert egy szoros ciklusban kiüríti. A nézegető a nyers USB-adatsebességet jelenti, nem pedig egy élő, dekódolt képkockát, így a képernyőn látható szám az a felső korlát, amelyet a kapcsolat az adott gazdagép felé fenntartani képes. Hasznos kamerák vagy gazdagépek összehasonlításához anélkül, hogy a ténylegesen rögzített tartalom megváltoztatásából eredő ingadozás befolyásolná.

13.3.1.1.4. Profilozás

A CLI képes élő profilozási adatokat rávetíteni a streamelt képkockákra. A rávetítés csak akkor hasznos, ha a kamera PROFILE_ENABLE=1 firmware-buildet futtat regisztrált profile csatornával; a gyári firmware-en a profilozási vezérlőknek nincs hatásuk.

  • --firmware PATH – betölti azt a firmware ELF-et, amelyet a kamera futtat, hogy a rávetítés a profilrekordokban szereplő függvénycímeket ember által olvasható nevekké tudja feloldani. Enélkül a rávetítés nyers címeket mutat.

A nézegetőben három billentyűparancs vezérli a profilozót:

Billentyű

Művelet

P

A profilozó rávetítésének váltogatása: ki, teljesítmény, események.

M

A profilozó mód váltása az inkluzív és exkluzív között. Az inkluzív időmérés a meghívott függvény idejét a hívóra terheli; az exkluzív időmérés nem.

R

A profilozó számlálóinak nullázása.

13.3.1.1.5. Protokollhangoló kapcsolók

Az alábbi kapcsolók a openmv.Camera konstruktorparamétereit tükrözik. Az alapértelmezések minden szállított kamerán működnek; csak akkor írd felül őket, ha egy egyéni firmware-buildet hibakeresel, vagy kedvezőtlen kapcsolati körülményeket szimulálsz.

  • --baudrate N – alapértelmezése 921600 (a varázsérték, amely az USB-t az OpenMV protokollra váltja). Csak UART-kapcsolatokon írd felül.

  • --timeout SEC – műveletenkénti időtúllépés másodpercben (alapértelmezés 1.0).

  • --max-retry N – újrapróbálkozások száma, mielőtt a kapcsolat hibásnak nyilvánul (alapértelmezés 3).

  • --max-payload N – maximális hasznosteher-méret bájtban (alapértelmezés 4096). A kamera lefelé alkudozik, ha nem tud ennyit kezelni.

  • --crc BOOL – CRC-ellenőrzés engedélyezése minden csomagon (alapértelmezés true).

  • --seq BOOL – sorszám-ellenőrzés engedélyezése (alapértelmezés true).

  • --ack BOOL – csomagonkénti visszaigazolás engedélyezése (alapértelmezés true).

  • --events BOOL – eseményértesítések engedélyezése a kamerától (alapértelmezés true).

  • --drop-rate FLOAT – csomageldobás-szimulációs ráta a [0.0, 1.0] tartományban (alapértelmezés 0.0). Csak tesztelési célra.

Egy CLI-specifikus hangológomb:

  • --poll MS – a nézegető fő ciklusának lekérdezési rátája ezredmásodpercben (alapértelmezés 4).

13.3.1.1.6. Egyéb kapcsolók

Két kapcsoló módosítja, ahogyan a nézegető a streamet megjeleníti, anélkül, hogy a kameraoldali viselkedést megváltoztatná:

  • --scale N – megjelenítési nagyítási tényező (alapértelmezés 4). Hasznos, ha a QVGA képkockák túl kicsik ahhoz, hogy egy 4K kijelzőn olvashatóak legyenek.

  • --raw – azt kéri, hogy a kamera a képpontpuffereket JPEG-tömörítés helyett tömörítetlenül küldje. Hasznos hardveres JPEG-támogatás nélküli kamerákon; a Képkockák streamelése ismerteti a kompromisszumokat.

13.3.1.1.7. Mit csinál a nézegető

A CLI maga is egy openmv.Camera program. Csatlakozik, meghívja a stop() metódust bármely futó szkript törléséhez, feltölti a szkriptet a exec() metódussal, engedélyezi a streamelést a streaming() metódussal, majd ciklusban hívja a read_frame() (a kijelző frissítéséhez), a read_stdout() (a szkript kiírásainak tükrözéséhez) és a read_status() (minden más regisztrált csatorna aktivitásának figyeléséhez) metódusokat. A forráskód a cli.py helyen található, és működő referencia egy olyan alkalmazáshoz, amely egy kamerát végponttól végpontig vezérel.