Strona główna Przykłady Zrzuty ekranu Instrukcja obsługi Logo Bluesky. YouTube ☰
OghmaNano Platforma do symulacji wielofizycznych procesów zachodzących w optoelektronicznych urządzeniach i systemach fotonicznych. POBIERZ Przewodnik szybkiego uruchomienia

Wprowadzenie do programowania skryptów

1. Konfiguracja środowiska do tworzenia skryptów

Korzystanie ze skryptów to bardziej zaawansowany sposób interakcji z OghmaNano. Zamiast korzystać z graficznego interfejsu użytkownika, można użyć preferowanego języka programowania do komunikacji z OghmaNano. Dzięki temu można sterować symulacjami w znacznie bardziej efektywny sposób niż tylko za pomocą graficznego interfejsu. Poniżej przedstawiam przykłady użycia MATLAB i Pythona do sterowania OghmaNano, ale można użyć dowolnego języka, który obsługuje odczyt i zapis danych w formacie JSON. Perl i Java to dwa języki, które przychodzą mi do głowy.

Zanim zaczniesz pisać skrypty dla OghmaNano, musisz poinformować system, gdzie zainstalowano OghmaNano. Domyślnie OghmaNano jest instalowany w folderze C:\Program Files x86\OghmaNano. W tym folderze znajdują się dwa pliki wykonywalne: oghma.exe, który odpowiada za graficzny interfejs użytkownika, oraz oghma_core.exe. Możesz uruchomić oghma_core.exe z wiersza poleceń bez uruchamiania oghma.exe. Wystarczy przejść do folderu zawierającego folder sim.oghma i uruchomić oghma_core.exe. Można to zrobić z wiersza poleceń systemu Windows, z poziomu MATLAB-a, Pythona lub dowolnego innego języka skryptowego. Jednak zanim to zrobisz w systemie Windows, musisz dodać ścieżkę C:\Program Files x86\OghmaNano do zmiennej środowiskowej PATH, aby system Windows wiedział, gdzie zainstalowano OghmaNano. Przykład, jak to zrobić w nowoczesnej wersji systemu Windows, znajduje się pod adresem https://docs.microsoft.com/en-us/previous-versions/office/developer/sharepoint-2010/ee537574(v=office.14).

Wygląda na to, że w każdej nowej wersji systemu Windows opcje konfiguracyjne są rozmieszczone w inny sposób, więc być może trzeba będzie znaleźć instrukcje dotyczące konkretnej wersji systemu Windows, której się używa.

2. Dodatkowe wskazówki dotyczące tworzenia skryptów.

OghmaNano JSON Explorer showing the simulation data structure as a tree of JSON objects
Narzędzie JSON Explorer wyświetla strukturę danych sim.json w postaci drzewa, po którym można się poruszać.

Wyobraź sobie interfejs graficzny jako uporządkowany program do przeglądania danych w formacie JSON.

Przydatnym modelem mentalnym podczas tworzenia skryptów dla OghmaNano jest traktowanie całego interfejsu graficznego jako uporządkowanego przeglądarki i edytora dla bazowego pliku sim.json. Każdy element interfejsu, suwak, tabela i okno dialogowe ostatecznie odczytuje dane z tego pliku i zapisuje je w nim. Nie istnieje oddzielny „stan interfejsu graficznego” – plik JSON stanowi ten stan. W sekcji „Automatyzacja” na wstążce narzędzi, narzędzie „Eksplorator JSON” (rycina ??) umożliwia bezpośredni przegląd pliku sim.json w postaci hierarchicznej struktury drzewa. Jest to często najszybszy sposób na zrozumienie, gdzie dany parametr jest zdefiniowany w pliku JSON, oraz na potwierdzenie, że akcja w interfejsie graficznym zapisuje dane w oczekiwanym polu.

Sprawdzanie obiektów za pomocą funkcji kopiuj i wklej.

Kolejną przydatną techniką jest wykorzystanie mechanizmu kopiowania i wklejania w całym interfejsie graficznym. Kiedy kopiujesz obiekt – na przykład, klikając prawym przyciskiem myszy i kopiując warstwę w edytorze warstw lub kopiując wybrany obiekt w widoku 3D – OghmaNano może umieścić podstawową strukturę JSON, odpowiedzialną za generowanie danego obiektu, bezpośrednio w schowku.

Jeśli wkleisz zawartość schowka do edytora tekstu (Notatnik, Notepad++, VS Code itp.), możesz sprawdzić dokładny blok JSON, który służy do zdefiniowania danego obiektu lub wpisu w tabeli. Dzięki temu uzyskasz bezpośredni i jednoznaczny wgląd w sposób, w jaki obiekt jest reprezentowany wewnętrznie, co często jest najszybszą metodą identyfikacji odpowiednich kluczy do wykorzystania w skryptach.

W wielu menu kontekstowych dostępne są również opcje takie jak „Kopiuj JSON”, „Kopiuj ścieżkę JSON” lub „Kopiuj ścieżkę zapisaną w skrypcie”. Te polecenia ujawniają dokładną lokalizację obiektu w hierarchii JSON, co znacznie ułatwia znalezienie i modyfikację odpowiedniego elementu w skryptach.

Jeśli naprawdę nie wiesz, co robić: skorzystaj z narzędzia do porównywania plików.

Jeśli nie jesteś pewien, w jaki sposób dany element interfejsu graficznego użytkownika (GUI) jest powiązany z plikiem sim.json, prostą i skuteczną metodą debugowania jest użycie narzędzia do porównywania plików.

  1. Utwórz kopię zapasową pliku symulacji, na przykład skopiuj plik sim.json do sim.back.
  2. Zmień jeden parametr w interfejsie graficznym.
  3. Porównaj zmodyfikowany plik sim.json z kopią zapasową, korzystając z narzędzia do porównywania plików, takiego jak KDiff3.
  4. Wynik porównania plików pokaże dokładnie, która linia (lub blok) w pliku JSON uległa zmianie, co pozwoli zrozumieć, jak dany element interfejsu graficznego jest reprezentowany wewnętrznie.

Często jest to najszybszy sposób na przypisanie elementu interfejsu użytkownika do określonego pola JSON, zwłaszcza w przypadku rozbudowanych struktur parametrów.

Wykorzystanie identyfikatorów obiektów do lokalizowania wpisów w sim.json.

OghmaNano object editor showing the object ID displayed at the bottom of the window
Edytor obiektów, w którym wyświetlany jest unikalny identyfikator obiektu, widoczny w dolnej części okna. To okno dialogowe zostało otwarte po kliknięciu prawym przyciskiem myszy na górnym kontakcie urządzenia i wybraniu opcji „Nagłówek obiektu”.

Większość elementów strukturalnych w OghmaNano – takich jak warstwy, kształty, skanowanie parametrów i inne hierarchiczne obiekty – otrzymuje unikalny identyfikator (ID), który zazwyczaj stanowi losowy ciąg szesnastkowy o długości około 16 znaków.

Identyfikator obiektu jest często wyświetlany bezpośrednio w interfejsie graficznym. Na przykład, na rysunku ?? identyfikator jest widoczny w lewym dolnym rogu okna edytora obiektu. Ten sam identyfikator pojawia się również w odpowiednim wpisie w pliku sim.json.

Te identyfikatory są niezwykle przydatne podczas przeglądania rozbudowanych lub głęboko zagnieżdżonych struktur JSON. Wyszukując ciąg znaków identyfikatora w sim.json, można natychmiast zlokalizować konkretny obiekt powiązany z danym elementem interfejsu użytkownika, nawet jeśli otaczająca go hierarchia jest złożona.