Fehlerbehebung

Diese Seite beschreibt Probleme mit LumiScan Barcode Reader und wie Sie sie lösen. Beginnen Sie mit den allgemeinen Prüfungen, und suchen Sie dann unten Ihr Symptom: Jedes Problem nennt seine Symptome, die möglichen Ursachen, eine Diagnose und die Lösung. Probleme des Data Layer selbst sind unter Fehlerbehebung Data Layer beschrieben, Lizenzprobleme unter Fehlerbehebung Lizenzierung.

Allgemeine Prüfungen

  1. Lesen Sie das Protokoll der Anwendung. Auf ctrlX OS ist das Protokoll der Anwendung das Systemprotokoll. Der Reader schreibt den Grund dorthin, wenn ein Lauf fehlschlägt, wenn control/subscribe/execute oder control/unsubscribe/execute abgelehnt wird, wenn die Quelle des Bild-Streams nicht abonniert werden kann (der erste Fehlschlag), wenn Frames nicht gelesen werden können (höchstens eine Zeile alle 5 Sekunden) und wenn ein Wert in seiner Einstellungsdatei nicht verwendet werden kann.

  2. Prüfen Sie die Adressen. Alle Knoten liegen direkt unter hdvisionsystems/lumiscan-barcode-reader/; der Reader hat keine Module. Adressen sind kleingeschrieben. Erwartet: Ihre SPS oder Ihr Client verwendet genau diese Adressen, wie in der Data-Layer-Referenz aufgeführt.

  3. Prüfen Sie die Bildquelle. Die Anwendung, die den Bildknoten veröffentlicht, normalerweise LumiScan Cam Driver, muss auf demselben Gerät laufen (ctrlX OS) oder mit demselben LumiScan Keryx verbunden sein wie der Reader (PC). Erwartet: Der in input/image-address genannte Knoten stellt data, width, height und pixel-type bereit.

  4. Prüfen Sie, ob ein Lauf fehlgeschlagen ist. Dieser Reader veröffentlicht keinen Knoten status-code oder status-text. Ein fehlgeschlagener Lauf lässt output/results unverändert, mit den Codes des vorherigen Laufs. Lesen Sie output/results vor und nach dem Lauf und vergleichen Sie, oder prüfen Sie das Protokoll. Siehe Woran erkenne ich, ob ein Lauf fehlgeschlagen ist?.

  5. Prüfen Sie die Einstellungsdatei des Bild-Streams. Der Reader speichert seine Stream-Einstellungen in barcode-reader.json im Konfigurationsverzeichnis der Anwendung:

    Plattform Konfigurationsverzeichnis

    ctrlX OS

    /var/snap/rexroth-solutions/common/solutions/activeConfiguration/lumiscan-barcode-reader

    PC (Windows)

    %APP_RESOURCE_DIR%\etc\lumiscan-barcode-reader; ohne APP_RESOURCE_DIR C:\ProgramData\HD Vision Systems GmbH\LumiScan Vision Suite\lumiscan-barcode\etc\lumiscan-barcode-reader

    Die Datei wird einmal gelesen, beim Start der Anwendung: Von Hand vorgenommene Änderungen wirken beim nächsten Start. Ein Wert, der nicht verwendet werden kann, wird ignoriert und protokolliert; eine Datei, die kein gültiges JSON ist, wird ignoriert und protokolliert. Siehe In der Einstellungsdatei gespeichert.

Problem: Der Reader beendet sich beim Start

Symptome

Auf ctrlX OS beendet sich der Reader kurz nach dem Start. Seine Knoten unter hdvisionsystems/lumiscan-barcode-reader verschwinden aus dem Data Layer.

Mögliche Ursachen
  • Die ctrlX-Lizenz SWL-W-XCx-BARxxCRDSxHDVSx-V1NN ist auf dem ctrlX-OS-Gerät, auf dem der Reader läuft, nicht verfügbar. Die Lizenz wird beim Start bis zu zehn Sekunden lang geprüft; wird in dieser Zeit keine verfügbar, beendet sich der Reader.

