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

  1. Schreiben Sie die Eingaben der Methode. Eine Methode hat keine eigenen Argumente: Ihre Eingaben sind separate Knoten.

  2. Schreiben Sie auf den execute-Knoten der Methode, zum Beispiel hdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute.

  3. Prüfen Sie beide Ergebnisse:

    1. Das Ergebnis des Schreibvorgangs: Konnte die Operation überhaupt ausgeführt werden? Ein abgelehnter Schreibvorgang wird nie in eine Warteschlange gestellt. Siehe Ergebnisse eines Methodenaufrufs.

    2. Der Ausgang: War die Operation erfolgreich? Wo Sie ihn lesen, hängt von der App ab, siehe unten.

  4. Lesen Sie die Ausgaben.

Wo Eingaben, Ausgaben und Ausgang stehen

Apps Knoten Eine fehlgeschlagene Operation zeigt sich als

Cam Driver, AI Object Matching, Calibration

<module>/control/<function>/execute; input/…​ und output/…​ des Moduls, dieselben, die der Handshake verwendet

control/status/code und text, während der Schreibvorgang selbst meldet, dass sie ausgeführt wurde. Lesen Sie nach dem Schreibvorgang immer den Status. Ein abgelehnter Schreibvorgang lässt den Status unverändert

Template Finder, Object Finder, Area Detector, Text Reader

<module>/<method>/execute, <module>/<method>/input/…​, <module>/<method>/output/result, output/status-code, output/status-text

<method>/output/status-code und status-text, und der Schreibvorgang schlägt mit dem passenden Ergebnis fehl

DMC, QR, Aztec und Barcode Reader

<app>/execute, <app>/input/…​, <app>/output/results

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.