v1.7.0

v1.7.0 dodaje dzielenie na fragmenty i ponowne składanie bufora ramki przez łącze szeregowe, dzięki czemu duże ramki można przesyłać przez debugowe łącze szeregowe, czyni rozłączanie z resetem bezpieczniejszym poprzez opróżnienie (a w systemie Windows wysunięcie) napędu pamięci masowej USB kamery oraz odświeża zestaw przykładów. Wydanie bazuje na Qt Creator 4.0.2 (ta sama baza co w poprzednim wydaniu) i dodaje obsługę kompilacji dla skompilowanych krzyżowo wbudowanych celów Linux, takich jak Raspberry Pi. Nie ma żadnych zmian łamiących zgodność.

Najważniejsze zmiany

  • Dzielenie bufora ramki na fragmenty przez łącze szeregowe — duże transfery bufora ramki są dzielone na fragmenty o rozmiarze MTU i ponownie składane w buforze pikseli, dzięki czemu duże ramki można przesyłać przez debugowe łącze szeregowe.

  • Bezpieczniejsze rozłączanie z resetem — napęd pamięci masowej USB kamery jest opróżniany przed resetem (a w systemie Windows wymuszane jest jego wysunięcie), dzięki czemu system plików jest najpierw synchronizowany.

  • Atomowy zapis plików — pliki main.py oraz pliki punktów kluczowych są zapisywane atomowo, co zapobiega uszkodzeniom i naprawia błąd ścieżki, który zapisywał main.py w niewłaściwej lokalizacji.

  • Raspberry Pi / wbudowany Linux — dołączono teraz obsługę kompilacji krzyżowej.

  • Odświeżone przykłady — zestaw Servo Shield, nowe dema wykrywania cech oraz przykłady wideo Image Reader/Writer.

Nowe funkcje

  • Dzielenie na fragmenty i ponowne składanie bufora ramki przez łącze szeregowe. Transfery bufora ramki są dzielone na fragmenty o rozmiarze MTU i ponownie składane w buforze pikseli, dzięki czemu duże ramki można przesyłać przez debugowe łącze szeregowe przy użyciu domyślnego MTU. Dodano uzgadnianie automatycznej negocjacji MTU w czasie działania z progiem wersji oprogramowania układowego ustawionym na 2.5.0, odpowiadającym oprogramowaniu układowemu 2.5.0 dołączonemu w tym samym commicie (96458ccef). Próg ten został następnie podniesiony do 9.9.9 na potrzeby wydania, czego nie zgłasza żadne dostarczane oprogramowanie układowe, więc kamery używają domyślnego MTU i negocjacja nie zachodzi (abd1dacb9).

  • Opróżnianie/wysuwanie przy rozłączaniu z resetem. Rozłączanie z resetem opróżnia teraz napęd pamięci masowej USB kamery przed resetem: w systemie Windows napęd jest wymuszanie wysuwany, podczas gdy w systemach Linux i macOS system plików napędu jest synchronizowany (syncfs / sync_volume_np). W razie niepowodzenia na wszystkich trzech platformach zgłaszany jest błąd Failed to eject (243618791, ff6b15aff, 1865ffd31, 4fd4e89cf).

  • Przykłady Servo Shield. Dodano zestaw przykładów 15-Servo-Shield demonstrujący serwa sterowane przez PCA9685, w tym sterownik pca9685.py oraz pomocnika servo.py (abd1dacb9).

  • Nowe przykłady wykrywania cech. Dodano find_circles (Hough), find_rects (próg czterostronny), find_numbers (rozpoznawanie cyfr LeNet) oraz szybkie i odporne przykłady regresji liniowej w katalogu 09-Feature-Detection (abd1dacb9).

  • Przykłady wideo i sterowania płytką. Dodano przykłady Image Reader/Writer do nagrywania i odtwarzania strumieni zrzutów obrazu z karty SD, przykład sterowania płytką RTC oraz uruchamiacz testów jednostkowych na kamerze (abd1dacb9).

Inne zmiany i ulepszenia

  • Przemianowano katalog przykładów 99-Tests (wcześniej 15-Tests) oraz dodano uruchamiacz unittests.py (abd1dacb9).

Poprawki błędów

  • Wzmocniono zapisywanie plików main.py oraz plików punktów kluczowych. Zapisy przełączono na atomowe zapisy FileSaver (zapis, a następnie finalizacja) w (4fd4e89cf), a brakujący separator ścieżki, który zapisywał main.py w niewłaściwej lokalizacji, został naprawiony w (1865ffd31).

  • Poprawiono niezawodność łącza szeregowego poprzez powiększenie bufora odczytu szeregowego do 1MB na wszystkich portach oraz wydłużenie limitu czasu zatrzymania odczytu, rozwiązując problem gubionych danych przy QSerialPort (7f68368dc).

  • Naprawiono usterkę układu rozdzielacza okna poprzez wyeksportowanie MainWindow i emitowanie sygnału zdarzenia pokazania, dzięki czemu wtyczka OpenMV może przywrócić układ, gdy główne okno jest pokazywane (4895e20b7).

Obsługa platform i narzędzi

  • Baza Qt Creator: 4.0.2.

  • Dodano obsługę kompilacji dla skompilowanych krzyżowo wbudowanych celów Linux, takich jak Raspberry Pi: wdraża czcionki Qt, naprawia obsługę chrpath/RPATH, buduje tłumaczenia przy użyciu plików binarnych hosta oraz dodaje brakującą zależność qml (73c052fcc, 8f0baa131, 5b9e9e82e, 45011ec2a).

  • Zaktualizowano dołączone oprogramowanie układowe OpenMV z 2.4.1 do 2.5.0 (96458ccef).

  • Przemianowano katalogi oprogramowania układowego OMV2/OMV3 na OPENMV2/OPENMV3 oraz dostarczono zaktualizowane, ponownie zbudowane pliki binarne oprogramowania układowego i bootloadera STM32F427 (OPENMV2) i STM32F765 (OPENMV3) (abd1dacb9).

Zmiany łamiące zgodność

Brak. To wydanie nie wprowadza żadnych widocznych dla użytkownika zmian w przepływie pracy ani zachowaniu, a istniejące projekty działają nadal bez zmian.