12. 호스트 프로토콜

모든 OpenMV 캠에는 카메라를 명명된 데이터 채널 집합으로서 호스트 프로그램에 노출하는 프로토콜 스택이 함께 제공됩니다. 호스트 프로그램은 개발자 노트북의 Python 스크립트일 수도, 데스크톱 GUI일 수도, UART 반대편의 또 다른 캠일 수도, 카메라 무리를 감시하는 워크스테이션에서 실행되는 서비스일 수도 있습니다. 캠은 어느 것인지 신경 쓰지 않습니다 – 동일한 프레이밍, 동일한 신뢰성 메커니즘, 동일한 채널 추상화가 그 모두에 적용됩니다.

이것은 캠 프로젝트가 IDE를 벗어나면 끊임없이 떠오르는 두 가지 질문에 대한 답입니다:

  • “캠이 보는 것의 라이브 화면을 내 노트북의 사용자 정의 GUI로 어떻게 가져올까?”

  • “재플래시 없이, 운영자가 런타임에 임계값을 바꾸거나 관심 영역을 선택하게 하려면 어떻게 할까?”

캠 측의 protocol 모듈과 호스트 측의 openmv-python 패키지가 두 질문 모두에 답합니다. 이들은 캠의 Python 클래스가 채널 을 노출하게 하여, 호스트의 Python 클래스가 단일 USB 또는 시리얼 연결을 통해 그 채널을 읽고, 쓰고, 이벤트에 반응할 수 있게 합니다.

호스트 PC가 USB를 통해 캠에 연결됩니다. 캠은 세 개의 채널 -- 이미지 데이터를 위한 프레임 채널, 제어 값을 위한 구성 채널, 그리고 print를 위한 내장 stdout 채널 -- 을 노출하고, 호스트 스크립트는 각 채널을 읽거나 씁니다.

이 장에서는 양쪽을 모두 다룹니다. 캠 측 코드는 채널을 등록하고 거기에 데이터를 공급하는 방법을 보여주고, 호스트 측 코드는 연결하고, 채널 목록을 가져오고, 데이터를 끌어오고, 명령을 되돌려 보내는 방법을 보여줍니다. openmv-projects/tools/ 디렉터리에 포함되어 제공되는 실제 도구들은 여기에서 보여주는 패턴을 그대로 사용합니다.

마무리