Diagnose
  1. Öffnen Sie das Systemprotokoll von ctrlX OS - erwartet: der Grund für das Beenden. Das Systemprotokoll nennt die fehlende Lizenz.

  2. Prüfen Sie die Lizenzen im License Manager von ctrlX OS - erwartet: Die ctrlX-Lizenz SWL-W-XCx-BARxxCRDSxHDVSx-V1NN ist auf dem Gerät verfügbar, auf dem der Reader läuft. Ein Lizenzplatz deckt den Reader ab. Die Advanced-Lizenz SWL-W-XCx-BARxxCRDAxHDVSx-V1NN wird für den Start nicht benötigt: Ohne sie läuft der Reader mit den Standard-Funktionen.

Lösung
  • Wenn die ctrlX-Lizenz fehlt:

    1. Kaufen Sie die Lizenz SWL-W-XCx-BARxxCRDSxHDVSx-V1NN im ctrlX Store.

    2. Aktivieren Sie sie im License Manager von ctrlX OS auf dem Gerät, auf dem der Reader läuft. Folgen Sie dabei der Dokumentation von Bosch Rexroth für ctrlX OS.

    3. Starten Sie den Reader erneut. Erwartet: Er läuft weiter, und seine Knoten sind im Data Layer.

Wenn das Problem weiterhin besteht

Senden Sie die unter Informationen für den Support aufgeführten Informationen an den Support, zusammen mit den Zeilen des Systemprotokolls von ctrlX OS, die die Lizenz nennen. Für Lizenzen wenden Sie sich an licenses@hdvisionsystems.com.

Problem: output/results ist ein leeres Array

Symptome

Nachdem execute zurückgekehrt ist, enthält output/results ein leeres Array: CodeDetectResultArray.results hat keinen Eintrag. Im Bild-Stream hat ein Ergebnis auf control/subscribe/output/stream/result ein leeres Array results.

Mögliche Ursachen
  • Das Bild enthält keinen Barcode. Ein leeres output/results ist kein Fehler: Es bedeutet, dass das Bild erfolgreich gelesen wurde und keinen Barcode enthielt. Ein Lauf, der nichts gefunden hat, veröffentlicht ein leeres Array und keinen Fehler.

  • Der Code ist kein linearer (1D-)Barcode. Der Reader liest die lineare Familie von ZXing, zum Beispiel Code 128, Code 39, EAN-13 und UPC-A. Data-Matrix-, QR- und Aztec-Codes lesen seine Schwester-Apps.

  • input/image-address nennt einen Bildknoten, der den Code nicht zeigt. Jeder Lauf liest den gesamten aktuellen Inhalt des dort genannten Bildknotens.

  • Der letzte Lauf ist fehlgeschlagen, und das leere Array ist das Ergebnis eines früheren Laufs. Ein fehlgeschlagener Lauf lässt output/results unverändert. Ein Lauf schlägt fehl, wenn das Bild nicht gelesen werden kann: keine Adresse gesetzt, eine Adresse, die sich nicht auflösen lässt, ein fehlender oder zu kurzer data-Puffer oder ein nicht unterstütztes Pixelformat.

Diagnose
  1. Lesen Sie das Protokoll der Anwendung zum Zeitpunkt des Laufs - erwartet: kein Fehlschlag. Ein fehlgeschlagener Lauf schreibt seinen Grund dorthin; auf ctrlX OS ist das das Systemprotokoll.

  2. Lesen Sie input/image-address - erwartet: die Adresse des Bildknotens der Kamera, die den Code sieht, zum Beispiel hdvisionsystems/lumiscan-cam-driver/camera1/output/image.

  3. Prüfen Sie die Art des Codes - erwartet: ein linearer (1D-)Barcode, zum Beispiel Code 128, Code 39, EAN-13 oder UPC-A.

