12. 主機協定¶
每台 OpenMV 相機(cam)都隨附一個協定堆疊,將相機以一組具名資料通道的形式呈現給主機程式。主機程式可以是開發者筆記型電腦上的 Python 指令碼、桌面 GUI、UART 另一端的另一台相機,或是在工作站上監看一整批相機的服務。相機並不在意是哪一種——相同的封裝、相同的可靠性機制、相同的通道抽象,對所有這些情況都適用。
這是對相機專案離開 IDE 後不斷出現的兩個問題的解答:
「我要如何把相機所見的即時畫面傳入我筆電上的自訂 GUI?」
「我要如何讓操作人員在執行階段變更閾值或選取感興趣區域,而不必重新燒錄韌體?」
相機端的 protocol 模組與主機端的 openmv-python 套件回答了這兩個問題:它讓相機上的一個 Python 類別公開一個通道,主機上的 Python 類別便能從中讀取、寫入並對其上的事件做出反應,這一切都透過單一的 USB 或序列連線完成。
本章同時教導雙方。相機端的程式碼示範如何註冊通道並餵入資料;主機端的程式碼則示範如何連線、列出通道、拉取資料並將指令推送回去。在 openmv-projects/tools/ 目錄中隨附的實際工具,所使用的正是這裡展示的模式。
總結