13.3.1.1. CLI openmv¶
Встановлення пакета додає виконуваний файл openmv, який відкриває засіб перегляду pygame, підключений до камери через USB. Без аргументів після порту послідовного зв’язку він запускає невеликий вбудований тестовий скрипт, транслює отриманий кадровий буфер назад і відображає його з масштабуванням та анотацією поточної частоти кадрів:
openmv --port /dev/ttyACM0
Шлях до порту залежить від платформи хоста. У Linux — /dev/ttyACMx для USB CDC та /dev/ttyUSBx для USB-UART адаптера. У macOS — /dev/tty.usbmodem... або /dev/cu.usbmodem.... У Windows — COMx.
Засіб перегляду — це найшвидший спосіб переконатися, що пакет встановлено, камера доступна і протокол працює. Він також є зручним засобом демонстрації під час розробки скриптів — замініть вбудований тестовий скрипт на будь-який файл MicroPython за допомогою --script і спостерігайте за результатом, не виходячи з термінала.
Esc, Ctrl+C у терміналі або закриття вікна перегляду — будь-яка з цих дій завершує роботу коректно.
13.3.1.1.1. Запуск власного скрипту¶
--script вказує CLI на файл вихідного коду MicroPython на диску. Файл завантажується на камеру, виконується замість вбудованого тестового скрипту, і всі кадри, які він виробляє, транслюються назад до засобу перегляду:
openmv --port /dev/ttyACM0 --script my_script.py
Все, що скрипт виводить у stdout, в реальному часі дублюється в термінал хоста. Передайте --quiet, щоб придушити це, або --debug для детального журналювання протоколу.
13.3.1.1.2. Перегляд власного каналу¶
--channel NAME опитує власний канал даних, зареєстрований запущеним скриптом на стороні камери, і виводить перші десять байтів кожного оновлення в термінал:
openmv --port /dev/ttyACM0 --channel ticks
Вбудований тестовий скрипт, який запускається, якщо --script не вказано, реєструє канал ticks, що повертає час роботи камери в мілісекундах, тому --channel ticks демонструє двонапрямлений канальний інтерфейс, який докладно описаний у Власні канали, — без написання будь-якого коду на хості чи камері.
13.3.1.1.3. Режим бенчмарку¶
--bench замінює стандартний тестовий скрипт на бенчмарк пропускної здатності стиснення JPEG:
openmv --port /dev/ttyACM0 --bench
Камера знімає один кадр RGB565 QVGA, стискає його у JPEG, а потім у щільному циклі виводить той самий стиснений буфер. Засіб перегляду звітує про необроблену швидкість передачі даних USB, а не про живий декодований кадр, тому число на екрані є верхньою межею, яку канал зв’язку може підтримувати до цього хоста. Корисно для порівняння камер або хостів без варіативності, пов’язаної зі змінами того, що насправді знімається.
13.3.1.1.4. Профілювання¶
CLI може накладати дані живого профілювальника на трансльовані кадри. Накладення корисне лише тоді, коли камера запущена із збіркою мікропрограми PROFILE_ENABLE=1 із зареєстрованим каналом profile; на стандартній мікропрограмі елементи керування профілюванням не мають жодного ефекту.
--firmware PATH— завантажує ELF мікропрограми, яку виконує камера, щоб накладення могло перетворювати адреси функцій у записах профілювача на зрозумілі імена. Без цього накладення відображає необроблені адреси.
Три комбінації клавіш у засобі перегляду керують профілювальником:
Клавіша |
Дія |
|---|---|
|
Перемикає накладення профілювальника по колу: вимкнено, продуктивність, події. |
|
Перемикає режим профілювальника між inclusive та exclusive. В режимі inclusive час виконання викликаних функцій враховується у виклику; в режимі exclusive — ні. |
|
Скидає лічильники профілювальника. |
13.3.1.1.5. Прапори налаштування протоколу¶
Наведені нижче прапори відображають параметри конструктора openmv.Camera. Стандартні значення працюють на кожній поставленій камері; змінюйте їх лише під час налагодження власної збірки мікропрограми або симуляції несприятливих умов каналу зв’язку.
--baudrate N— за замовчуванням921600(магічне значення, яке перемикає USB на протокол OpenMV). Перевизначайте лише для каналів UART.--timeout SEC— час очікування операції в секундах (за замовчуванням1.0).--max-retry N— кількість повторних спроб перед оголошенням каналу зв’язку зламаним (за замовчуванням3).--max-payload N— максимальний розмір корисного навантаження в байтах (за замовчуванням4096). Камера знижує значення, якщо не може обробити стільки.--crc BOOL— увімкнути перевірку CRC для кожного пакета (за замовчуваннямtrue).--seq BOOL— увімкнути перевірку порядкового номера (за замовчуваннямtrue).--ack BOOL— увімкнути підтвердження для кожного пакета (за замовчуваннямtrue).--events BOOL— увімкнути сповіщення про події від камери (за замовчуваннямtrue).--drop-rate FLOAT— швидкість симуляції втрат пакетів у[0.0, 1.0](за замовчуванням0.0). Лише для тестування.
Один специфічний для CLI регулятор налаштування:
--poll MS— частота опитування головного циклу засобу перегляду в мілісекундах (за замовчуванням4).
13.3.1.1.6. Різні прапори¶
Два прапори змінюють спосіб відображення потоку у засобі перегляду, не змінюючи поведінку на стороні камери:
--scale N— коефіцієнт масштабування відображення (за замовчуванням4). Корисно, коли кадри QVGA занадто малі для читання на дисплеї 4K.--raw— запитує камеру надсилати піксельні буфери нестисненими замість стиснених JPEG. Корисно на камерах без апаратної підтримки JPEG; компроміси описані у Потокова передача кадрів.
13.3.1.1.7. Що робить засіб перегляду¶
CLI сам є програмою openmv.Camera. Він підключається, викликає stop() для очищення будь-якого запущеного скрипту, завантажує скрипт за допомогою exec(), вмикає трансляцію через streaming(), а потім у циклі викликає read_frame() (для оновлення дисплея), read_stdout() (для дублювання виводу скрипту) та read_status() (для спостереження за кожним іншим зареєстрованим каналом на наявність активності). Вихідний код розміщено за адресою cli.py і є робочим довідковим прикладом програми, яка керує камерою від початку до кінця.