Lösung
  • Wenn das Bild keinen Barcode enthält: Mit dem Reader ist alles in Ordnung. Rufen Sie execute erneut auf, wenn der Bildknoten ein Bild mit dem Code enthält.

  • Wenn der Code kein linearer Barcode ist: Verwenden Sie die Schwester-App für seine Symbologie: LumiScan DMC Reader, LumiScan QR Code Reader oder LumiScan Aztec Code Reader. Sie funktionieren auf dieselbe Weise.

  • Wenn input/image-address einen anderen Bildknoten nennt:

    1. Schreiben Sie die Adresse des richtigen Bildknotens in input/image-address. Es ist die Adresse des Bildknotens selbst, nicht die seines Kindknotens data. Die Adresse wird gemerkt.

    2. Schreiben Sie einen leeren Wert in execute. Erwartet: output/results enthält einen Eintrag pro Code.

  • Wenn der letzte Lauf fehlgeschlagen ist: Beseitigen Sie den Grund, den das Protokoll nennt: Setzen Sie input/image-address, korrigieren Sie eine Adresse, die sich nicht auflösen lässt, oder sorgen Sie dafür, dass die Bildquelle vollständige data in einem unterstützten Pixelformat liefert (siehe Voraussetzungen). Schreiben Sie dann erneut einen leeren Wert in execute. Erwartet: Das Protokoll zeigt für diesen Lauf keinen Fehlschlag.

Wenn das Problem weiterhin besteht

Senden Sie die unter Informationen für den Support aufgeführten Informationen an den Support, zusammen mit dem Wert von input/image-address, width, height und pixel-type dieses Bildknotens und der Symbologie des Codes.

Problem: control/subscribe/execute wird abgelehnt

Symptome

Ein Schreibvorgang auf control/subscribe/execute (oder auf control/unsubscribe/execute) antwortet mit DL_INVALID_VALUE (ctrlX OS) oder Rejected (PC) oder mit DL_CREATION_FAILED (ctrlX OS) oder CreationFailed (PC) statt mit DL_OK (ctrlX OS) oder Ok (PC). Nichts hat sich geändert: setting/stream/ zeigt weiterhin die zuvor angewendeten Werte.

Mögliche Ursachen
  • DL_INVALID_VALUE / Rejected von control/subscribe/execute: Stream-Modus ohne Adresse oder eine Warteschlangengröße außerhalb von 1 bis 64.

  • DL_INVALID_VALUE / Rejected von control/unsubscribe/execute: Die Adresse ist nicht die Quelle, oder es gibt keine Quelle.

  • DL_CREATION_FAILED / CreationFailed: Die Einstellungsdatei barcode-reader.json konnte nicht geschrieben werden, zum Beispiel weil sie kein gültiges JSON ist.

Diagnose
  1. Lesen Sie die Antwort des Methodenaufrufs - erwartet: DL_OK oder Ok. DL_INVALID_VALUE oder Rejected weist auf eine Eingabe hin, DL_CREATION_FAILED oder CreationFailed auf die Einstellungsdatei.

  2. Lesen Sie das Protokoll der Anwendung - erwartet: der Grund für die Ablehnung. Auf dem ctrlX Data Layer trägt ein abgelehnter Aufruf keinen Grund; der Reader schreibt ihn in sein Protokoll.

  3. Lesen Sie nach einem abgelehnten control/subscribe/execute die Knoten control/subscribe/input/enable, control/subscribe/input/address und control/subscribe/input/queue-size - erwartet: eine Adresse, sobald enable true ist, und eine Warteschlangengröße von 1 bis 64.

  4. Vergleichen Sie nach einem abgelehnten control/unsubscribe/execute den Wert von control/unsubscribe/input/address mit setting/stream/address - erwartet: dieselbe Adresse. Ein / an einem der beiden Enden zählt nicht.

  5. Öffnen Sie nach DL_CREATION_FAILED oder CreationFailed die Datei barcode-reader.json im Konfigurationsverzeichnis (siehe Allgemeine Prüfungen) - erwartet: eine gültige JSON-Datei.

