v4.0.1

v4.0.1 to gruntowna modernizacja, która przenosi OpenMV IDE z jego długo użytkowanej bazy Qt Creator 4.0.2 na Qt Creator 10.0.1. Cały stos wtyczek OpenMV (podgląd bufora ramki, port szeregowy/protokół, terminal, histogram, edytory progu i punktów kluczowych, narzędzia wideo oraz wrappery do programowania oprogramowania układowego) został ponownie zastosowany na nowej bazie, wraz z dopracowaną parą motywów Flat Light/Flat Dark, podświetlaniem składni Python świadomym OpenMV, ujednoliconym oknem dialogowym ładowania oprogramowania układowego oraz szerokim wsparciem dla wykrywania urządzeń na ARM64 Linux i macOS. Zmiana bazy Qt Creator to duża wewnętrzna modernizacja, ale nie psuje projektów użytkowników; kilka domyślnych zachowań i definicji płytek uległo jednak zmianie (zobacz Zmiany niekompatybilne).

Najważniejsze zmiany

  • Przejście na Qt Creator 10.0.1. IDE przechodzi z Qt Creator 4.0.2 na 10.0.1: oryginalny Qt Creator został ograniczony do podstaw kompilacji (98b95fd3b), a cała wtyczka OpenMV została ponownie dodana na nowej bazie (0e8047372).

  • Motywy Flat Light i Flat Dark. Dopracowana para motywów jasny/ciemny dostarczana jest z dopasowanymi niestandardowymi stylami podświetlania składni edytora; selektor motywu został ponownie udostępniony w ustawieniach ogólnych, ograniczony tylko do tych dwóch, a domyślnym motywem jest teraz flat-dark (21348924b, 13c3849e8).

  • Terminal szeregowy raw-REPL. Terminal teraz uruchamia, przerywa, przeładowuje i wkleja skrypty poprzez właściwą maszynę stanów raw-REPL MicroPython (CTRL-A/CTRL-D), niezawodnie obsługując większe skrypty (a7241079c).

  • Edycja Python świadoma OpenMV. Moduły, klasy, funkcje, metody i argumenty OpenMV są podświetlane składniowo na podstawie dołączonej dokumentacji, z inteligentniejszym autouzupełnianiem oraz mechanizmem auto-wcięć świadomym nawiasów/dwukropków (801eab8a8, 8e9f967e7, 9fdff9c6d).

  • Ujednolicone okno dialogowe ładowania oprogramowania układowego. Programowanie pokazuje teraz pojedyncze kontekstowe okno dialogowe (Kasowanie dysku / Programowanie oprogramowania układowego / Programowanie bootloadera) z paskiem postępu oraz zwijanym, zapamiętującym stan dziennikiem Pokaż/Ukryj szczegóły (5b51356f8).

  • Wsparcie dla OpenMV Cam RT1062. Dodano oprogramowanie układowe, loadery DFU/flash, wyliczanie SDP/blhost oraz krok programowania z wypalaniem eFuse dla nowej płytki klasy i.MX RT1060 (a6595f5f7), której następnie nadano odrębny wariant płytki Secure Bootloader (SBL) (d2b11c6c8).

