13.1.4. Запуск скриптів#
Кнопка запуску – зелена стрілка під кнопкою підключення або Ctrl+R – надсилає скрипт з поточної вкладки редактора на підключену камеру і виконує його. Поки скрипт працює, кнопка запуску перетворюється на кнопку зупинки, яка перериває виконання. Ці дві кнопки – основний цикл розробки на камері: редагуй, запускай, спостерігай, зупиняй, редагуй знову.
У цьому циклі є два важливі нюанси. По-перше, скрипт надсилається в оперативну пам’ять камери і виконується там – запуск скрипта нічого не записує у сховище камери, і після скидання скрипт зникає. По-друге, виконується вміст поточної вкладки редактора – саме так, як він відображається, збережений чи ні. Немає окремого кроку завантаження і немає застарілої копії на камері, яка могла б розійтися з вмістом редактора. Єдина вільність, яку дозволяє собі IDE, – вилучення коментарів із копії, яку вона надсилає: вихідний код скрипта лежить в оперативній пам’яті камери під час компіляції, а приклади з великою кількістю коментарів без них менші. Рядки ніколи не видаляються, лише спорожнюються, тож номери рядків у трасуванні стека й далі збігаються з вашим редактором.
Поки скрипт виконується, його вивід print() передається до послідовного термінала, кожен знятий кадр з’являється у переглядачі кадрового буфера, а все, що він публікує як канал, з’являється в поданні «Канали». Якщо скрипт викидає необроблений виняток, трасування стека виводиться у послідовний термінал, а IDE переводить редактор на рядок, що спричинив помилку, і позначає його червоним із текстом помилки поруч – для багатофайлового застосунку спочатку відкривається відповідний файл з накопичувача камери. Позначка зникає, коли ви редагуєте файл, запускаєте знову або відключаєтеся. Коли скрипт зупиняється – через Stop або через збій – подання «Канали» зберігає останні опубліковані значення на екрані до запуску наступного скрипта.
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-картка, якщо вона вставлена) монтується на хості як USB-флеш-накопичувач. Tools → Open OpenMV Cam Drive folder відкриває її у файловому менеджері. Сюди копіюють бібліотечні модулі, файли моделей і ресурси, які скрипт імпортує або завантажує, а також звідси отримують збережені зображення та журнали. Шлях до накопичувача також відображається у рядку стану.
Файли, створені скриптом, не з’являються на хості одразу: хост кешує файлову систему з моменту монтування накопичувача, тому знімок, збережений запущеним скриптом, залишається невидимим до повторного монтування. Tools → Reset OpenMV Cam виконує повторне монтування – швидкий спосіб отримати доступ до щойно записаних скриптом файлів.
Одне застереження: камера і хост спільно використовують цю файлову систему, і одночасний запис з обох сторін може призвести до її пошкодження. Копіюйте файли, поки жоден скрипт не веде запис у сховище, і коректно від’єднуйте носій перед вийманням картки.