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.
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.
Usein isäntäkoodia ei kuitenkaan tarvita lainkaan. OpenMV IDE on itse isäntä: rekisteröi protocol.CBORChannel nimettyjä lukemia ja säätimiä, niin IDE:n Kanavat-näkymä näyttää ne reaaliaikaisesti tunnisteina, kytkiminä, liukusäätiminä, kuvaajina ja syvyyskarttoina ja lähettää käyttäjän muutokset takaisin skriptille. Widgetit ja telemetria CBORChannelilla on tämä nopea polku; luvun loppuosa on se, mille se on rakennettu, siltä varalta, että projekti tarvitsee oman isäntänsä.
Kehystys
Kanavat
Yhteenveto