12. Hostitelský protokol

Každá kamera OpenMV se dodává s protokolovým zásobníkem, který kameru vystavuje hostitelskému programu jako sadu pojmenovaných datových kanálů. Hostitelským programem může být skript v Pythonu na vývojářově notebooku, desktopové GUI, jiná kamera na druhém konci UART nebo služba běžící na pracovní stanici sledující flotilu kamer. Kameře je jedno, který z nich – stejné rámcování, stejný mechanismus spolehlivosti, stejná abstrakce kanálu fungují pro všechny.

To je odpověď na dvě otázky, které se neustále objevují, jakmile projekt s kamerou opustí IDE:

  • „Jak dostanu živý náhled toho, co kamera vidí, do vlastního GUI na svém notebooku?“

  • „Jak umožním operátorovi změnit práh nebo vybrat oblast zájmu za běhu, bez nového nahrání firmwaru?“

Modul protocol na straně kamery a balíček openmv-python na straně hosta odpovídají na obě otázky tím, že umožňují třídě v Pythonu na kameře vystavit kanál, ze kterého může třída v Pythonu na hostu číst, do kterého může zapisovat a na jehož události může reagovat, to vše přes jediné připojení USB nebo sériové připojení.

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.

Tato kapitola učí obě strany. Kód na straně kamery ukazuje, jak registrovat kanály a plnit je daty; kód na straně hosta ukazuje, jak se připojit, vypsat kanály, stáhnout data a poslat zpět příkazy. Skutečné nástroje, které se dodávají v adresáři openmv-projects/tools/, používají přesně vzory uvedené zde.