13.3.1.2. Hello cam¶
Клас openmv.Camera є точкою входу Python для всього, що може робити пакет. Кожна інша сторінка цього підручника звертається до нього. Найменша корисна програма підключається, завантажує скрипт MicroPython і виводить все, що скрипт записує у stdout
from openmv import Camera
script = """
import time
while True:
print('hello from the cam')
time.sleep(1)
"""
with Camera('/dev/ttyACM0') as cam:
cam.stop()
cam.exec(script)
while True:
if text := cam.read_stdout():
print(text, end='')
13.3.1.2.1. Кілька приміток¶
stop() перед exec() є обов’язковим. Без нього будь-який раніше запущений скрипт продовжує записувати у stdout, і новий exec конкурує з ним за контроль над каналом stdin.
exec() завантажує рядок скрипту в буфер stdin камери і запускає його в тому самому інтерпретаторі MicroPython, з яким спілкується IDE. Скрипт імпортує csi, image, ml та решту інтерфейсу камери, розглянутого в попередніх розділах — єдина відмінність полягає в тому, що вихідний код надходить через USB замість main.py на камері чи IDE.
13.3.1.2.2. Зупинка скрипту¶
Коли програма хоста хоче перервати запущений скрипт, викличте stop(). Скрипт отримує те саме переривання, яке б надіслав IDE, і завершується за першої нагоди. Вихід із контекстного менеджера (блоку with) закриває послідовний порт, але не зупиняє скрипт — камера продовжує виконувати останнє завантажене до тих пір, поки щось не перерве його.
13.3.1.2.3. Помилки та винятки¶
Будь-яка помилка на рівні протоколу піднімає openmv.OMVException або один з його підкласів (TimeoutException, ChecksumException, SequenceException). Загорнути блок with у try / except OMVException — це найпростіший спосіб обробити від’єднаний USB-кабель або камеру, що перестала відповідати.
Протокол виконує повторні спроби внутрішньо перед підняттям виключення; до того моменту, коли OMVException досягає застосунку, ресурс повторних спроб вичерпано і канал зв’язку дійсно зламано. Стандартні значення (max_retry=3, timeout=1.0) підходять для всіх — налаштовуйте їх у конструкторі лише якщо конкретному застосунку потрібна інша поведінка.