12. Protokół hosta

Każda kamera OpenMV jest dostarczana ze stosem protokołu, który udostępnia kamerę programowi hosta jako zestaw nazwanych kanałów danych. Programem hosta może być skrypt Pythona na laptopie programisty, desktopowy interfejs graficzny, inna kamera na drugim końcu UART lub usługa działająca na stacji roboczej obserwującej flotę kamer. Kamerze nie zależy na tym, które z nich – to samo ramkowanie, ta sama maszyneria niezawodności, ta sama abstrakcja kanału działa dla wszystkich.

To odpowiedź na dwa pytania, które pojawiają się stale, gdy projekt kamery opuszcza IDE:

  • „Jak uzyskać podgląd na żywo tego, co widzi kamera, w niestandardowym interfejsie graficznym na moim laptopie?”

  • „Jak pozwolić operatorowi zmienić próg lub wybrać obszar zainteresowania w czasie działania, bez ponownego flashowania?”

Moduł protocol po stronie kamery i pakiet openmv-python po stronie hosta odpowiadają na oba pytania, pozwalając klasie Pythona na kamerze udostępnić kanał, z którego klasa Pythona na hoście może czytać, do którego może pisać i na którego zdarzenia może reagować, a wszystko to przez pojedyncze połączenie USB lub szeregowe.

Host PC łączy się z kamerą przez USB; kamera udostępnia trzy kanały -- kanał ramki dla danych obrazu, kanał konfiguracji dla wartości sterujących oraz wbudowany kanał stdout dla wydruków -- a skrypt hosta czyta z każdego z nich lub do niego pisze.

Rozdział uczy obu stron. Kod po stronie kamery pokazuje, jak rejestrować kanały i je zasilać; kod po stronie hosta pokazuje, jak się połączyć, wylistować kanały, pobrać dane i odesłać polecenia. Prawdziwe narzędzia dostarczane w katalogu openmv-projects/tools/ używają dokładnie tych wzorców, które tu pokazano.

Podsumowanie