12. Протокол хоста

Каждая камера OpenMV поставляется со стеком протокола, который представляет камеру хост-программе как набор именованных каналов данных. Хост-программой может быть скрипт Python на ноутбуке разработчика, настольный графический интерфейс, другая камера на другом конце UART или служба, работающая на рабочей станции и наблюдающая за парком камер. Камере всё равно, что это – одно и то же кадрирование, один и тот же механизм надёжности, одна и та же абстракция канала работают для всех них.

Это ответ на два вопроса, которые постоянно возникают, как только проект камеры покидает IDE:

  • «Как мне получить живое изображение того, что видит камера, в собственном графическом интерфейсе на ноутбуке?»

  • «Как разрешить оператору менять порог или выбирать область интереса во время работы, без перепрошивки?»

Модуль protocol на стороне камеры и пакет openmv-python на стороне хоста отвечают на оба вопроса, позволяя классу Python на камере представить канал, из которого класс Python на хосте может читать, в который может писать и на события которого может реагировать – всё это через одно USB- или последовательное соединение.

Хост-ПК подключается к камере через USB; камера представляет три канала -- канал кадров для данных изображения, канал конфигурации для управляющих значений и встроенный канал stdout для вывода print -- а хост-скрипт читает из каждого или пишет в него.

Эта глава учит обеим сторонам. Код на стороне камеры показывает, как регистрировать каналы и подавать в них данные; код на стороне хоста показывает, как подключиться, перечислить каналы, забрать данные и отправить команды обратно. Реальные инструменты, поставляемые в каталоге openmv-projects/tools/, используют именно те шаблоны, что показаны здесь.