Nowe funkcje

  • Flagi automatyzacji. Flagi -auto_update (release / development / ścieżka), -auto_erase oraz -auto_run pozwalają IDE załadować/skasować oprogramowanie układowe, a następnie uruchomić otwarty skrypt po połączeniu; po ponownym połączeniu bootloadera IDE czeka do 10 s na ponowne wyliczenie kamery, zanim kontynuuje (b54affe79, f4e03d978).

  • Flaga ``-disable_stop`` oraz przełącznik menu stop on connect/disconnect pozwalają użytkownikom wyłączyć zatrzymywanie skryptu przy połączeniu lub rozłączeniu (02724ca7d).

  • Przełącznik Stop Script on Connect/Disconnect (domyślnie włączony) oddziela połączenie/rozłączenie od zatrzymywania uruchomionego skryptu; automatyczne ponowne łączenie jest teraz domyślnie wyłączone (a0e78057f).

  • Pytanie o typ płytki. Gdy podłączona płytka zgłasza architekturę, której nie ma w mapowaniu oprogramowania układowego, IDE prosi teraz użytkownika o wybranie typu płytki (zapamiętując ostatni wybór) zamiast przerywać działanie błędem „Unsupported board architecture!” (b7165eb3d).

  • Podświetlanie składni Python OpenMV koloruje znane moduły, klasy, dane, funkcje, metody i argumenty OpenMV przy użyciu list słów kluczowych wypełnianych z dołączonej dokumentacji (801eab8a8, b4d481bf5).

  • ~300 definicji języków KSyntaxHighlighting dostarczanych jest z edytorem, więc pliki źródłowe w wielu językach są podświetlane od razu po instalacji (39674a4dc).

  • Dołączone przykładowe skrypty OpenMV (Hello World, zrzut obrazu, nagrywanie wideo, przepływ optyczny, kamery zdarzeniowe, global shutter, FLIR Lepton i inne) są teraz zapisane w repozytorium i dostarczane wraz z IDE (938ac6bbe).

  • Edytor binarny/szesnastkowy jest włączony, dzięki czemu użytkownicy mogą otwierać i przeglądać pliki binarne, z paskiem narzędzi przyciętym tak, aby pasował do interfejsu OpenMV (675bda966).

  • Porównywanie dokumentów w pamięci. Nowe pliki oraz przykłady tylko do odczytu otrzymują teraz wspierający plik tymczasowy, więc niezapisane dokumenty można porównywać, a okno dialogowe porównywania plików zewnętrznych zapamiętuje ostatnio użyty folder (5281e5f6c, 2934d5216).

  • Wtyczka edytora z zakładkami została ponownie dodana, dając IDE pasek dokumentów z zakładkami; źródła wtyczki minimapy zostały ponownie dodane, lecz pozostawione wyłączone w kompilacji dla tego wydania (0e8047372).

  • Programowanie awaryjne DfuSe i pydfu zostało przywrócone dla urządzeń DFU, których nie można wskazać po numerze seryjnym, z automatyczną obsługą kasowania bez okna dialogowego podczas łączenia (e42a5be7d).

  • Wypalanie eFuse i.MX RT. Programowanie oprogramowania układowego wypala teraz eFuse (efuse-program-once) dla płytek klasy RT1060 (8053bb578, a6595f5f7).

  • Strona kreatora Linux Root Installs pozwala użytkownikowi włączyć lub wyłączyć instalację bibliotek apt z podwyższonymi uprawnieniami oraz instalację reguł udev, zamiast zawsze je uruchamiać (6bac80984).

