12. Gazdagép-protokoll#

Minden OpenMV kamera protokoll-veremmel érkezik, amely a kamerát megnevezett adatcsatornák halmazaként teszi elérhetővé egy gazdaprogram számára. A gazdaprogram lehet egy Python-szkript a fejlesztő laptopján, egy asztali grafikus felület, egy másik kamera egy UART túloldalán, vagy egy munkaállomáson futó szolgáltatás, amely egy kameraflottát figyel. A kamerát nem érdekli, melyik – ugyanaz a keretezés, ugyanaz a megbízhatósági gépezet, ugyanaz a csatornaabsztrakció működik mindegyikkel.

Ez a válasz arra a két kérdésre, amely folyamatosan felmerül, amint egy kameraprojekt elhagyja az IDE-t:

  • „Hogyan juttatom el élő nézetben a laptopomon lévő egyedi grafikus felületre azt, amit a kamera lát?”

  • „Hogyan engedhetem meg egy kezelőnek, hogy futás közben módosítson egy küszöbértéket vagy válasszon egy érdeklődési területet, újraflashelés nélkül?”

A kamera oldalán lévő protocol modul és a gazdagép oldalán lévő openmv-python csomag mindkét kérdésre választ ad azzal, hogy egy kamerán lévő Python-osztály egy csatornát tesz elérhetővé, amelyről egy gazdagépen lévő Python-osztály olvashat, amelyre írhat, és amelynek eseményeire reagálhat, mindezt egyetlen USB- vagy soros kapcsolaton keresztül.

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.

A fejezet mindkét oldalt megtanítja. A kamera-oldali kód megmutatja, hogyan kell csatornákat regisztrálni és táplálni; a gazdagép-oldali kód megmutatja, hogyan kell csatlakozni, listázni a csatornákat, adatot lehúzni és parancsokat visszaküldeni. Az openmv-projects/tools/ könyvtárban szállított valódi eszközök pontosan az itt bemutatott mintákat használják.

Gyakran azonban egyáltalán nincs szükség gazdagépkódra. Az OpenMV IDE maga is gazdagép: regisztrálj egy protocol.CBORChannel-t nevesített leolvasásokkal és vezérlőkkel, és az IDE Csatornák nézete élőben mutatja őket címkékként, kapcsolókként, csúszkákként, grafikonokként és mélységtérképekként, a kezelő módosításait pedig visszaküldi a szkriptnek. A Widgetek és telemetria a CBORChannel segítségével ez a gyors út; a fejezet többi része az, amire épül, arra az esetre, ha egy projektnek saját gazdagépre van szüksége.

Összefoglalás