12. 主机协议¶
每个 OpenMV 摄像头都附带一个协议栈,它将摄像头作为一组命名的数据通道暴露给主机程序。主机程序可能是开发者笔记本电脑上的一个 Python 脚本、一个桌面 GUI、UART 另一端的另一个摄像头,或是工作站上监视一队摄像头的服务。摄像头并不关心是哪一种——同样的成帧、同样的可靠性机制、同样的通道抽象对它们都适用。
这回答了一个摄像头项目离开 IDE 后不断出现的两个问题:
“我如何把摄像头所见的实时画面接入我笔记本电脑上的自定义 GUI?”
“我如何让操作员在运行时更改阈值或选取感兴趣区域,而无需重新烧录?”
摄像头端的 protocol 模块和主机端的 openmv-python 软件包回答了这两个问题:让摄像头上的一个 Python 类暴露一个通道,主机上的一个 Python 类可以从中读取、向其写入并对其事件作出反应,这一切都通过单条 USB 或串行连接完成。
本章讲解双方。摄像头端代码展示如何注册通道并向其馈送数据;主机端代码展示如何连接、列出通道、拉取数据并推回命令。openmv-projects/tools/ 目录中附带的真实工具正是使用此处展示的这些模式。
流式传输
总结