Pozostałe zmiany i usprawnienia

  • Skanowanie portów szeregowych w tle. Wyliczanie portów zostało przeniesione z wątku interfejsu do dedykowanego wątku roboczego ScanSerialPortsThread, więc IDE pozostaje responsywne podczas skanowania (7be4dab26).

  • Szersze wykrywanie urządzeń. Skanowanie portów zostało przebudowane w postać funkcji pomocniczej filterPorts() wielokrotnego użytku, która uwzględnia urządzenia picotool oraz i.MX DFU i reklasyfikuje znane porty szeregowe bootloadera Arduino (PID-y NRF/RPI old oraz loader) jako urządzenia DFU (25a5d30fd).

  • Więcej awaryjnych terminali. Przy uruchamianiu dołączonych narzędzi do odtwarzania wideo (Play Video File / Play RTSP Stream) na Linuksie IDE korzysta teraz awaryjnie z lxterminal, konsole oraz xfce4-terminal oprócz xterm i gnome-terminal (df54007e0).

  • Raportowanie kluczy płytek. Rejestracja kamery analizuje teraz odpowiedź „Remaining N”, aby poinformować użytkownika, ile kluczy płytek pozostało, i dodaje odrębny komunikat o błędzie „Invalid Board Key for Board Type” (5759e73eb).

  • Pobieranie hostowane na GitHub. Sprawdzanie wersji i pobieranie zasobów używa teraz raw.githubusercontent.com/openmv/openmv-ide-version oraz wydań openmv/openmv-ide zamiast upload.openmv.io (994109c28).

  • HTTPS wszędzie. Wszystkie żądania sieciowe OpenMV (sprawdzanie wersji, rejestracja SWD ID, pobieranie zasobów i oprogramowania układowego) używają teraz https:// (54347cad0).

  • Automatyzacja konfiguracji Linux. Instalator wykrywa brakujące biblioteki i reguły udev oraz, w razie potrzeby, generuje wykonywalny setup.sh z dokładnymi poleceniami instalacji apt-get/pip i reguł udev (oraz plik README instruujący użytkownika, aby go uruchomił) (c6dc705e6).

  • Tolerancja dla wolnych płytek. Terminal szeregowy zwiększa czas oczekiwania na pojedynczy odczyt z 1 ms do 10 ms i emituje potwierdzenie „OK”, gdy skrypt się zakończy (c935e4489).

  • Płynniejszy postęp programowania. Paski postępu ładowania oprogramowania układowego przełączają się teraz z trybu nieokreślonego na 0-100% natychmiast, a nie dopiero po pierwszym tyknięciu procentowym, w narzędziach dfu-util, bossac, picotool oraz przy programowaniu i.MX (19d947308, 86d021f92).

  • Odzyskiwanie starego bootloadera zostało ponownie dodane poprzez tryb bootloadera bez szybkiego dostępu, który wysyła polecenia kasowania/zapisu bez dopełnienia query-sync trybu szybkiego (c20112c07).

  • Czystsze konsole narzędzi. Terminale do programowania oprogramowania układowego (bossac, dfu-util, picotool, imx, narzędzia wideo) działają teraz jako samodzielne procesy konsolowe z lepiej sformatowanym wyjściem poleceń (8053bb578).

  • Dopracowanie autouzupełniania. Autouzupełnianie rozróżnia klasy, metody i funkcje za pomocą osobnych podpowiedzi argumentów, używa właściwych ikon modelu kodu i respektuje zakres public/protected/private na podstawie przedrostka podkreślenia; procesor uzupełniania słów kluczowych pomija też wiodące białe znaki przed kursorem przy jawnie (ręcznie) wywołanym uzupełnianiu (8e9f967e7, 68b26b5fc).

  • Skonsolidowane okna dialogowe. Doraźne okna dialogowe „Don’t show this again” OpenMV – w tym startowe okno informacyjne OpenMV Cam LED Colors oraz komunikaty o aktualizacji oprogramowania układowego i przykładach – zostały ujednolicone w oparciu o okna dialogowe „Do Not Ask/Show Again” CheckableMessageBox, do ustawień ogólnych dodano przycisk „Reset Do Not Ask/Show Again Dialogs”, a znaczniki zwijania kodu są domyślnie wyłączone (9fdff9c6d).

  • Branding świadomy motywu. Dodano ekrany powitalne w trybie ciemnym, ciemne/jasne logo układów ST i NXP w oknie informacyjnym, kolory podpowiedzi w trybie ciemnym oraz właściwe kolory ikon autouzupełniania (d85fdeb19, 9895a8395, f45ceaaea, 7f3e1f383).

  • Porządki w przeglądarce obrazów. Akcje udostępniania, tła, konturu oraz „ustaw jako domyślne” są ukryte, dodano akcję dopasowania do ekranu, a wymiarowanie animowanych obrazów zostało naprawione (b37c55e25).

  • Porządki w menu kontekstowym. Wpisy „Show in File System View”, „Open Terminal”, „File Properties” oraz „Add/Delete UTF-8 BOM on Save” są ukryte (5d862c78e).

  • Ciemny terminal szeregowy. Samodzielny terminal używa właściwego ciemnego motywu ze stylizowanymi paskami przewijania, zaktualizowanymi ikonami paska narzędzi oraz poprawnym przeładowywaniem ikon paska przewijania w trybie high-DPI na różnych ekranach (5c3af6880).

  • Porządki w Znajdź/Szukaj. Panel wyników zyskuje ciemny motyw, selektor wyszukiwarki jest ukryty, etykiety zostały uproszczone, a Znajdź w plikach domyślnie wskazuje na folder Documents/OpenMV (20a806550).

  • Tożsamość aplikacji. IDE pokazuje teraz właściwą ikonę OpenMV na pulpicie, pasku tytułu i pasku zadań (z obsługą high-DPI na Windows), a identyfikator IDE został zmieniony na openmvide (8ad1eed1f).

  • Ekran powitalny high-DPI wyświetla dwukrotnie powiększony obraz powitalny na wyświetlaczach Retina/o skali 200% (626ff673e).

  • Naprawa paska akcji. Lewy pasek akcji (New File, Open, Save, Undo, Redo, Cut, Copy, Paste) został naprawiony i otrzymał niestandardowe ikony OpenMV (b8479b5d0).

  • Logo w oknie informacyjnym. Pokazywane są teraz oba loga partnerów, Arduino i Edge Impulse (Edge Impulse było wcześniej ukryte), z dwukrotnie powiększonymi wariantami high-DPI, a dołączona grafika powitalna została zaktualizowana (splash-small-2 / splash-large-2) (5facd8d9a).

  • Zaznacz słowo pod kursorem jest włączone; polecenia Go to Block Start/End (Ctrl+[ / Ctrl+]) oraz Select Block Up/Down zostały na krótko ponownie włączone (36ed5b1a8), ale pozostawione wyłączone w wydaniu (626ff673e).

  • Wpis pulpitu Linux zyskuje kategorię Electronics, opisowy komentarz oraz słowa kluczowe wyszukiwania (embedded electronics, microcontroller, micropython, computer/machine vision) (470e5702e).

  • Migracja zasobów. Zasoby użytkownika zostały przeniesione do lokalizacji wersjonowanej (stary folder qtcreator jest usuwany przy starcie), a nieszkodliwe ostrzeżenia DirectWrite dotyczące krojów czcionek na Windows są tłumione (a04af5351, 70765dc2a).

  • Ukryte opcje wewnętrzne. Wewnętrzne opcje Core -color i -theme są ukryte z wyjścia pomocy, a tryb prezentacji został ponownie włączony (434c7b4cc).

  • Ponownie zastosowane podstawowe dostosowania do efektownego paska akcji/widżetu zakładek, menedżera komunikatów/okna wyjścia, akcji proxy, podświetlacza składni oraz edytora tekstu (0e8047372).

  • QCustomPlot 2.1.1. Dołączona biblioteka do wykresów została zaktualizowana pod kątem zgodności z Qt 6.4 oraz poprawnej obsługi dynamicznie zmieniającego się DPI wyświetlacza (8801415fe).

  • Kosmetyczne porządki w interfejsie dotyczące ikon strzałek pasków przewijania, paska statusu, przycisków zamykania na pasku zakładek dokumentów oraz szerokości suwaka edytora; wskaźnik edytora „Display File Line Ending” jest teraz domyślnie wyłączony (e0c4d2325, 6a26f4430, e130988fb).

