Data Layer Reference

All nodes live under the application’s base path:

hdvisionsystems/lumiscan-qr-code-reader/

The paths below are given relative to it. A single read uses four nodes; the image stream (experimental) adds the nodes listed under Image stream, and System says what its source must hold.

Data Layer

LumiScan QR Code Reader offers its functions on the Data Layer under hdvisionsystems/lumiscan-qr-code-reader.

On ctrlX OS (ctrlX CORE or ctrlX IPC), LumiScan QR Code Reader uses the ctrlX Data Layer.

On a PC with Windows 11 or Ubuntu 24.04, LumiScan QR Code Reader uses LumiScan Keryx.

The node addresses, types and call patterns are the same on both. LumiScan QR Code Reader offers:

  • execute methods

  • a stream subscription to one source (experimental)

  • no module level: its nodes are directly under hdvisionsystems/lumiscan-qr-code-reader

How addresses are built, how to call functions, the status codes and the tools are described in LumiScan Keryx.

Node tree

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

Input

Node Type Access Description

input/image-address

string

read, write

Address of the Data Layer image node to read. The reader appends /data, /width, /height and /pixel-type. Empty by default, which makes a run fail until it is set.

input/parameter

flatbuffers

read, write

Detection parameters, type types/hdvisionsystems/lumiscan-qr-code-reader/code_detect_parameters. See the note below.

input/parameter carries no settings in this version — its DetectionParameters table is empty. The node exists so that tuning can be added without changing the node tree. Writing to it changes nothing about how a code is read. The image stream does not read it either.

Method

Node Blocking Effect

execute

Yes

Reads the image at input/image-address and writes every QR code found to output/results. Takes no argument — write an empty value.

Output

Node Type Access Description

output/results

flatbuffers

read

Every code found by the last successful run, type types/hdvisionsystems/lumiscan-qr-code-reader/code_detect_result. Empty array if the image held no code. See The Result.

Image stream (experimental)

The reader reads every frame of the Cam Driver stream it subscribes to, as execute reads an image, and publishes one result per frame. See Reading Codes on an Image Stream.

Node Type Access Description

control/subscribe/input/enable

bool

read, write

Stream mode: true runs the stream, false stops it.

control/subscribe/input/address

string

read, write

The one source: a camera’s stream folder, for example hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream. Another address replaces it.

control/subscribe/input/tag

string

read, write

The tag on the reader’s results: the reader’s step in the lineage of each stream result carries it. Empty: the reader’s name, lumiscan-qr-code-reader. A new tag keeps the source; the next result carries it.

control/subscribe/input/queue-size

uint32

read, write

How many frames may wait while a frame is read, 1 to 64.

control/subscribe/input/keep-latest-output

bool

read, write

true to write each stream result to output/results as well.

control/unsubscribe/input/address

string

read, write

The source to drop, as setting/stream/address shows it.

setting/stream/enable, address, tag, queue-size, keep-latest-output

as the inputs

read

What control/subscribe/execute or control/unsubscribe/execute applied last, as qr-code-reader.json keeps it under stream.

setting/settings-hash

string

read

The hash of what the results are made with, as 16 hex digits.

control/subscribe/output/stream/active

bool

read

true while the stream runs.

control/subscribe/output/stream/result

flatbuffers

read

One result per frame read, type types/hdvisionsystems/lumiscan-qr-code-reader/stream_codes: the frame’s lineage, and result, the table output/results holds. Subscribe to it to receive each one.

control/subscribe/output/stream/last-failure

string

read

Why the last frame that could not be read failed, naming the source by its address.

control/subscribe/output/stream/statistics/elapsed-ms, received-frames, processed-frames, skipped-frames, failed-frames, lost-frames, processing-us

uint64

read

The stream’s counters, see Reading the statistics.

Node Blocking Effect

control/subscribe/execute

Yes

Checks the inputs of control/subscribe together, saves them in qr-code-reader.json, then applies them. Writing an input alone changes nothing. Refused for stream mode without an address, or a queue size outside 1 to 64.

control/unsubscribe/execute

Yes

Drops the source named by control/unsubscribe/input/address, which ends stream mode; the tag stays. Saved in qr-code-reader.json like a subscribe. Refused when the address is not the source.

The inputs of control/subscribe start with what is applied, and only control/subscribe/execute applies them. When qr-code-reader.json cannot be written, both methods answer CreationFailed (ctrlX DL_CREATION_FAILED) and change nothing. A refused call answers Rejected (ctrlX DL_INVALID_VALUE). See Results of a method call.

System (experimental)

Node Type Access Description

system/meta/subscription-schema

string

read

What the node the reader subscribes to must hold: a JSON Schema (draft-04) of its JSON form. Here the frame node of the subscribed stream folder, a stream_image: an object with lineage and image. Experimental.

Not present in this version

Operators coming from the other LumiScan applications should know what this one does not publish:

  • No status node. There is no status-code or status-text; a failed run is reported in the application log only (the ctrlX OS system log on ctrlX OS), and leaves output/results holding the previous run’s codes.

  • No data identifier. There is nothing to echo back, so a result cannot be correlated with the request that produced it.

  • No result image. The application renders nothing — no result-image node and no plot method. Use LumiScan Cockpit to see the codes drawn on the picture.

  • No modules. One reader per installation, at the single base path above.

  • No region of interest. Every run searches the whole image.