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 会重新挂载它——这是获取脚本刚刚写入内容的快捷方法。

需要注意一点:摄像头和主机共享该文件系统,两端同时写入可能会损坏它。请在没有脚本写入存储时复制文件,并在拔出卡片前正确弹出。