---
title: "Data-Layer-Referenz"
product: "LumiScan QR Code Reader"
component: "lumiscan-qr-code-reader-de"
version: "1.0.0"
display_version: "1.0.0.5"
latest_version: true
language: "de"
url: "https://docs.hdvisionsystems.com/de/lumiscan-qr-code-reader-de/1.0.0/lumiscan-qr-code-reader/datalayer-reference.html"
---

# Data-Layer-Referenz – LumiScan QR Code Reader

Alle Knoten liegen unter dem Basispfad der Anwendung:

```
hdvisionsystems/lumiscan-qr-code-reader/
```

Die Pfade unten sind relativ dazu angegeben. Ein einzelner Lesevorgang verwendet vier Knoten; der Bild-Stream (experimentell) ergänzt die Knoten unter [Bild-Stream](https://docs.hdvisionsystems.com/de/lumiscan-qr-code-reader-de/1.0.0/lumiscan-qr-code-reader/datalayer-reference.html#stream), und [System](https://docs.hdvisionsystems.com/de/lumiscan-qr-code-reader-de/1.0.0/lumiscan-qr-code-reader/datalayer-reference.html#system) sagt, was seine Quelle enthalten muss.

## Data Layer {#data-layer}

LumiScan QR Code Reader bietet seine Funktionen auf dem Data Layer unter `hdvisionsystems/lumiscan-qr-code-reader` an.

Auf ctrlX OS (ctrlX CORE oder ctrlX IPC) nutzt LumiScan QR Code Reader den [ctrlX Data Layer](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/ctrlx-data-layer.html).

Auf einem PC mit Windows 11 oder Ubuntu 24.04 nutzt LumiScan QR Code Reader [LumiScan Keryx](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/keryx.html).

Knotenadressen, Typen und Aufrufmuster sind auf beiden gleich. LumiScan QR Code Reader bietet:

- [Execute-Methoden](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/execute.html)
- ein [Stream](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/streams.html)-Abonnement auf eine Quelle (experimentell)
- keine Modulebene: Seine Knoten liegen direkt unter `hdvisionsystems/lumiscan-qr-code-reader`

Wie Adressen aufgebaut sind, wie Funktionen aufgerufen werden, die Statuscodes und die Werkzeuge sind in [LumiScan Keryx](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/index.html) beschrieben.

## Knotenbaum

```
hdvisionsystems/lumiscan-qr-code-reader/
├── input/
│   ├── image-address        (string)      address of the image node to read
│   └── parameter            (flatbuffers) detection parameters
├── execute                  (method)      read every QR code in that image
├── output/
│   └── results              (flatbuffers) one entry per code found
├── control/
│   ├── subscribe/                         the image stream (experimental)
│   │   ├── execute
│   │   ├── input/{enable,address,tag,queue-size,keep-latest-output}
│   │   └── output/stream/...              the image stream's results
│   └── unsubscribe/{execute,input/address}
├── setting/{stream,settings-hash}
└── system/meta/subscription-schema    (string)      what the stream's source must hold
```

## Eingabe

| Knoten | Typ | Zugriff | Beschreibung |
| --- | --- | --- | --- |
| `input/image-address` | string | lesen, schreiben | Adresse des zu lesenden Data-Layer-Bildknotens. Der Reader hängt `/data`, `/width`, `/height` und `/pixel-type` an. Standardmäßig leer, wodurch ein Durchlauf fehlschlägt, bis die Adresse gesetzt ist. |
| `input/parameter` | flatbuffers | lesen, schreiben | Erkennungsparameter, Typ `types/hdvisionsystems/lumiscan-qr-code-reader/code_detect_parameters`. Siehe den Hinweis unten. |

> [!NOTE]
> `input/parameter` enthält in dieser Version **keine Einstellungen** — seine Tabelle `DetectionParameters` ist leer. Der Knoten existiert, damit Feineinstellungen ergänzt werden können, ohne den Knotenbaum zu ändern. Ein Schreibzugriff darauf ändert nichts daran, wie ein Code gelesen wird. Auch der Bild-Stream liest ihn nicht.

## Methode

| Knoten | Blockierend | Wirkung |
| --- | --- | --- |
| `execute` | Ja | Liest das Bild unter `input/image-address` und schreibt jeden gefundenen QR-Code in `output/results`. Nimmt kein Argument entgegen — schreiben Sie einen leeren Wert. |

## Ausgabe

| Knoten | Typ | Zugriff | Beschreibung |
| --- | --- | --- | --- |
| `output/results` | flatbuffers | lesen | Jeder Code, den der letzte erfolgreiche Durchlauf gefunden hat, Typ `types/hdvisionsystems/lumiscan-qr-code-reader/code_detect_result`. Leeres Array, wenn das Bild keinen Code enthielt. Siehe [Das Ergebnis](https://docs.hdvisionsystems.com/de/lumiscan-qr-code-reader-de/1.0.0/lumiscan-qr-code-reader/the-result.html). |

## Bild-Stream (experimentell) {#stream}

Der Reader liest jeden Frame des abonnierten Cam-Driver-Streams, so wie `execute` ein Bild liest, und veröffentlicht ein Ergebnis pro Frame. Siehe [Codes auf einem Bild-Stream lesen](https://docs.hdvisionsystems.com/de/lumiscan-qr-code-reader-de/1.0.0/lumiscan-qr-code-reader/reading-codes-on-an-image-stream.html).

| Knoten | Typ | Zugriff | Beschreibung |
| --- | --- | --- | --- |
| `control/subscribe/input/enable` | bool | lesen, schreiben | Stream-Modus: `true` lässt den Stream laufen, `false` stoppt ihn. |
| `control/subscribe/input/address` | string | lesen, schreiben | Die eine Quelle: der Stream-Ordner einer Kamera, zum Beispiel `hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream`. Eine andere Adresse ersetzt sie. |
| `control/subscribe/input/tag` | string | lesen, schreiben | Das Tag auf den Ergebnissen des Readers: Der Schritt des Readers in der Lineage jedes Stream-Ergebnisses trägt es. Leer: der Name des Readers, `lumiscan-qr-code-reader`. Ein neues Tag behält die Quelle; das nächste Ergebnis trägt es. |
| `control/subscribe/input/queue-size` | uint32 | lesen, schreiben | Wie viele Frames warten dürfen, während ein Frame gelesen wird, 1 bis 64. |
| `control/subscribe/input/keep-latest-output` | bool | lesen, schreiben | `true`, um jedes Stream-Ergebnis zusätzlich in `output/results` zu schreiben. |
| `control/unsubscribe/input/address` | string | lesen, schreiben | Die zu entfernende Quelle, so wie `setting/stream/address` sie zeigt. |
| `setting/stream/enable`, `address`, `tag`, `queue-size`, `keep-latest-output` | wie die Eingaben | lesen | Was `control/subscribe/execute` oder `control/unsubscribe/execute` zuletzt angewendet hat, so wie `qr-code-reader.json` es unter `stream` speichert. |
| `setting/settings-hash` | string | lesen | Der Hash dessen, womit die Ergebnisse erzeugt werden, als 16 Hexziffern. |
| `control/subscribe/output/stream/active` | bool | lesen | `true`, solange der Stream läuft. |
| `control/subscribe/output/stream/result` | flatbuffers | lesen | Ein Ergebnis pro gelesenem Frame, Typ `types/hdvisionsystems/lumiscan-qr-code-reader/stream_codes`: die `lineage` des Frames und `result`, die Tabelle, die auch `output/results` enthält. Abonnieren Sie ihn, um jedes Ergebnis zu erhalten. |
| `control/subscribe/output/stream/last-failure` | string | lesen | Warum der letzte Frame, der nicht gelesen werden konnte, fehlgeschlagen ist; nennt die Quelle mit ihrer Adresse. |
| `control/subscribe/output/stream/statistics/elapsed-ms`, `received-frames`, `processed-frames`, `skipped-frames`, `failed-frames`, `lost-frames`, `processing-us` | uint64 | lesen | Die Zähler des Streams, siehe [Die Statistik lesen](https://docs.hdvisionsystems.com/de/lumiscan-qr-code-reader-de/1.0.0/lumiscan-qr-code-reader/reading-codes-on-an-image-stream.html#statistics). |

| Knoten | Blockierend | Wirkung |
| --- | --- | --- |
| `control/subscribe/execute` | Ja | Prüft die Eingaben von `control/subscribe` gemeinsam, speichert sie in `qr-code-reader.json` und wendet sie dann an. Das Schreiben einer Eingabe allein ändert nichts. Wird abgelehnt bei Stream-Modus ohne Adresse oder einer Warteschlangengröße außerhalb von 1 bis 64. |
| `control/unsubscribe/execute` | Ja | Entfernt die in `control/unsubscribe/input/address` genannte Quelle, womit der Stream-Modus endet; das Tag bleibt. Wird wie ein Subscribe in `qr-code-reader.json` gespeichert. Wird abgelehnt, wenn die Adresse nicht die Quelle ist. |

Die Eingaben von `control/subscribe` beginnen mit dem, was angewendet ist, und nur `control/subscribe/execute` wendet sie an. Wenn `qr-code-reader.json` nicht geschrieben werden kann, antworten beide Methoden mit `CreationFailed` (ctrlX `DL_CREATION_FAILED`) und ändern nichts. Ein abgelehnter Aufruf antwortet mit `Rejected` (ctrlX `DL_INVALID_VALUE`). Siehe [Ergebnisse eines Methodenaufrufs](https://docs.hdvisionsystems.com/de/lumiscan-keryx-de/1.0.0/status-codes.html#method-results).

## System (experimentell) {#system}

| Knoten | Typ | Zugriff | Beschreibung |
| --- | --- | --- | --- |
| `system/meta/subscription-schema` | string | lesen | Was der Knoten, den der Reader abonniert, enthalten muss: ein JSON Schema (draft-04) seiner JSON-Form. Hier der Knoten `frame` des abonnierten Stream-Ordners, ein `stream_image`: ein Objekt mit `lineage` und `image`. Experimentell. |

## In dieser Version nicht vorhanden

Wer von den anderen LumiScan-Anwendungen kommt, sollte wissen, was diese Anwendung **nicht** veröffentlicht:

- **Kein Statusknoten.** Es gibt keinen `status-code` und keinen `status-text`; ein fehlgeschlagener Durchlauf wird nur im Anwendungsprotokoll gemeldet (auf ctrlX OS im Systemprotokoll von ctrlX OS) und lässt in `output/results` die Codes des vorherigen Durchlaufs stehen.
- **Kein Daten-Identifier.** Es gibt nichts, was zurückgegeben wird, sodass ein Ergebnis nicht der Anfrage zugeordnet werden kann, die es erzeugt hat.
- **Kein Ergebnisbild.** Die Anwendung rendert nichts — es gibt keinen Knoten `result-image` und keine Methode `plot`. Verwenden Sie LumiScan Cockpit, um die Codes im Bild gezeichnet zu sehen.
- **Keine Module.** Ein Reader pro Installation, unter dem einen Basispfad oben.
- **Keine Region of Interest.** Jeder Durchlauf durchsucht das gesamte Bild.
