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í.

Hostitelský PC se připojuje ke kameře přes USB; kamera vystavuje tři kanály -- snímkový kanál pro obrazová data, konfigurační kanál pro řídicí hodnoty a vestavěný kanál stdout pro výpisy -- a hostitelský skript každý z nich čte nebo do něj zapisuje.

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.

Shrnutí