Lösung
  • Wenn der Stream-Modus keine Adresse hat: Schreiben Sie den Stream-Ordner der Kamera, zum Beispiel hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream, in control/subscribe/input/address, und schreiben Sie dann erneut auf control/subscribe/execute. Erwartet: DL_OK oder Ok.

  • Wenn die Warteschlangengröße außerhalb von 1 bis 64 liegt: Schreiben Sie einen Wert von 1 bis 64 in control/subscribe/input/queue-size, und schreiben Sie dann erneut auf control/subscribe/execute. Erwartet: DL_OK oder Ok.

  • Wenn die zu entfernende Adresse nicht die Quelle ist: Schreiben Sie die Adresse, die setting/stream/address anzeigt, in control/unsubscribe/input/address, und schreiben Sie dann erneut auf control/unsubscribe/execute. Ist setting/stream/address leer, gibt es keine Quelle, die entfernt werden kann.

  • Wenn die Einstellungsdatei nicht geschrieben werden konnte:

    1. Korrigieren Sie barcode-reader.json, sodass die Datei gültiges JSON ist. Auf einem PC schreibt lumiscan-barcode --generate-settings <folder> ein Beispiel, mit dem Sie beginnen können.

    2. Schreiben Sie erneut auf control/subscribe/execute. Erwartet: DL_OK oder Ok, und setting/stream/ zeigt die neuen Werte.

      Von Hand vorgenommene Änderungen an der Datei wirken beim nächsten Start der Anwendung.

Wenn das Problem weiterhin besteht

Senden Sie die unter Informationen für den Support aufgeführten Informationen an den Support, zusammen mit der Antwort des Methodenaufrufs, den Werten der Eingaben von control/subscribe (oder von control/unsubscribe/input/address) und barcode-reader.json.

Problem: Der Stream läuft, aber es treffen keine Ergebnisse ein, oder failed-frames steigt

Symptome

Nach control/subscribe/execute trifft auf control/subscribe/output/stream/result kein Ergebnis ein, oder der Zähler control/subscribe/output/stream/statistics/failed-frames steigt.

Mögliche Ursachen
  • Der Stream des Readers läuft nicht: Die Eingaben von control/subscribe wurden geschrieben, aber control/subscribe/execute wurde nicht aufgerufen. Eine Eingabe allein zu schreiben ändert nichts.

  • Von der Quelle treffen keine Frames ein: Der Stream des Cam Driver läuft nicht, oder control/subscribe/input/address ist nicht der Stream-Ordner der Kamera. Der Stream des Cam Driver bleibt über einen Neustart des Cam Driver nicht erhalten.

  • Die Quelle kann nicht abonniert werden. Der Reader versucht es dann alle 5 Sekunden erneut, solange der Stream läuft.

  • Frames treffen ein, können aber nicht gelesen werden, zum Beispiel Frames in einem Pixelformat, das der Reader nicht unterstützt, oder Frames, deren Pixel die angegebene Größe nicht ausfüllen.

  • Ergebnisse werden veröffentlicht, aber Ihr Client abonniert control/subscribe/output/stream/result nicht. Ein Lesen des Knotens liefert nur das neueste Ergebnis.

Diagnose
  1. Lesen Sie control/subscribe/output/stream/active - erwartet: true. Ist der Wert false, lesen Sie setting/stream/enable und setting/stream/address - erwartet: true und der Stream-Ordner der Kamera.

  2. Lesen Sie hdvisionsystems/lumiscan-cam-driver/<camera name>/control/publish/output/stream/active - erwartet: true.

  3. Lesen Sie control/subscribe/output/stream/statistics/received-frames zweimal, im Abstand von einigen Sekunden - erwartet: Der Wert steigt. Die Zähler werden etwa viermal pro Sekunde aktualisiert, solange der Stream läuft.

  4. Lesen Sie statistics/failed-frames und control/subscribe/output/stream/last-failure - erwartet: failed-frames steigt nicht, und last-failure ist leer. last-failure sagt, warum der letzte Frame, der nicht gelesen werden konnte, fehlgeschlagen ist; der Knoten wird geleert, wenn der Stream startet.

  5. Lesen Sie statistics/processed-frames - erwartet: Der Wert steigt. Für jeden verarbeiteten Frame wird ein Ergebnis auf control/subscribe/output/stream/result veröffentlicht.

  6. Lesen Sie das Protokoll der Anwendung - erwartet: kein Fehlschlag beim Abonnieren der Quelle und keine fehlgeschlagenen Frames.