Poprawki błędów

  • Naprawiono wykrywanie VID/PID na Linuksie poprzez odczyt /sys/class/tty/<port>/device/uevent w celu uzyskania prawdziwego VID/PID urządzenia, obchodząc sytuację, w której QSerialPortInfo zwraca identyfikatory koncentratora USB, dzięki czemu kamery za koncentratorami są poprawnie wykrywane (28220b351).

  • Naprawiono programowanie oprogramowania układowego bootloadera na Macu poprzez złagodzenie asercji rozmiaru punktu końcowego i dołączanie pakietu zapytania synchronizującego tylko wtedy, gdy zapis ma rozmiar dokładnie jednego punktu końcowego USB (86d021f92).

  • Naprawiono narzędzia odtwarzania wideo na Linuksie: Play Video File / Play RTSP Stream są teraz ukryte na 32-bitowym i ARM Linuksie (brak dołączonego ffplay), z awaryjnym użyciem gnome-terminal, gdy xterm jest niedostępny, a binarka ffmpeg dla macOS została przywrócona z atrapy (d342649cc, d896f4225).

  • Zwiększono opóźnienia startu/końca resetu bootloadera z 0 do 5, aby uniknąć nakładania się poleceń kasowania i zapisu podczas aktualizacji oprogramowania układowego (fabc168b6).

  • Usprawniono odzyskiwanie bootloadera: wymuszenie bootloadera w celu naprawy uszkodzonej kamery pomija zbędne komunikaty, a po resecie bootloadera DFU IDE automatycznie ponawia próbę aktualizacji zamiast prosić użytkownika o ponowne połączenie (12b924088).

  • Umożliwiono przerywanie poleceń zrzutu bufora ramki/bufora TX po szeregowym w trakcie transakcji (4a4afae1b).

  • Usunięto obejście rezygnacji przy zacięciu odczytu portu szeregowego, które mogło dopełniać odpowiedzi bajtami zerowymi, poprawiając niezawodność szybkiego transferu USB (0ee1d8e91).

  • Naprawiono debugowanie po WiFi i automatyczne ponowne łączenie: porty WiFi odświeżają znacznik czasu ostatniego wykrycia przy ponownym odnalezieniu, poprawiono kilka błędów typu iterator-po-skasowaniu w wycofywaniu portów WiFi oraz w wykrywaniu DFU/bootloadera, a automatyczne ponowne łączenie czeka teraz, aż IDE nie będzie zajęte, zanim ponownie się połączy (cf0b67dc6).

  • Naprawiono konwerter wideo do MJPEG, aby parsował liczbę klatek na sekundę z wyjścia kodera i zapisywał poprawną deltę milisekundową na klatkę, dzięki czemu skonwertowane wideo odtwarza się z właściwą prędkością (4a7ad2057).

  • Naprawiono brak uruchamiania programowania oprogramowania układowego i dołączonych narzędzi wiersza poleceń poprzez wymuszenie backendu QProcess i skorygowanie zabezpieczenia pętli zdarzeń procesu blokującego (200fe9f3c).

  • Naprawiono ikony gałęzi rozwijania/zwijania drzewa w edytorze zbiorów danych, aby renderowały się poprawnie na wyświetlaczach HiDPI, poprzez przeładowanie arkusza stylów ikon przy zmianie współczynnika pikseli urządzenia (a0e78057f).

  • Aktualizacje pakietów/zasobów automatycznie restartują teraz OpenMV IDE zamiast jedynie zamykać je po instalacji (178ee1b8e).

  • Naprawiono podświetlanie wyników Znajdź/wyszukiwania i sprawiono, że akcje wyniku wyszukiwania/otwarcia pliku przełączają się awaryjnie na pierwszy widoczny edytor, gdy nie ma bieżącego edytora (48c402dfc).

  • Naprawiono okno dialogowe ładowania oprogramowania układowego tak, aby jego tekst ostrzeżenia był czyszczony, a okno poprawnie zmieniało rozmiar po zakończeniu operacji programowania (c505c6ade).

  • Naprawiono kilka błędów interfejsu na macOS: pasek zakładek nie zalewa już logu błędami ładowania ikon i wyświetla się poprawnie przy otwarciu pliku (9be8c58de, 5322cf968).

  • Naprawiono stylizację paska statusu / panelu wyjścia oraz wyrównanie linii bazowej na macOS i Linuksie (4fc4545de, d29b2baa0, a440d5cd8).

  • Naprawiono drukowanie kodu źródłowego tak, aby nagłówek z tytułem strony miał właściwe górne i boczne marginesy zamiast dotykać krawędzi strony (786d6012c).

