12. Isäntäprotokolla

Jokainen OpenMV-kamera toimitetaan protokollapinon kanssa, joka tarjoaa kameran isäntäohjelmalle joukkona nimettyjä datakanavia. Isäntäohjelma voi olla Python-skripti kehittäjän kannettavalla, työpöydän graafinen käyttöliittymä, toinen kamera UART-yhteyden toisessa päässä tai työasemalla ajettava palvelu, joka valvoo kameralaivuetta. Kameraa ei kiinnosta, mikä – sama kehystys, sama luotettavuuskoneisto ja sama kanava-abstraktio toimii niille kaikille.

Tämä on vastaus kahteen kysymykseen, jotka nousevat jatkuvasti esiin, kun kameraprojekti poistuu IDE:stä:

  • ”Miten saan reaaliaikaisen näkymän siitä, mitä kamera näkee, omaan mukautettuun graafiseen käyttöliittymääni kannettavalla?”

  • ”Miten annan käyttäjän muuttaa kynnysarvoa tai valita kohdealueen ajon aikana ilman uudelleenflashausta?”

Kameran puolen protocol-moduuli ja isännän puolen openmv-python-paketti vastaavat molempiin kysymyksiin antamalla kameralla olevan Python-luokan tarjota kanavan, josta isännällä oleva Python-luokka voi lukea, johon se voi kirjoittaa ja jonka tapahtumiin se voi reagoida, kaikki yhden USB- tai sarjayhteyden yli.

Isäntä-PC yhdistää kameraan USB:n yli; kamera tarjoaa kolme kanavaa -- kehyskanavan kuvadatalle, asetuskanavan ohjausarvoille ja sisäänrakennetun stdout-kanavan tulosteille -- ja isäntäskripti lukee tai kirjoittaa kutakin niistä.

Luku opettaa molemmat puolet. Kameran puolen koodi näyttää, miten kanavia rekisteröidään ja syötetään; isännän puolen koodi näyttää, miten yhdistetään, listataan kanavat, vedetään dataa ja työnnetään komentoja takaisin. openmv-projects/tools/-hakemistossa toimitettavat oikeat työkalut käyttävät juuri tässä näytettyjä malleja.

Yhteenveto