Execute-Methoden
Eine Execute-Methode ist für eine Operation gedacht, die innerhalb von etwa 1 s abgeschlossen ist. Der Client
schreibt einen beliebigen Wert auf den execute-Knoten der Methode, und der Schreibvorgang kehrt zurück, wenn die
Operation abgeschlossen ist. Ein Schreibvorgang, kein Zustand, den man verfolgen muss.
Eine Methode aufrufen
-
Schreiben Sie die Eingaben der Methode. Eine Methode hat keine eigenen Argumente: Ihre Eingaben sind separate Knoten.
-
Schreiben Sie auf den
execute-Knoten der Methode, zum Beispielhdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute. -
Prüfen Sie beide Ergebnisse:
-
Das Ergebnis des Schreibvorgangs: Konnte die Operation überhaupt ausgeführt werden? Ein abgelehnter Schreibvorgang wird nie in eine Warteschlange gestellt. Siehe Ergebnisse eines Methodenaufrufs.
-
Der Ausgang: War die Operation erfolgreich? Wo Sie ihn lesen, hängt von der App ab, siehe unten.
-
-
Lesen Sie die Ausgaben.
Wo Eingaben, Ausgaben und Ausgang stehen
| Apps | Knoten | Eine fehlgeschlagene Operation zeigt sich als |
|---|---|---|
Cam Driver, AI Object Matching, Calibration |
|
|
Template Finder, Object Finder, Area Detector, Text Reader |
|
|
DMC, QR, Aztec und Barcode Reader |
|
der Schreibvorgang schlägt fehl; der Grund steht im Log der Anwendung |
Der status-code der Finder hat eigene Werte, siehe
Ausführungsstatus der Finder.
Die Funktionen unter system/ jeder App sind Methoden der zweiten Art:
system/<function>/execute mit input/… sowie output/status-code, status-text. Eine Funktion der
gesamten App im neueren Aufbau ist system/control/<function>/execute, zum Beispiel
system/control/restart/execute.
Wann eine Methode ausgeführt wird
Eine Methode von Cam Driver, AI Object Matching oder Calibration prüft dasselbe Signal
control/<function>/ready, das ihr Handshake verwendet, und wird abgelehnt, solange es false ist. Die meisten
Funktionen hängen von etwas ab, das vorher geschehen muss - eine verbundene Kamera, ein geladenes Netz, ein Bild
zum Speichern. Das Handbuch der App gibt an, wann jedes ready true ist.
Wird eine Methode abgelehnt, lesen Sie ihr ready zusammen mit control/status/code und status/text:
ready benennt die fehlende Vorbedingung, und der Statustext enthält noch die Meldung des Fehlers, der sie
verursacht hat.
Timeouts
Beachten Sie, dass der Aufrufer blockiert ist, bis die Methode zurückkehrt. Bei LumiScan Keryx gibt ein Client standardmäßig nach 2 s auf; der OPC UA Connector wartet bis zu 60 s auf einen Methodenaufruf. Eine Funktion, die länger dauern kann, wird nur als Handshake angeboten.
Eine Operation zur Zeit
Ein Modul führt jeweils eine Operation aus. Eine Methode, die aufgerufen wird, während eine andere Operation
desselben Moduls läuft - ein Execute, ein Handshake oder bei den Findern ein Bild eines
Streams -, wird als belegt abgelehnt (TooManyOperations, ctrlX DL_TOO_MANY_OPERATIONS). Wiederholen Sie den
Aufruf: Derselbe Aufruf gelingt, sobald die laufende Operation abgeschlossen ist.
Eine Operation, die mit einem laufenden Stream kollidiert, wird anders abgelehnt: capture des Cam Driver und
inference von AI Object Matching sind nicht bereit, solange ihr Stream läuft
(InvalidOperationMode, ctrlX DL_INVALID_OPERATION_MODE). Wiederholen hilft nicht; stoppen Sie zuerst den
Stream, siehe Streams.