Wsparcie platform i narzędzi

  • Baza Qt Creator: 10.0.1 (przeniesiona z 4.0.2).

  • OpenMV IDE: 4.0.0 -> 4.0.1.

  • OpenMV Cam RT1062 (i.MX RT1060): początkowe oprogramowanie układowe RT1062, flash-loader, podpisane obrazy, wpis imx.txt oraz klucze konfiguracyjne blhost dla secure-bootloadera/eFuse zostały dodane w folderze oprogramowania układowego OPENMV5 (a6595f5f7); płytka została następnie skonsolidowana do pojedynczego folderu OPENMV_RT1060, a dodano odrębny wariant płytki Secure Bootloader (SBL) (OpenMV_Cam_RT1062_SBL) (d2b11c6c8, 5baf28c6e).

  • Dołączony łańcuch narzędzi do programowania (blhost, bossac, dfu-util, dfuse + sterowniki STM32, picotool, sdphost, ffmpeg, sterowniki FTDI/Arduino) został ponownie dołączony dla Windows/macOS/Linux, z binarkami dla Linuksa oznaczonymi jako wykonywalne (fbfa4903a, bfb6b32e2, 9551c64da).

  • ARM64 Linux DFU: dołączony dfu-util dla aarch64 wraz z wykrywaniem arm64 w liście urządzeń i pobieraniu oprogramowania układowego umożliwia programowanie DFU na hostach takich jak Raspberry Pi (16bc6fe0f, 470e5702e).

  • Wykrywanie urządzeń i.MX działa teraz na Linuksie (parsowanie lsusb) oraz macOS (skanowanie ioreg), umożliwiając ładowanie oprogramowania układowego i.MX RT na tych platformach (e03ccbe71, 7cf505d09).

  • Ograniczenia platformowe: użycie i.MX jest ograniczone do Windows/macOS/Linux-x86_64, z krytycznym błędem w innych przypadkach, a programowanie Portenta/Nicla na ARM/ARM64 Linux pokazuje ostrzeżenie „DFU Util may not be stable on this platform” (9513f6475).

  • Windows OpenGL: renderowanie programowe zostało przywrócone poprzez dołączenie opengl32sw, Qt6OpenGL oraz wsparcia OpenGL Qt6Gui w wdrażanym pakiecie (aaaa1928f).

  • Zmieniono nazwy folderów/identyfikatorów płytek Arduino. Foldery oprogramowania układowego oraz identyfikatory płytek w boards.txt dla Portenta, Nicla Vision i Nano 33 BLE Sense zmieniono na ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION oraz ARDUINO_NANO_33_BLE_SENSE (a70d6562a); folder/identyfikator płytki Nano 33 BLE Sense został następnie zapisany małymi literami jako arduino_nano_33_ble_sense, aby pasował do zgłaszanej przez urządzenie nazwy płytki (22750d8c7, a801a81de).

  • Bootloader OPENMV_RT1060 – zaktualizowano flash loadery (blhost_flash_loader.bin, sdphost_flash_loader.bin) (5baf28c6e).

  • QCustomPlot: 2.1.1 (dołączona biblioteka do wykresów) (8801415fe).

  • Obrazy oprogramowania układowego na dysku zostały ponownie dołączone dla wszystkich obsługiwanych płytek OpenMV/Arduino (OPENMV1-4P, OPENMV4_PRO, OPENMVPT, ARDUINO_NICLA_VISION, arduino_nano_33_ble_sense, ARDUINO_PORTENTA_H7, ARDUINO_NANO_RP2040_CONNECT, OPENMV_RT1060, CYW4343, plus oprogramowanie układowe WiFi WINC1500), wraz z obrazami oprogramowania układowego oraz, tam gdzie to dotyczy, bootloadera/uvc (fbfa4903a).

