v1.7.0

v1.7.0 добавляет разбиение на части и сборку буфера кадра по последовательному каналу, так что большие кадры можно передавать по отладочному последовательному соединению, делает отключение со сбросом более безопасным за счёт сброса буферов (а в Windows — извлечения) USB-накопителя камеры и обновляет набор примеров. Выпуск основан на Qt Creator 4.0.2 (та же база, что и в предыдущем выпуске) и добавляет поддержку сборки для кросс-компилируемых встраиваемых Linux-платформ, таких как Raspberry Pi. Несовместимых изменений нет.

Основные изменения

  • Разбиение буфера кадра по последовательному каналу — большие передачи буфера кадра разбиваются на части размером с MTU и собираются в буфере пикселей, так что большие кадры можно перемещать по отладочному последовательному соединению.

  • Более безопасное отключение со сбросом — буферы USB-накопителя камеры сбрасываются перед сбросом (и принудительно извлекаются в Windows), так что файловая система сначала синхронизируется.

  • Атомарное сохранение файлов — файлы main.py и файлы ключевых точек записываются атомарно, что предотвращает повреждение и исправляет ошибку пути, из-за которой main.py записывался не туда.

  • Raspberry Pi / встраиваемый Linux — теперь включена поддержка сборки с кросс-компиляцией.

  • Обновлённые примеры — набор для Servo Shield, новые демонстрации обнаружения признаков и примеры видео Image Reader/Writer.

Новые возможности

  • Разбиение на части и сборка буфера кадра по последовательному каналу. Передачи буфера кадра разбиваются на части размером с MTU и собираются в буфере пикселей, так что большие кадры можно перемещать по отладочному последовательному соединению с использованием MTU по умолчанию. Добавлено рукопожатие авто-согласования MTU во время выполнения с порогом версии прошивки, установленным на 2.5.0, что соответствует прошивке 2.5.0, поставляемой в том же коммите (96458ccef). Затем этот порог был поднят до 9.9.9 для релиза, что не сообщает ни одна поставляемая прошивка, поэтому камеры используют MTU по умолчанию и согласование не происходит (abd1dacb9).

  • Сброс/извлечение при отключении со сбросом. Отключение со сбросом теперь сбрасывает буферы USB-накопителя камеры перед сбросом: в Windows накопитель принудительно извлекается, а в Linux и macOS файловая система накопителя синхронизируется (syncfs / sync_volume_np). При сбое на всех трёх платформах сообщается об ошибке Failed to eject (243618791, ff6b15aff, 1865ffd31, 4fd4e89cf).

  • Примеры Servo Shield. Добавлен набор примеров 15-Servo-Shield, демонстрирующий сервоприводы под управлением PCA9685, включая драйвер pca9685.py и вспомогательный модуль servo.py (abd1dacb9).

  • Новые примеры обнаружения признаков. Добавлены find_circles (Хаф), find_rects (квадро-порог), find_numbers (распознавание цифр LeNet), а также быстрые и устойчивые примеры линейной регрессии в каталоге 09-Feature-Detection (abd1dacb9).

  • Примеры видео и управления платой. Добавлены примеры Image Reader/Writer для записи и воспроизведения потоков снимков с SD-карты, пример управления платой RTC и запускатель модульных тестов на камере (abd1dacb9).

Прочие изменения и улучшения

  • Переименован каталог примеров 99-Tests (ранее 15-Tests) и добавлен запускатель unittests.py (abd1dacb9).

Исправления ошибок

  • Усилено сохранение файлов main.py и файлов ключевых точек. Запись была переведена на атомарную запись FileSaver (запись с последующей финализацией) в (4fd4e89cf), а отсутствующий разделитель пути, из-за которого main.py записывался не туда, был исправлен в (1865ffd31).

  • Улучшена надёжность последовательной связи за счёт увеличения буфера чтения последовательного порта до 1 МБ на всех портах и увеличения тайм-аута зависания чтения, что устраняет потерю данных с QSerialPort (7f68368dc).

  • Исправлен сбой раскладки разделителя окна за счёт экспорта MainWindow и испускания сигнала события показа, чтобы плагин OpenMV мог восстановить раскладку при показе главного окна (4895e20b7).

Поддержка платформ и инструментов

  • Базовая версия Qt Creator: 4.0.2.

  • Добавлена поддержка сборки для кросс-компилируемых встраиваемых Linux-платформ, таких как Raspberry Pi: разворачивает шрифты Qt, исправляет обработку chrpath/RPATH, собирает переводы с помощью хост-бинарников и добавляет отсутствующую зависимость qml (73c052fcc, 8f0baa131, 5b9e9e82e, 45011ec2a).

  • Обновлена поставляемая прошивка OpenMV с 2.4.1 до 2.5.0 (96458ccef).

  • Переименованы каталоги прошивок OMV2/OMV3 в OPENMV2/OPENMV3 и поставлены обновлённые, пересобранные бинарные файлы прошивки и загрузчика STM32F427 (OPENMV2) и STM32F765 (OPENMV3) (abd1dacb9).

Несовместимые изменения

Отсутствуют. Этот выпуск не вносит видимых пользователю нарушений рабочего процесса или поведения, и существующие проекты продолжают работать без изменений.