Lösung
  • Wenn der Stream des Readers nicht läuft:

    1. Schreiben Sie den Stream-Ordner der Kamera in control/subscribe/input/address.

    2. Setzen Sie control/subscribe/input/enable auf true.

    3. Schreiben Sie auf control/subscribe/execute. Erwartet: DL_OK oder Ok, danach ist control/subscribe/output/stream/active true.

  • Wenn der Stream des Cam Driver nicht läuft: Starten Sie ihn, siehe das Handbuch des Cam Driver, Bilder streamen. Sein Stream bleibt über einen Neustart nicht erhalten: Verbinden Sie nach jedem Start des Cam Driver die Kamera, und rufen Sie seine Methode control/publish/execute mit enable = true auf. Der Stream des Readers kann vor dem Stream des Cam Driver gestartet werden; Ergebnisse treffen ein, sobald Frames eintreffen.

  • Wenn die Adresse nicht der Stream-Ordner der Kamera ist: Schreiben Sie den Ordner, zum Beispiel hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream, in control/subscribe/input/address, und schreiben Sie auf control/subscribe/execute. Der Reader liest den Knoten frame des Ordners. Erwartet: received-frames steigt.

  • Wenn die Quelle nicht abonniert werden kann: Stellen Sie sicher, dass der Cam Driver läuft und den in control/subscribe/input/address genannten Stream-Ordner veröffentlicht. Solange der Stream läuft, versucht der Reader die Quelle alle 5 Sekunden erneut; bei derselben Adresse müssen Sie nicht erneut ausführen.

  • Wenn Frames nicht gelesen werden können: Lesen Sie den Grund in control/subscribe/output/stream/last-failure. Stellen Sie sicher, dass die Frames ein unterstütztes Pixelformat verwenden: Mono8, Mono12, RGB8, RGB12, BGR8, BGR12, Bayer_GR8, Bayer_RG8, Bayer_GR12 oder Bayer_RG12 (siehe Voraussetzungen). Erwartet: failed-frames steigt nicht mehr.

  • Wenn processed-frames steigt, Ihr Client aber nichts erhält: Abonnieren Sie control/subscribe/output/stream/result, um jedes Ergebnis zu erhalten. Oder setzen Sie control/subscribe/input/keep-latest-output auf true, und schreiben Sie auf control/subscribe/execute: Der Reader schreibt dann jedes Stream-Ergebnis zusätzlich in output/results. Auf einem PC zeigt krxclient subscribe hdvisionsystems/lumiscan-barcode-reader/control/subscribe/output/stream/result --count 5, dass Ergebnisse eintreffen; es zeigt einen Flatbuffer nur mit seiner Größe an.

Ein Frame ohne Barcode ergibt ein Ergebnis mit einem leeren Array results, siehe Problem: output/results ist ein leeres Array. Siehe auch Die Statistik lesen und Ein Stream liefert nichts.

Wenn das Problem weiterhin besteht

Der Bild-Stream ist experimentell. Er wurde nur unter Windows mit LumiScan Keryx und simulierten Bildern getestet; er wurde nicht unter Linux (ctrlX OS oder Ubuntu), auf dem ctrlX Data Layer oder mit einer echten Kamera geprüft. Senden Sie die unter Informationen für den Support aufgeführten Informationen an den Support, zusammen mit den Werten von control/subscribe/output/stream/active, control/subscribe/output/stream/last-failure, den Zählern unter control/subscribe/output/stream/statistics/ und setting/stream/ sowie dem Wert von control/publish/output/stream/active des Cam Driver.

