13.1.4. 執行指令碼¶
啟動按鈕(連線按鈕下方的綠色箭頭,或按 Ctrl+R)會將目前編輯器分頁中的指令碼傳送至已連線的相機並執行。指令碼執行時,啟動按鈕會變成停止按鈕,可將其中止。這兩個按鈕構成了在相機上進行所有開發工作的核心迴圈:編輯、啟動、觀察、停止、再次編輯。
這個迴圈有兩個細節值得注意。首先,指令碼會被傳送到相機的 RAM 中並在那裡執行,啟動指令碼不會寫入任何內容到相機的儲存空間,而且指令碼在重置後便會消失。其次,執行的是目前的編輯器分頁,內容與顯示的完全一致,無論是否已儲存。這當中沒有獨立的上傳步驟,相機上也不會留下與編輯器失去同步的過時副本。
指令碼執行時,其 print() 輸出會即時串流到序列終端機,它擷取的每一個影格都會出現在影格緩衝區檢視器中。當指令碼引發未處理的例外時,回溯訊息會列印到序列終端機,IDE 也會將編輯器跳轉到出錯的那一行;對於多檔案應用程式,它會先從相機的磁碟機開啟指定的檔案。
13.1.4.1. 讓指令碼成為永久執行¶
若要讓相機在不使用 IDE 的情況下執行指令碼(在通電時、獨立運作、在現場環境中),請將指令碼以 main.py 的名稱儲存到相機上。Tools → Save open script to OpenMV Cam (as main.py) 會將目前的編輯器分頁以該名稱寫入相機的磁碟機,過程中還會提供移除註解與壓縮空白字元的選項(這會縮小檔案,但會產生無法閱讀的副本);而 Tools → Reset OpenMV Cam 則會重新啟動相機,使其開機進入已儲存的指令碼。這兩者合起來就是部署步驟:從此以後,只要相機有電,無論是否使用 IDE,都會執行你的指令碼。
在已重置的相機正執行其儲存的 main.py 時,IDE 仍可連線至它;啟用 Stop Script on Connect/Disconnect(預設值)後,連線會中止已儲存的指令碼並將控制權交還給編輯器。
請參閱
關於 main.py 在相機開機程序中的意義,以及如何將完成的應用程式完全移出可編輯的儲存空間,請參閱 將指令碼凍結進韌體。
13.1.4.2. 相機的磁碟機¶
相機的快閃記憶體檔案系統(以及插入 SD 卡時的 SD 卡)會以 USB 隨身碟的形式掛載到主機上。Tools → Open OpenMV Cam Drive folder 會在你的檔案管理員中將其開啟。這裡是你複製函式庫模組、模型檔案,以及指令碼匯入或載入的各種資源的地方,也是你取回指令碼所儲存影像與紀錄檔的地方。磁碟機路徑也會顯示在狀態列中。
指令碼建立的檔案不會立即顯示在主機上:主機會從磁碟機掛載的那一刻起快取整個檔案系統,因此執行中的指令碼所儲存的快照在磁碟機重新掛載前都會是看不到的。Tools → Reset OpenMV Cam 會重新掛載它,這是取得指令碼剛寫入內容的快速方法。
有一點需要注意:相機與主機共用該檔案系統,雙方同時寫入可能會使其損毀。請在沒有指令碼正寫入儲存空間時複製檔案,並在拔出記憶卡前先安全退出。