Grundkonzept des Handshakes
Jede Funktion eines Moduls kann mit einem Handshake auf zwei Knoten gestartet werden, ready und request
(Tabelle 1). Eine Funktion kann stattdessen auch mit einem einzigen Schreibzugriff auf ihre
execute-Methode gestartet werden, siehe
Execute-Methoden. Der Handshake aller
LumiScan-Anwendungen ist unter Handshake beschrieben; LumiScan
Calibration folgt seinem Ablauf genau.
| Adresse | Beschreibung |
|---|---|
|
Schreibgeschützt. Vom Modul gesetzt: |
|
Beschreibbar. Vom Client gesetzt, um die Funktion zu starten. |
<module address> ist hdvisionsystems/lumiscan-calibration/<module name>, und der Funktionsname
ist transform oder reset. Die Eingaben einer Funktion liegen unter <module address>/input/ und ihre Ergebnisse
unter <module address>/output/. Die Knoten jeder Funktion finden Sie in
Tabelle 2.
Eine Funktion ausführen
-
Warten Sie, bis
control/<function name>/readytrueist. -
Hat die Funktion Eingaben, schreiben Sie sie, zum Beispiel
input/x-coordinateundinput/y-coordinate. -
Setzen Sie
control/<function name>/requestauftrue. -
Warten Sie, bis
control/<function name>/readyfalseist: Das Modul hat den Request erkannt. -
Setzen Sie
control/<function name>/requestauffalse. -
Das Modul führt die Funktion aus.
-
Wenn die Funktion abgeschlossen ist, ist
control/<function name>/readywiedertrue. -
Lesen Sie
control/status/codeund die Ergebnisse unteroutput/.
%% Der ready/request-Handshake. Mermaid rendert es im Browser; bearbeiten und Vorschau unter https://mermaid.live sequenceDiagram autonumber participant C as Client (SPS oder Programm) participant M as Modul M-->>C: ready = true: die Funktion kann starten C->>M: request = true M-->>C: ready = false: die Anforderung wurde gesehen C->>M: request = false Note over M: führt die Funktion aus M-->>C: ready = true: die Funktion ist fertig C->>M: control/status/code und output/ lesen
Gut zu wissen:
-
Das Modul wartet darauf, dass
requestzurückfällt, so lange es dauert. Es gibt kein Timeout, weil einrequest, das danach nochtrueist, als neuer Request gelesen würde. -
Ein Reset, der angefordert wird, während ein Transform darauf wartet, dass sein
requestzurückfällt, hat Vorrang: Der Transform wird verworfen, und der Reset wird als Nächstes ausgeführt. -
Ein Fehlerstatus bleibt auf
control/status/codestehen bis zum nächsten Request.
|
Stellen Sie sicher, dass nur ein Prozess Ein Programm, das sich nicht mit anderen abstimmen kann, kann stattdessen die |