---
title: "Adressen und Module"
description: "Wie die Data-Layer-Adressen der LumiScan-Apps aufgebaut sind - Apps, Module, die Ordner control, input, output und setting, der Knoten system, Modulnamen und der Aufbau jeder App."
product: "LumiScan Keryx"
component: "lumiscan-keryx-de"
version: "1.0.0"
display_version: "1.0.0.7"
latest_version: true
language: "de"
url: "https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/addresses.html"
---

# Adressen und Module – LumiScan Keryx

## Die Adresse eines Knotens

```none
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 {#module-names}

- 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 {#folders}

| Ordner | Enthält |
| --- | --- |
| `control/` | die Funktionen: `control/<function>/ready` und `request` (ein [Handshake](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/handshake.html)), `control/<function>/execute` (eine [Execute-Methode](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/execute.html)); den Status des Moduls `control/status/code` und `control/status/text`; die [Streams](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/streams.html) `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 {#layout}

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

```none
<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:

```none
<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 {#layouts-per-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 {#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](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/settings-and-modules.html).

## Typen {#types}

| 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.
