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.

A host PC connects to a cam over USB; the cam exposes three channels -- a frame channel for image data, a config channel for control values, and the built-in stdout channel for prints -- and the host script reads or writes each.

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.