Adressen und Module

Die Adresse eines Knotens

hdvisionsystems/<app>/<module>/<folder>/...     die Knoten eines Moduls
hdvisionsystems/<app>/system/...                was die ganze App oder mehrere Module betrifft
types/hdvisionsystems/<app>/<type>              die FlatBuffers-Typen, die die App veröffentlicht
<app>

Der Name der App auf dem Data Layer, in Kleinbuchstaben mit -, zum Beispiel lumiscan-cam-driver. Er ist nicht immer der Name des Programms: Das Programm lumiscan-ai-obj-mat bedient lumiscan-ai-object-matching, und lumiscan-calib bedient lumiscan-calibration.

<module>

Eine Instanz innerhalb der App: eine Kamera, ein neuronales Netz, eine Kalibrierebene, ein Finder-Modul. Ihr Name stammt aus den Einstellungen der App. Die Code Reader haben keine Modulebene.

Beispiel: hdvisionsystems/lumiscan-cam-driver/camera1/control/connect-camera/request.

Modulnamen

  • Adressen sind kleingeschrieben. Ein Knoten, den Sie nicht finden, ist fast immer eine Abweichung in Groß-/Kleinschreibung oder Schreibweise.

  • Modulnamen bestehen aus Kleinbuchstaben, Ziffern, - und _. Cam Driver und AI Object Matching lehnen jeden anderen Modulnamen ab: Ein solches Modul erscheint nicht auf dem Data Layer. Calibration benennt ein Modul nach seiner Datei und verwendet den Namen in Kleinbuchstaben.

  • system ist reserviert und nie ein Modulname.

Die Ordner eines Moduls

Ordner Enthält

control/

die Funktionen: control/<function>/ready und request (ein Handshake), control/<function>/execute (eine Execute-Methode); den Status des Moduls control/status/code und control/status/text; die Streams control/publish/, control/subscribe/ und control/unsubscribe/

input/

was ein Client schreibt, bevor er eine Funktion startet

output/

die Ergebnisse der Funktionen, schreibgeschützt

setting/

eine schreibgeschützte Ansicht dessen, was das Modul anwendet, zum Beispiel setting/settings-hash und setting/stream/…​

Einige Apps haben eigene Ordner, zum Beispiel beim Cam Driver device-info/, transport-layer/ und features/.

Wo eine Funktion ihre Knoten ablegt

Eine Execute-Methode legt alles, was zu ihr gehört, unter ihrer Funktion ab:

<module>/control/<function>/execute
<module>/control/<function>/input/...
<module>/control/<function>/output/...

Ein Handshake hat ready und request unter seiner Funktion und verwendet die Eingaben und Ausgaben des Moduls:

<module>/control/<function>/ready
<module>/control/<function>/request
<module>/input/...
<module>/output/...
<module>/control/status/code, text

Eine Funktion, die beides hat - die meisten Funktionen von Cam Driver, AI Object Matching und Calibration -, verwendet für beide Aufrufarten input/ und output/ des Moduls.

Der Aufbau jeder App

Einige Apps behalten einen älteren Aufbau bei, damit Programme, die dafür geschrieben wurden, weiter funktionieren.

App Modul benannt nach Funktionen

Cam Driver

id in der Moduldatei

<module>/control/<function>/…​

AI Object Matching

name in der Moduldatei, default, falls keiner angegeben ist

<module>/control/<function>/…​

Calibration

dem Namen der Moduldatei ohne .json

<module>/control/<function>/…​

Template Finder, Object Finder, Area Detector, Text Reader

der an system/create-module übergebenen Modul-ID oder der gespeicherten Modulliste; standardmäßig module-1

<module>/<method>/execute, <module>/<method>/input/…​, <module>/<method>/output/…​, zum Beispiel module-1/find-template/execute; Streams unter <module>/control/

DMC, QR, Aztec und Barcode Reader

keine Modulebene

<app>/execute, <app>/input/…​, <app>/output/results; Streams unter <app>/control/

Cockpit

keine: Cockpit liest nur die Knoten der anderen Apps

Die genauen Knoten jeder App stehen in der Data Layer Reference ihres Handbuchs.

Der Knoten system

Alles, was nicht ein einzelnes Modul betrifft, liegt unter hdvisionsystems/<app>/system/: Module anlegen und entfernen, die Einstellungsdateien, die Geräteerkennung und Ressourcen, die alle Module gemeinsam nutzen. Die Code Reader haben dort nur system/meta/subscription-schema. Siehe Einstellungen, Module und Neustart.

Typen

Typ Verwendet für

bool, int16, int32, uint32, uint64, float32, float64, string

einfache Werte: Eingaben, Flags, Zähler, Statuscodes (int32)

Arrays dieser Typen

zum Beispiel die Koordinaten-Arrays von Calibration

FlatBuffers

Ergebnisse und Bilder. Ihre Schemas liegen auf dem Data Layer unter types/hdvisionsystems/<app>/…​

Bauen Sie SPS-Logik auf den einfachen Werten auf. Ein FlatBuffers-Ergebnis benötigt zum Dekodieren sein Schema; jedes Ergebnis, das eine SPS üblicherweise benötigt, ist auch als einfache Knoten verfügbar - siehe das Handbuch der App.