Einstellungen auf dem Data Layer
Data Layer
LumiScan Calibration bietet seine Funktionen auf dem Data Layer unter hdvisionsystems/lumiscan-calibration an.
Auf ctrlX OS (ctrlX CORE oder ctrlX IPC) nutzt LumiScan Calibration den ctrlX Data Layer.
Auf einem PC mit Windows 11 oder Ubuntu 24.04 nutzt LumiScan Calibration LumiScan Keryx.
Knotenadressen, Typen und Aufrufmuster sind auf beiden gleich. LumiScan Calibration bietet:
-
ein Stream-Abonnement auf eine Quelle (experimentell)
Wie Adressen aufgebaut sind, wie Funktionen aufgerufen werden, die Statuscodes und die Werkzeuge sind in LumiScan Keryx beschrieben.
LumiScan Calibration zeigt die Einstellungen, mit denen es gestartet wurde, auf dem Data Layer, auf
hdvisionsystems/lumiscan-calibration/system/settings. Sie können sie dort ohne Zugriff auf den Konfigurationsordner lesen und
dort ändern: Die Anwendung prüft eine Änderung, speichert sie in ihren Einstellungsdateien und verlangt einen
Neustart. hdvisionsystems/lumiscan-calibration/system/control/restart/execute startet sie neu.
Der Knoten system aller LumiScan-Anwendungen ist unter
Einstellungen, Module und Neustart beschrieben.
Wo ein Ergebnis unten nur einen Namen hat, etwa DL_OK oder DL_CREATION_FAILED, ist es der Name
auf dem ctrlX Data Layer; LumiScan Keryx meldet dasselbe Ergebnis unter eigenem Namen, siehe
Ergebnisse eines Methodenaufrufs.
Was der Knoten zeigt
settings enthält ein JSON-Dokument, als Text:
-
die Anwendungs-Einstellungsdatei
lumiscan-calibration.json, so wie sie gelesen wurde; -
in ihrer Liste
modulesden Inhalt jeder Modul-Konfigurationsdatei anstelle des Dateinamens."$file"nennt die Datei, aus der jedes Modul stammt; -
eine Moduldatei, die nicht gelesen werden konnte, erscheint als
{"$file": ..., "$error": ...}, wobei"$error"den Grund nennt. Das ist auch der Grund, warum das Modul nicht gestartet ist; -
jeder Wert mit dem Namen
passwordwird als"***"angezeigt.
Zum Beispiel:
{
"$schema": "schemas/lumiscan-calibration.schema.json",
"meta": { ... },
"modules": [
{
"$file": "example.json",
"$schema": "schemas/lumiscan-calibration-module.schema.json",
"transform": {
"name": "PlanarProjectionExample",
"relativePathToTiff": "example.tiff",
...
}
}
],
"system": { ... }
}
Kommentare in den Dateien werden nicht angezeigt.
Der Knoten zeigt die Dateien, wie die Anwendung sie beim Start gelesen hat. Der Reset eines Moduls liest dessen Moduldatei erneut ein, und der Knoten zeigt dann diese Datei, wie sie gelesen wurde.
Die Einstellungen ändern
Lesen Sie settings, ändern Sie, was Sie brauchen, und schreiben Sie das ganze Dokument zurück. Es gelten diese Regeln:
-
Jedes Modul behält sein
"$file". Es muss eine der Moduldateien der Anwendung benennen: Ein Modul kann hier nicht hinzugefügt werden. Wie Sie eines hinzufügen, siehe Module hinzufügen und entfernen. -
Ein Modul, das in
modulesweggelassen wird, ist inlumiscan-calibration.jsonnicht mehr aufgeführt. Seine Datei bleibt, wo sie ist. -
"***"für ein Passwort behält das Passwort, das die Datei enthält. Jeder andere Wert ersetzt es. -
Eine Datei, deren Inhalt sich nicht ändert, wird nicht geschrieben. Eine geänderte Datei wird nur dort geändert, wo sich ihr Inhalt geändert hat: Kommentare und Layout bleiben erhalten. Ein neuer Schlüssel oder ein neues Listenelement kommt hinter das letzte vorhandene; ein entfernter Schlüssel geht mit seiner Zeile, einschließlich eines Kommentars in dieser Zeile. Nur ein Objekt, das sowohl Schlüssel gewonnen als auch verloren hat, oder eine Liste, die ein Element verloren hat, wird neu geschrieben, ohne die Kommentare darin. Die vorherige Datei wird daneben als
<file>.bakaufbewahrt. -
Ein Schlüssel wie
"_comment"ist Inhalt wie jeder andere, er wird also angezeigt und erhalten.
Die Anwendung prüft die Änderung, bevor etwas geschrieben wird: Die Anwendungs-Einstellungsdatei muss sich laden lassen, und jede geänderte
Modul-Konfigurationsdatei muss ihre Lookup-Tabelle und ihren Abschnitt stream laden können, wie bei einem Reset. Eine
Lookup-Tabelle, die nicht existiert, wird abgelehnt. Eine Änderung, die die
Prüfung ablehnt oder die kein gültiges JSON ist, wird mit DL_INVALID_VALUE (ctrlX Data Layer)
oder Rejected (LumiScan Keryx) beantwortet. Der Grund steht im Protokoll, und nichts wird geschrieben.
Eine Änderung, die nichts schreibt, antwortet mit DL_OK und ändert nichts.
Neustart erforderlich
Eine gespeicherte Änderung wird erst mit dem nächsten Start wirksam. Bis dahin läuft die Anwendung mit Einstellungen, die nicht mehr die ihrer Dateien sind, und stellt deshalb die Arbeit ein:
-
hdvisionsystems/lumiscan-calibration/system/restart-requiredisttrue; -
hdvisionsystems/lumiscan-calibration/system/status-textnennt die geänderten Dateien; -
jedes Modul meldet Status
-5(restartRequired). Es beantwortet keinen Request, und seineready-Signale sindfalse; -
jede
execute-Methode eines Moduls antwortet mitDL_RESOURCE_UNAVAILABLE. Das schließtresetein, das sonst einen Teil der neuen Einstellungen laden würde; -
ein laufender Stream stoppt.
Nur ein Neustart beendet das. Ein Reset nicht. Das Protokoll enthält die Meldung auf der Stufe Error.
Weitere Änderungen sind in der Zwischenzeit möglich. Nach einer Änderung zeigt settings die Dateien wie gespeichert,
also das, was der nächste Start lädt, nicht das, womit die Anwendung läuft.
Konnte eine Datei nicht gespeichert werden, antwortet der Schreibzugriff mit DL_CREATION_FAILED. Davor geänderte Dateien bleiben
geändert, sodass die Anwendung trotzdem einen Neustart erfordert. Korrigieren Sie die Dateien, und starten Sie dann neu.
Module hinzufügen und entfernen
Drei Methoden von hdvisionsystems/lumiscan-calibration/system verwalten Module, jede unter control/<method>/, wie control/restart. Jede nimmt die ID des Moduls, den Namen seiner Datei
ohne .json, in control/<method>/input/module-id entgegen:
| Methode | Was sie tut |
|---|---|
|
Schreibt die Moduldatei |
|
Fügt |
|
Nimmt |
Jede Methode meldet auf control/<method>/output/status-code und control/<method>/output/status-text:
| Code | Bedeutung |
|---|---|
1 |
Erledigt. |
-2 |
Die Eingabe oder das Modul wurde abgelehnt: |
-6 |
Eine Datei konnte nicht geschrieben werden. |
-9 |
|
-10 |
|
Die Methode antwortet mit DL_OK, wenn sie fertig ist, mit DL_INVALID_VALUE (ctrlX Data Layer) oder
Rejected (LumiScan Keryx), wenn sie abgelehnt hat, und mit
DL_CREATION_FAILED, wenn eine Datei nicht geschrieben werden konnte. Zum Beispiel, um das Modul
conveyor hinzuzufügen:
-
Schreiben Sie das JSON des Moduls auf
hdvisionsystems/lumiscan-calibration/system/control/create-module/input/contentundconveyoraufcontrol/create-module/input/module-id, und rufen Sie danncontrol/create-module/executeauf. -
Schreiben Sie
conveyoraufcontrol/activate-module/input/module-id, und rufen Sie danncontrol/activate-module/executeauf. -
Rufen Sie
hdvisionsystems/lumiscan-calibration/system/control/restart/executeauf.
Die Anwendung neu starten
hdvisionsystems/lumiscan-calibration/system/control/restart/execute beendet die Anwendung und startet sie erneut. Sie liest ihre
Einstellungsdateien neu ein, was auch von Hand an den Dateien vorgenommene Änderungen anwendet, und beendet
restart-required.
-
Auf ctrlX OS: Die Anwendung beendet sich, und ctrlX OS startet sie nach etwa fünf Sekunden erneut.
-
Auf einem PC: Die Anwendung startet sich selbst erneut, sobald sie alles freigegeben hat, was sie belegt hatte. Sie verwendet dasselbe Programm, dieselben Argumente und denselben Arbeitsordner. Es ist ein neuer Prozess in derselben Konsole, und seine Ausgabe geht dorthin, wohin die des ersten ging.
Die Methode antwortet mit DL_OK, sobald der Neustart begonnen hat. Die Knoten der Anwendung verschwinden dann,
bis sie wieder läuft: Warten Sie, bis hdvisionsystems/lumiscan-calibration/system/restart-required wieder gelesen werden kann.
| Ein Neustart ist nicht an eine Änderung gebunden. Er startet auch eine Anwendung neu, deren Einstellungen sich nicht geändert haben. |