13.3.1.1. openmv-komentorivityökalu

Paketin asentaminen lisää openmv-suoritettavan tiedoston, joka avaa pygame-katselimen yhdistettynä kameraan USB:n kautta. Ilman muita argumentteja sarjaportin lisäksi se suorittaa pienen sisäänrakennetun testiskriptin, suoratoistaa syntyneen kehyspuskurin takaisin ja näyttää sen skaalattuna ja varustettuna nykyisellä kehysnopeudella:

openmv --port /dev/ttyACM0

Portin polku riippuu isäntäalustasta. Linuxissa /dev/ttyACMx USB CDC:lle ja /dev/ttyUSBx USB-UART-sillalle. macOS:ssä /dev/tty.usbmodem... tai /dev/cu.usbmodem.... Windowsissa COMx.

Katselin on nopein tapa varmistaa, että paketti on asennettu, kamera on tavoitettavissa ja protokolla toimii. Se on myös hyödyllinen esittelyalusta skriptin kehitystyön aikana – vaihda sisäänrakennettu testiskripti mihin tahansa MicroPython-tiedostoon --script-valitsimella ja seuraa tulosta poistumatta terminaalista.

Esc, Ctrl+C terminaalissa tai katselinikkunan sulkeminen poistuvat kaikki siististi.

13.3.1.1.1. Mukautetun skriptin suorittaminen

--script ohjaa komentorivityökalun levyllä olevaan MicroPython-lähdetiedostoon. Tiedosto ladataan kameraan, suoritetaan sisäänrakennetun testiskriptin sijaan, ja kaikki sen tuottamat kehykset suoratoistetaan takaisin katselimeen:

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

Kaikki, mitä skripti tulostaa kohteeseen stdout, peilataan reaaliaikaisesti isäntäterminaaliin. Anna --quiet vaimentaaksesi sen tai --debug saadaksesi yksityiskohtaisen protokollalokituksen.

13.3.1.1.2. Mukautetun kanavan esikatselu

--channel NAME kyselee mukautettua datakanavaa, jonka käynnissä oleva kameran skripti on rekisteröinyt, ja tulostaa jokaisen päivityksen ensimmäiset kymmenen tavua terminaaliin:

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

Sisäänrakennettu testiskripti, joka suoritetaan ilman --script-valitsinta, rekisteröi ticks-kanavan, joka palauttaa kameran millisekunteina lasketun käyntiajan, joten --channel ticks havainnollistaa kaksisuuntaista kanavarajapintaa, jonka Mukautetut kanavat käsittelee yksityiskohtaisesti – ilman että sinun täytyy kirjoittaa lainkaan koodia isännälle tai kameralle.

13.3.1.1.3. Vertailutila

--bench vaihtaa tavanomaisen testiskriptin JPEG-pakkauksen läpäisykyvyn vertailutestiin:

openmv --port /dev/ttyACM0 --bench

Kamera ottaa yhden RGB565 QVGA -kehyksen, pakkaa sen JPEG-muotoon ja sitten huuhtelee saman pakatun puskurin tiukassa silmukassa. Katselin raportoi USB:n raakadatanopeuden eikä reaaliajassa dekoodattua kehystä, joten ruudulla näkyvä luku on yläraja, jonka yhteys pystyy ylläpitämään kyseiselle isännälle. Hyödyllinen kameroiden tai isäntien vertailuun ilman vaihtelua, joka syntyy siitä, mitä todella kaapataan.

13.3.1.1.4. Profilointi

Komentorivityökalu voi näyttää reaaliaikaista profilointidataa päällyksenä suoratoistetuissa kehyksissä. Päällys on hyödyllinen vain, kun kamera käyttää PROFILE_ENABLE=1-laiteohjelmistokäännöstä, jossa profile-kanava on rekisteröity; vakiolaiteohjelmistossa profilointiohjaimilla ei ole vaikutusta.

  • --firmware PATH – lataa laiteohjelmiston ELF-tiedoston, jota kamera käyttää, jotta päällys voi ratkaista profilointitietueiden funktio-osoitteet ihmisluettaviksi nimiksi. Ilman sitä päällys näyttää raakaosoitteet.

Kolme näppäimistön pikanäppäintä katselimessa ohjaavat profiloijaa:

Näppäin

Toiminto

P

Selaa profiloijan päällystä: pois, suorituskyky, tapahtumat.

M

Vaihda profiloijan tila sisältävän ja poissulkevan välillä. Sisältävä ajoitus veloittaa kutsutun ajan kutsujalle; poissulkeva ajoitus ei.

R

Nollaa profiloijan laskurit.

13.3.1.1.5. Protokollan viritysliput

Alla olevat liput vastaavat openmv.Camera-luokan rakentajan parametreja. Oletusarvot toimivat jokaisessa toimitetussa kamerassa; ohita ne vain, kun korjaat mukautettua laiteohjelmistokäännöstä tai simuloit haitallisia yhteysolosuhteita.

  • --baudrate N – oletuksena 921600 (taikaluku, joka vaihtaa USB:n OpenMV-protokollaan). Ohita vain UART-yhteyksissä.

  • --timeout SEC – toimintokohtainen aikakatkaisu sekunneissa (oletus 1.0).

  • --max-retry N – uudelleenyritysten määrä ennen kuin yhteys julistetaan rikkinäiseksi (oletus 3).

  • --max-payload N – enimmäishyötykuorman koko tavuina (oletus 4096). Kamera neuvottelee pienemmäksi, jos se ei pysty käsittelemään niin paljon.

  • --crc BOOL – ota CRC-tarkistus käyttöön jokaisessa paketissa (oletus true).

  • --seq BOOL – ota järjestysnumeron tarkistus käyttöön (oletus true).

  • --ack BOOL – ota pakettikohtainen kuittaus käyttöön (oletus true).

  • --events BOOL – ota tapahtumailmoitukset kameralta käyttöön (oletus true).

  • --drop-rate FLOAT – pakettien pudotuksen simulointinopeus välillä [0.0, 1.0] (oletus 0.0). Vain testaukseen.

Yksi komentorivityökalukohtainen viritysnuppi:

  • --poll MS – katselimen pääsilmukan kyselynopeus millisekunteina (oletus 4).

13.3.1.1.6. Sekalaiset liput

Kaksi lippua säätää, miten katselin esittää suoratoiston muuttamatta kameran toimintaa:

  • --scale N – näytön zoomauskerroin (oletus 4). Hyödyllinen, kun QVGA-kehykset ovat liian pieniä luettaviksi 4K-näytöllä.

  • --raw – pyytää kameraa lähettämään pikselipuskurit pakkaamattomina JPEG-pakkauksen sijaan. Hyödyllinen kameroissa, joissa ei ole laitteistotason JPEG-tukea; Kehysten suoratoisto käsittelee kompromissit.

13.3.1.1.7. Mitä katselin tekee

Komentorivityökalu on itsessään openmv.Camera-ohjelma. Se yhdistää, kutsuu stop() tyhjentääkseen kaikki käynnissä olevat skriptit, lataa skriptin kutsulla exec(), ottaa suoratoiston käyttöön kutsulla streaming() ja sitten suorittaa silmukkaa kutsuen read_frame() (näytön päivittämiseksi), read_stdout() (skriptin tulosteiden peilaamiseksi) ja read_status() (jokaisen muun rekisteröidyn kanavan toiminnan seuraamiseksi). Lähdekoodi on osoitteessa cli.py ja se on toimiva viite sovellukselle, joka ohjaa kameraa päästä päähän.