Problem: Nach einem Neustart streamt der Reader von selbst wieder

Symptome

Nach einem Neustart der Anwendung ist control/subscribe/output/stream/active true, und auf control/subscribe/output/stream/result treffen Ergebnisse ein, obwohl Ihr Programm nichts ausgeführt hat.

Mögliche Ursachen
  • Der Reader startet so, wie er war. Das ist beabsichtigt: control/subscribe/execute und control/unsubscribe/execute speichern, was sie anwenden, im Abschnitt stream von barcode-reader.json. Nach einem Neustart abonniert der Reader dieselbe Quelle und startet, wenn stream.enable true ist, seinen Stream sofort.

  • stream.enable wurde in barcode-reader.json von Hand auf true gesetzt. true startet den Stream beim Start der Anwendung.

Diagnose
  1. Lesen Sie setting/stream/enable und setting/stream/address - sie zeigen, was zuletzt angewendet wurde, so wie die Einstellungsdatei es speichert. Erwartet, wenn der Reader nach einem Start nicht streamen soll: setting/stream/enable ist false.

  2. Öffnen Sie barcode-reader.json im Konfigurationsverzeichnis (siehe Allgemeine Prüfungen) - erwartet, wenn der Reader nach einem Start nicht streamen soll: stream.enable ist false oder fehlt.

Lösung
  • Wenn der Reader nach einem Start nicht streamen soll: Setzen Sie control/subscribe/input/enable auf false, und schreiben Sie dann auf control/subscribe/execute. Das stoppt den Stream sofort und wird in barcode-reader.json gespeichert; der Reader startet beim nächsten Mal also außerhalb des Stream-Modus. Der Frame, der gerade gelesen wird, wird zuerst abgeschlossen. Erwartet: control/subscribe/output/stream/active ist false, und setting/stream/enable ist false.

  • Wenn der Reader auch die Quelle nicht behalten soll: Schreiben Sie die Adresse, die setting/stream/address anzeigt, in control/unsubscribe/input/address, und schreiben Sie dann auf control/unsubscribe/execute. Damit endet der Stream-Modus. Erwartet: setting/stream/address ist leer.

Wenn das Problem weiterhin besteht

Senden Sie die unter Informationen für den Support aufgeführten Informationen an den Support, zusammen mit barcode-reader.json und den Werten von setting/stream/.

Informationen für den Support

Besteht ein Problem weiterhin, senden Sie diese Informationen an den Support:

  • Software-Version: die Version von LumiScan Barcode Reader, die Sie einsetzen. Die Dateien, die der Bild-Stream in settings-history/ im Konfigurationsverzeichnis ablegt, halten sie als software.version fest.

  • Plattform: ctrlX OS (ctrlX CORE oder ctrlX IPC) und die Version von ctrlX OS, oder ein PC mit Windows 11 oder Ubuntu 24.04.

  • Data Layer: der ctrlX Data Layer (ctrlX OS) oder LumiScan Keryx (PC). Auf einem PC zusätzlich die Broker-Adresse, die der Reader verwendet; jede App nennt sie beim Start in ihrem Protokoll.

  • Protokoll: das Protokoll der Anwendung aus der Zeit des Fehlers; auf ctrlX OS das Systemprotokoll.

  • Zeitpunkt: Datum und Uhrzeit des Fehlers.

  • Kommunikationsstatus: die Antwort eines abgelehnten Methodenaufrufs (zum Beispiel DL_INVALID_VALUE) und die Knotenwerte, die der Eintrag des Problems nennt.

  • Konfigurationsdateien: barcode-reader.json und die Dateien in settings-history/ aus dem Konfigurationsverzeichnis (siehe Allgemeine Prüfungen).

Wenden Sie sich an den Customer Success von HD Vision Systems unter customer.success@hdvisionsystems.com oder +49 6221 6721905; für Lizenzen an licenses@hdvisionsystems.com.