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 |
|---|---|
|
A profilozó rávetítésének váltogatása: ki, teljesítmény, események. |
|
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. |
|
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ése921600(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és1.0).--max-retry N– újrapróbálkozások száma, mielőtt a kapcsolat hibásnak nyilvánul (alapértelmezés3).--max-payload N– maximális hasznosteher-méret bájtban (alapértelmezés4096). A kamera lefelé alkudozik, ha nem tud ennyit kezelni.--crc BOOL– CRC-ellenőrzés engedélyezése minden csomagon (alapértelmezéstrue).--seq BOOL– sorszám-ellenőrzés engedélyezése (alapértelmezéstrue).--ack BOOL– csomagonkénti visszaigazolás engedélyezése (alapértelmezéstrue).--events BOOL– eseményértesítések engedélyezése a kamerától (alapértelmezéstrue).--drop-rate FLOAT– csomageldobás-szimulációs ráta a[0.0, 1.0]tartományban (alapértelmezés0.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és4).
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és4). 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.