Zmiany niekompatybilne

Są to widoczne dla użytkownika zmiany przepływu pracy i zachowania; samo przejście na Qt Creator 10.0.1 nie psuje projektów ani skryptów użytkowników.

  • Zmieniono definicje płytek i.MX RT1060. Wpisy EVKBMIMXRT1060 i OPENMV5 zostały zastąpione pojedynczą płytką OPENMV_RT1060 (OpenMV Cam RT1062, plus wariant SBL), a stare foldery oprogramowania układowego zostały usunięte (d2b11c6c8).

  • Domyślny limit czasu odpowiedzi na polecenie wynosi 10000 ms (w 4.0.0 było 5000 ms); tekst pomocy -override_read_timeout został zaktualizowany odpowiednio (4a4afae1b).

  • Zmieniono zachowanie połączenia/rozłączenia. Automatyczne ponowne łączenie jest teraz domyślnie WYŁĄCZONE, a połączenie lub rozłączenie nie zatrzymuje już domyślnie uruchomionego skryptu, chyba że nowy przełącznik „Stop Script on Connect/Disconnect” jest włączony (jest on domyślnie włączony) (a0e78057f).

  • Przepływ aktualizacji restartuje IDE. Aktualizacje pakietów/zasobów automatycznie restartują teraz OpenMV IDE zamiast zamykać je po instalacji (178ee1b8e).

  • Zmieniono nazwy identyfikatorów płytek Arduino. Identyfikatory płytek w boards.txt oraz foldery oprogramowania układowego dla Portenta, Nicla Vision i Nano 33 BLE Sense zmieniono na ARDUINO_PORTENTA_H7, ARDUINO_NICLA_VISION oraz ARDUINO_NANO_33_BLE_SENSE (ten ostatni później zapisany małymi literami jako arduino_nano_33_ble_sense) (a70d6562a, 22750d8c7, a801a81de).