set_bar_code_paramT_set_bar_code_paramSetBarCodeParamSetBarCodeParam (Operator)

Name

set_bar_code_paramT_set_bar_code_paramSetBarCodeParamSetBarCodeParam — Setzen ausgewählter Parameter des Barcode-Modells.

Signatur

set_bar_code_param( : : BarCodeHandle, GenParamName, GenParamValue : )

Herror T_set_bar_code_param(const Htuple BarCodeHandle, const Htuple GenParamName, const Htuple GenParamValue)

void SetBarCodeParam(const HTuple& BarCodeHandle, const HTuple& GenParamName, const HTuple& GenParamValue)

void HBarCode::SetBarCodeParam(const HTuple& GenParamName, const HTuple& GenParamValue) const

void HBarCode::SetBarCodeParam(const HString& GenParamName, double GenParamValue) const

void HBarCode::SetBarCodeParam(const char* GenParamName, double GenParamValue) const

void HBarCode::SetBarCodeParam(const wchar_t* GenParamName, double GenParamValue) const   (Nur Windows)

static void HOperatorSet.SetBarCodeParam(HTuple barCodeHandle, HTuple genParamName, HTuple genParamValue)

void HBarCode.SetBarCodeParam(HTuple genParamName, HTuple genParamValue)

void HBarCode.SetBarCodeParam(string genParamName, double genParamValue)

Beschreibung

Der Operator set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam erlaubt es, Parameter, welche Eigenschaften des Barcodes beschreiben oder das Verhalten des Modells bei der Symbolsuche steuern, zu verändern. Damit kann auf Besonderheiten des Barcodes oder dessen Abbildung durch den Bildsensor eingegangen werden. Alle Parameter können auch direkt beim Anlegen des Modells mit create_bar_code_modelcreate_bar_code_modelCreateBarCodeModelCreateBarCodeModelCreateBarCodeModel übergeben werden. Die aktuelle Konfiguration kann mit Hilfe von get_bar_code_paramget_bar_code_paramGetBarCodeParamGetBarCodeParamGetBarCodeParam ausgelesen werden.

Es folgt eine Übersicht über die verschiedenen generischen Parameter mit den jeweiligen Wertebereichen und Defaultwerten:

Größe der Barcode Elemente:

Die beiden ersten Parameter, 'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min" und 'element_size_max'"element_size_max""element_size_max""element_size_max""element_size_max", beeinflussen die Suche nach Kandidatenregionen und die Dekodierung der Barcodes. Sie werden aber nicht strikt als Grenzen für die Größe der Elemente gefundener Barcodes verwendet. D.h. es können auch Barcodes gefunden werden, deren Elemente schmaler als 'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min" oder breiter als 'element_size_max'"element_size_max""element_size_max""element_size_max""element_size_max" sind.

Achtung: Beim Ändern der Größe über den Operator set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam, werden die Parameterwerte 'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min" und 'element_size_max'"element_size_max""element_size_max""element_size_max""element_size_max" auf Konsistenz überprüft. Die beiden Parameter sollten im gleichen Aufruf gesetzt werden.

'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min":

Die minimale Größe eines Basiselements (auch als 'Modul' oder 'narrow bar' bezeichnet, je nach Barcodetyp), d.h. die minimale Dicke der schmalsten Striche und Zwischenräume des speziellen Barcodetyps. Der Wert dieses Parameters ist in Pixel definiert. Für Barcodes mit niedriger Auflösung sollte der Wert auf 1.5 reduziert werden, ggf. sogar auf bis zu 1.2. Für sehr große Barcodes kann der Wert entsprechend vergrößert werden, was kürzere Laufzeiten mit sich bringt.

Typischer Wertebereich: [1.2 .. 10.0]

Wertebereich: [1 .. 64]

Standardwert: 2.0

'element_size_max'"element_size_max""element_size_max""element_size_max""element_size_max":

Die maximale Größe eines Basiselements (auch als 'Modul' oder 'narrow bar' bezeichnet, je nach Barcodetyp), d.h. die maximale Dicke der schmalsten Striche und Zwischenräume des speziellen Barcodetyps. Der Wert dieses Parameters ist in Pixel definiert. Er sollte groß genug sein, damit für das komplette Symbol die Kandidatenregion gefunden wird. Anderseits darf er nicht so groß gewählt werden, dass zwei benachbarte Barcodes zu einem einzelnen Kandidaten verschmelzen.

Typischer Wertebereich: [4.0 .. 60.0]

Wertebereich: [1 .. 256]

Standardwert: 8.0

'element_size_variable'"element_size_variable""element_size_variable""element_size_variable""element_size_variable":

In manchen Barcodeaufnahmen variiert die Breite des kleinsten Elements über den Bereich des Barcodes. Diese Veränderungen entstehen durch perspektivische Projektion oder durch Deformation der Oberfläche, auf welcher der Barcode gedruckt ist (z.B. eine Tonnenverzerrung auf einer Flasche). Standardmäßig kann der Barcodeleser solche Verzerrungen nicht ausgleichen. Sollte die Einstellung 'element_size_variable'"element_size_variable""element_size_variable""element_size_variable""element_size_variable" auf 'true'"true""true""true""true" gesetzt sein, wird versucht, solche Deformationen lokal bei der Dekodierung auszugleichen. Dies kann dazu führen, dass Barcodes auch unter solchen Bedingungen gelesen werden können. Man beachte, dass nicht alle Deformationen ausgeglichen werden können.

Der Parameter 'element_size_variable'"element_size_variable""element_size_variable""element_size_variable""element_size_variable" ist nur für folgende Barcodetypen implementiert:

Bei anderen Barcodetypen hat dieser Parameter keinen Effekt.

Werte: 'false'"false""false""false""false", 'true'"true""true""true""true"

Standardwert: 'false'"false""false""false""false"

'barcode_height_min'"barcode_height_min""barcode_height_min""barcode_height_min""barcode_height_min":

Die minimale Höhe des Barcodes. Der Wert dieses Parameters ist in Pixel definiert. Die Voreinstellung mit -1 bedeutet, dass intern die Höhe des Barcodes automatisch entsprechend den anderen Einstellung gewählt wird. Bei sehr flachen Barcodes mit einer Höhe von weniger als 16 Pixeln ist es sinnvoll die Höhe manuell einzustellen, damit der Barcode gefunden und gelesen werden kann. Die minimale Höhe beträgt 8 Pixel. Bei sehr hohen Barcodes, z.B. mit 70 Pixeln und mehr, kann das manuelle Setzen auf die entsprechende Höhe zu einer Beschleunigung beim Lesen führen.

Typischer Wertebereich: [-1, 8 .. 64]

Standardwert: -1

'barcode_width_min'"barcode_width_min""barcode_width_min""barcode_width_min""barcode_width_min":

Die minimale Breite des Barcodes im Bild. Der Wert dieses Parameters ist in Pixel definiert. Die Breite eines Barcodes hängt von mehreren Faktoren ab:

Falls diese Eigenschaften in einer Anwendung nahezu unverändert bleiben, sollte dieser Parameter gesetzt werden, um die Geschwindigkeit und Robustheit des Barcode-Lesers zu erhöhen. Der Standardwert von -1 bedeutet, dass der Barcode-Leser einen geeigneten Minimalwert anhand der gesuchten Barcode-Typen und des Parameters 'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min" schätzt.

Typischer Wertebereich: [-1, 40, 50, 60, ...]

Standardwert: -1

Scanparameter:

'num_scanlines'"num_scanlines""num_scanlines""num_scanlines""num_scanlines":

Die maximale Anzahl von Scanlinien, die während des Scannens eines (Kandidat-)Symbols benutzt werden. Wenn 'num_scanlines'"num_scanlines""num_scanlines""num_scanlines""num_scanlines" nicht gesetzt ist (der Parameter hat einen Wert von 0), wird die Anzahl der Scanlinien nach einer internen Regel bestimmt: 10 für alle einzeiligen Barcodes, 20 für GS1 DataBar Stacked beziehungsweise GS1 DataBar Stacked Omnidirectional und 55 für GS1 DataBar Expanded Stacked. Durch diesen Parameter kann die Geschwindigkeit in zwei Fällen gesteigert werden. Im ersten Fall beinhaltet das Bild viele falsche Kandidaten. Während der Barcode selbst normalerweise nach ein oder zwei Scanvorgängen dekodiert werden kann (außer gestapelte Barcodes, siehe unten), wird ein falscher Kandidat mit dem Defaultwert von 10 Scanlinien gescannt, was die Laufzeit unnötig verlängert. Folglich kann die Geschwindigkeit durch eine reduzierte Anzahl der Scanlinien erhöht werden. Generell lässt sich sagen, dass Bilder höherer Qualität weniger Scanlinien benötigen als Bilder von niedrigerer Qualität. Für ein durchschnittliches Bild sollte ein Wert zwischen 2 und 5 ausreichend sein. Sollte ein Barcode jedoch nach Verringerung der Scanlinien nicht mehr gefunden werden, so muss die Anzahl der Scanlinien wieder erhöht werden. Der zweite Fall betrifft gestapelte Barcodes (derzeit GS1 DataBar Stacked, GS1 DataBar Stacked Omnidirectional und GS1 DataBar Expanded Stacked). Hier werden alle Scanlinien bewertet - im Gegensatz zu einzeiligen Barcodes (z.B. Code 128, EAN 13 oder GS1 DataBar Limited), wo das Scannen nach erfolgreicher Dekodierung des Codes beendet wird. Der Scanvorgang ist eine der zeitaufwändigsten Phasen des Operators find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode. Deswegen kann die Anpassung des Parameters 'num_scanlines'"num_scanlines""num_scanlines""num_scanlines""num_scanlines" große Geschwindigkeitsvorteile bringen. Das gilt insbesondere für GS1 DataBar Expanded Stacked. Ein GS1 DataBar Expanded Stacked Symbol kann in der Regel aus bis zu 11 Zeilen bestehen. Damit jede Zeile robust von jeweils 5 Scanlinien gelesen wird, sind im Operator 55 Scanlinien für den allgemeinen Fall vorgesehen. Wenn nur Symbole mit geringer Zeilenanzahl zu erwarten sind, sollte 'num_scanlines'"num_scanlines""num_scanlines""num_scanlines""num_scanlines" auf 1.5 bis 5 Scanlinien pro erwartete Zeile reduziert werden.

Falls dieser Parameter auf einen Wert gesetzt wird, der kleiner ist als die Einstellung für den Parameter 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines", so wird der Wert für 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines" automatisch auf den Wert von 'num_scanlines'"num_scanlines""num_scanlines""num_scanlines""num_scanlines" reduziert.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden.

Typische Werte: [0, 5, 10, 20 ...]

Standardwert: 0

'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines":

Mit diesem Parameter lässt sich die Wahrscheinlichkeit verringern, dass Barcodes falsch gelesen werden oder an Stellen gefunden werden, die keine Barcodes darstellen. Der Parameter legt die minimale Anzahl von Scanlinien fest, welche identische Ergebnisse liefern müssen, damit die Dekodierung eines Symbols akzeptiert wird.

Wenn 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines" auf den Wert 0 gesetzt ist (welches der Standardwert für alle Barcodtetypen außer '2/5 Industrial' und '2/5 Interleaved' ist), wird der Barcode dekodiert, sobald eine Scanlinie erfolgreich dekodiert wurde. Falls die Einstellung 'majority_voting'"majority_voting""majority_voting""majority_voting""majority_voting" aktiviert ist, wird ein anderes Verfahren angewandt (siehe Abschnitt über 'majority_voting'"majority_voting""majority_voting""majority_voting""majority_voting"). Analog hierzu reicht bei gestapelten Barcodes eine erfolgreich dekodierte Scanlinie pro Barcodezeile. Dieser Parameter kann auf 2 oder höher gesetzt werden, um zu verhindern, dass Barcodes unbeabsichtigt gefunden werden. Dies kann insbesondere dann hilfreich sein, wenn schlechte Bildqualität oder verrauschte Bildregionen dazu führen, dass eine Scanlinie falsche Strichkanten findet. Dieser Parameter kann auch die Anzahl falsch gefundener Barcodes in Bildern verringern, in welchen Symbole unterschiedlichen Barcodetyps gleichzeitig erscheinen.

Man beachte, dass der Standardwert für diesen Parameter für die meisten Barcodetypen 0 ist. Lediglich ist der Standardwert 2 für die Barcodetypen '2/5 Industrial' und '2/5 Interleaved'. Der Grund dafür ist, dass diese Barcodetypen leicht fälschlicher Weise in Text und anderen Störmustern erkannt werden, wenn der Parameter 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines" auf 0 oder 1 gesetzt ist.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden.

Wenn vereinigte Scanlinien (siehe 'merge_scanlines'"merge_scanlines""merge_scanlines""merge_scanlines""merge_scanlines")verwendet werden, drückt 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines" aus, in wie vielen Scanlinien eine Kante erfolgreich erkannt werden muss (siehe get_bar_code_objectget_bar_code_objectGetBarCodeObjectGetBarCodeObjectGetBarCodeObject, 'scanlines_merged_edges').

Typische Werte: [0, 2, 3, ...]

Standardwert:
Barcodetyp min_identical_scanlines
2/5 Industrial 2
2/5 Interleaved 2
alle Anderen 0
'majority_voting'"majority_voting""majority_voting""majority_voting""majority_voting":

Dieser Parameter steuert das Verhalten bei der Auswahl unterschiedlicher Dekodierergebnisse pro Scanlinie. Falls der Parameter auf 'false'"false""false""false""false" gesetzt ist, wird ein erfolgreiches Dekodierergebnis zurückgegeben, sobald eine minimale Anzahl an identisch dekodierten Scanlinien gefunden wurde (siehe Abschnitt über 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines" für weitere Details). Setzt man diesen Parameter auf 'true'"true""true""true""true", so wird ein Mehrheitsvotum unter Einbeziehung aller Scanlinien durchgeführt. Das zurückgegebene Endergebnis wird dann jenes sein, welches von den meisten Scanlinien dekodiert wurde. Man beachte, dass die Einstellung 'true'"true""true""true""true" zu leicht erhöhten Laufzeiten führt, denn es müssen fast alle Scanlinien ausgewertet werden anstatt nur die minimal identischen Scanlinien.

Um die Robustheit gegenüber falschen Dekodierungen zu erhöhen, sollte dieser Parameter auf 'true'"true""true""true""true" gesetzt werden.

Dieser Parameter wird nur für Barcodetypen unterstützt, die nicht gestapelt sind.

Werteliste: ['false'"false""false""false""false", 'true'"true""true""true""true"]

Standardwert: 'false'"false""false""false""false"

'stop_after_result_num'"stop_after_result_num""stop_after_result_num""stop_after_result_num""stop_after_result_num":

Anzahl erfolgreich dekodierter Barcodes nach der die Dekodierung angehalten wird. Falls dieser Parameter nicht gesetzt ist (der Parameter hat einen Wert von 0), wird versucht alle Kandidaten zu dekodieren. Dieser Parameter wird typischerweise gesetzt, wenn die erwartete Anzahl von Barcodes im Voraus bekannt ist. Dann kann der Barcode-Leser die weitere Dekodierung von Kandidaten abbrechen und die Gesamtdekodierzeit wird reduziert.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden.

Typische Werte: [0, 1, 2, ...]

Standardwert: 0

'orientation'"orientation""orientation""orientation""orientation":

Erwarteter Barcode Orientierungswinkel. Ein potentieller (Kandidat-) Barcode hat Striche ähnlicher Orientierung. Man kann die Parameter 'orientation'"orientation""orientation""orientation""orientation" und 'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol" anpassen, um den Wertebereich ['orientation'"orientation""orientation""orientation""orientation"-'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol", 'orientation'"orientation""orientation""orientation""orientation"+'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol"] zu definieren. find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode bearbeitet nur Kandidatenregionen, deren Striche einen durchschnittlichen Orientierungswinkel haben, der in dem obigen Wertebereich liegt. Falls die Barcodes nur mit einer bestimmter Orientierung in den bearbeiteten Bildern erscheinen, so kann man den Wertebereich entsprechend reduzieren, sodass falsche Kandidaten früher erkannt werden und sich so die Ausführungszeit des Operator verkürzt. Diese Strategie bringt vor allem dann Vorteile, wenn die bearbeiteten Bilder viel Hintegrundtextur mit falsch orientierten Kandidaten enthalten.

Ausführlichere Informationen zu dem Orientierungswinkel können beim Operator get_bar_code_resultget_bar_code_resultGetBarCodeResultGetBarCodeResultGetBarCodeResult(...,'orientation'"orientation""orientation""orientation""orientation",...) nachgelesen werden. Im Gegensatz zu get_bar_code_resultget_bar_code_resultGetBarCodeResultGetBarCodeResultGetBarCodeResult, wird hier die eigentliche Leserichtung nicht berücksichtigt, und es sind deswegen nur Winkel in dem Wertebereich [-90.0 ... 90.0] von Interesse. Die einzige Ausnahme dazu sind Barcodes vom Typ PharmaCode, welche keine eindeutige Leserichtung haben und somit auch in der Regel zwei dekodierte Ergebnisse zurückliefern: mit einem Wertebereich von [-180.0 ... 180.0] kann eine spezielle Leserichtung und damit auch ein einzelnes Ergebnis gewählt werden.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden.

Typischer Wertebereich: [-90.0 ... 90.0]

Standardwert: 0.0

'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol":

Toleranz der Orientierung. Siehe 'orientation'"orientation""orientation""orientation""orientation" für weitere Erklärungen. Wie bereits erklärt wurde, ist nur der Wertebereich [-90.0 ... 90.0] berücksichtigt, was mit einem 'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol" von 90.0 ganz abgedeckt wird. Deswegen sind die Werte von 'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol" auf den Wertebereich [0.0 ... 90.0] eingeschränkt. Dabei stellt ein Wert von 90.0 die Orientierungbeschränkung grundsätzlich aus.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden.

Typischer Wertebereich: [0.0 ... 90.0]

Standardwert: 90.0

'quiet_zone'"quiet_zone""quiet_zone""quiet_zone""quiet_zone":

Steuert die Verifikation der Ruhezonen eines Barcodesymbols. Wenn diese eingeschaltet ist, werden Scanlinien verworfen, falls unerwartete Striche in den Ruhezonen gefunden werden. Wenn 'quiet_zone'"quiet_zone""quiet_zone""quiet_zone""quiet_zone"='true'"true""true""true""true", muss die Ruhezone mindestens so breit sein, wie in der entsprechenden Barcode-Norm festgesetzt ist. Diese Werte (in X-Einheiten, wobei X eine "Modulbreite" bezeichnet, d.h. die Breite des schmalsten Striches aus der Strichsequenz des Barcodes) können von der folgenden Tabelle entnommen werden:

Barcodetyp Linke RZ Rechte RZ Barcodetyp Linke RZ Rechte RZ
2/5 Industrial 10 10 UPC-A 9 9
2/5 Interleaved 10 10 UPC-A Add-On 2 9 5
Codabar 10 10 UPC-A Add-On 5 9 5
Code 39 10 10 UPC-E 9 7
Code 93 10 10 UPC-E Add-On 2 9 5
Code 128 10 10 UPC-E Add-On 5 9 5
MSI 10 10 GS1-128 10 10
PharmaCode 5 5 GS1 DataBar Omnidir 1 1
EAN-8 7 7 GS1 DataBar Truncated 1 1
EAN-8 Add-On 2 7 5 GS1 DataBar Stacked 1 1
EAN-8 Add-On 5 7 5 GS1 DataBar Stacked Omnidir 1 1
EAN-13 11 7 GS1 DataBar Limited 1 5
EAN-13 Add-On 2 11 5 GS1 DataBar Expanded 1 1
EAN-13 Add-On 5 11 5 GS1 DataBar Expanded Stacked 1 1
Wenn 'quiet_zone'"quiet_zone""quiet_zone""quiet_zone""quiet_zone" auf eine Ganzzahl (>= 1) gesetzt ist, dann muss eine Ruhezone von mindestens 'quiet_zone'"quiet_zone""quiet_zone""quiet_zone""quiet_zone" x X eingehalten werden.

Wenn 'quiet_zone'"quiet_zone""quiet_zone""quiet_zone""quiet_zone"='tolerant'"tolerant""tolerant""tolerant""tolerant", ist eine beschränkte Anzahl an Kanten in der Ruhezone erlaubt, aber höchstens eine pro vier Modulbreiten. Das Ziel ist zu verhindern, nur einen Teil von einem Barcode zu erkennen, aber dennoch Codes mit einer einfachen Verletzung der Ruhezone noch lesen zu können. Es ist zu beachten, dass auch für Codetypen mit einer vorgeschriebenen Ruhezone von weniger als vier Modulbreiten die Kanten innerhalb eines Bereichs von vier Modulbreiten um den Code überprüft werden. In diesem Fall kann dieses Kriterium also strenger sein als die Überprüfung mit 'quiet_zone'"quiet_zone""quiet_zone""quiet_zone""quiet_zone"='true'"true""true""true""true".

Wenn 'quiet_zone'"quiet_zone""quiet_zone""quiet_zone""quiet_zone"='false'"false""false""false""false", ist die Verifikation ausgeschaltet.

Die Verifikation der Ruhezone ist insbesondere für das Lesen von Barcodes im 'auto'-Modus wichtig. Sie verhindert, dass einfache Barcodes innerhalb einer Strichsequenz eines längeren und/oder komplexeren Barcodes gefunden werden. Normalerweise liefern Werte zwischen 2 und 4 optimale Ergebnisse, weil dadurch falsche Barcodes unterdrückt werden, während kleine Störungen wie Text, Etikettenkanten, etc. immer noch toleriert werden.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden.

Wertevorschläge: 'false'"false""false""false""false", 'true'"true""true""true""true", 'tolerant'"tolerant""tolerant""tolerant""tolerant", 1, 2, 3, 4, 5

Standardwert: 'false'"false""false""false""false"

'start_stop_tolerance'"start_stop_tolerance""start_stop_tolerance""start_stop_tolerance""start_stop_tolerance":

Fordert ein tolerantes ('high'"high""high""high""high") oder ein strenges ('low'"low""low""low""low") Matchingkriterium bei der Suche nach Start-, bzw. Stopmuster in einer Scanlinie. Ein tolerantes Kriterium erhöht die allgemeine Leserate, insbesondere in Bildern mit schlechtem Kontrast. Anderseits kann diese Einstellung zu ungültigen Dekodierungen in verrauschten Bildern, oder in Bildern mit Symbolen anderer Barcodetyps führen. Ein strenges Kriterium erhöht die Robustheit gegenüber falscher Dekodierung, kann aber auch die allgemeine Leserate mindern. Es ist zu beachten, dass momentan zwei unterschiedliche Kriterien nur für Code 128 und GS1-128 implementiert sind.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden. Obwohl man diesen Parameter für alle Barcodetypen setzen kann, hat er derzeit, wie bereits erwähnt, nur Wirkung auf Code 128 und GS1-128.

Werte: ['high'"high""high""high""high", 'low'"low""low""low""low"]

Standardwert: 'high'"high""high""high""high"

'min_code_length'"min_code_length""min_code_length""min_code_length""min_code_length":

Minimale Anzahl dekodierter Zeichen. Falls ein Barcode gefunden wird, dessen Länge geringer ist als der Wert der für den Parameter 'min_code_length'"min_code_length""min_code_length""min_code_length""min_code_length" angegeben ist, so wird das Resultat verworfen und nicht von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode oder decode_bar_code_rectangle2decode_bar_code_rectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2DecodeBarCodeRectangle2 zurückgegeben. Dieser Parameter ist hilfreich um falsches Dekodieren in Anwendungen zu vermeiden in denen die minimale Anzahl zu dekodierender Zeichen im Voraus bekannt ist.

Man beachte, dass der Standardwert für diesen Parameter für die meisten Barcodetypen 0 ist. Lediglich für die Barcodetypen '2/5 Industrial' und '2/5 Interleaved' ist der Standardwert 3. Der Grund dafür ist, dass diese Barcodetypen leicht fälschlicher Weise in Text und anderen Störmustern mit einer Länge von 2 Zeichen erkannt werden.

Standardwert:
Barcodetyp min_code_length
2/5 Industrial 3
2/5 Interleaved 3
alle Anderen 0
'merge_scanlines'"merge_scanlines""merge_scanlines""merge_scanlines""merge_scanlines":

Wenn nicht genug Scanlinien (siehe 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines") erfolgreich dekodiert werden können, beispielsweise weil der Barcode teilweise verdeckt oder beschädigt ist, wird versucht, die vorhandenen Scanlinien zu vereinigen. Anschließend wird versucht, die vereinigten Scanlinien zu dekodieren. Dieser zusätzliche Dekodierschritt wird nur für Barcodetypen durchgeführt, die nicht gestapelt sind und kann für eine verbesserte Geschwindigkeit ausgeschaltet werden.

Werte: ['true'"true""true""true""true", 'false'"false""false""false""false"]

Standardwert: 'true'"true""true""true""true"

Erscheinungsbild der Module im Bild:

'meas_thresh'"meas_thresh""meas_thresh""meas_thresh""meas_thresh":

Innerhalb einer Scanlinie werden Kanten mit Hilfe eines Schwellwerts gefunden. 'meas_thresh'"meas_thresh""meas_thresh""meas_thresh""meas_thresh" bestimmt, wie dieser Schwellwert relativ zum Dynamikbereich der Grauwerte entlang der Scanlinie berechnet wird. Liegen in dem Barcode Störungen vor oder ist das Rauschen groß, so sollte 'meas_thresh'"meas_thresh""meas_thresh""meas_thresh""meas_thresh" auf größere Werte gesetzt werden.

Typischer Wertebereich: [0.05 .. 0.2]

Standardwert: 0.05

'meas_thresh_abs'"meas_thresh_abs""meas_thresh_abs""meas_thresh_abs""meas_thresh_abs":

Der Parameter 'meas_thresh_abs'"meas_thresh_abs""meas_thresh_abs""meas_thresh_abs""meas_thresh_abs" wird benutzt, um die falsche Kantendetektion zu verhindern. Sollte eine Scanlinie in eine Bildregion mit zu kleinem Dynamikbereich geraten (z.B. eine überwiegend weiße Region mit Grauwerten nahe 255), wird der Schwellwert zum Kantendetektion unangemessen klein berechnet. Das führt des Öfteren zur Detektion großer Mengen falscher Kanten. Falls der Schwellwert, der auf dem Parameter 'meas_thresh'"meas_thresh""meas_thresh""meas_thresh""meas_thresh" basiert, kleiner als der Wert des Parameters 'meas_thresh_abs'"meas_thresh_abs""meas_thresh_abs""meas_thresh_abs""meas_thresh_abs" wird, wird der letztere Wert als Schwellwert genommen. Standardmäßig ist 'meas_thresh_abs'"meas_thresh_abs""meas_thresh_abs""meas_thresh_abs""meas_thresh_abs" auf 5.0 gesetzt. Sollten Bilder mit höherem Rauschpegel behandelt werden, könnte ein Erhöhen des Parameterwertes nützlich sein. Anderseits, wenn rauschfreie Bilder mit niedrigem Kontrast behandelt werden, könnte dieser Parameter die Detektion richtiger Kanten stören. In solchen Fällen ist es empfehlenswert, den Parameterwert zu mindern oder den Parameter sogar zu deaktivieren (auf 0.0 setzen).

Typischer Wertebereich: [0.0 .. 10.0]

Standardwert: 5.0

'contrast_min'"contrast_min""contrast_min""contrast_min""contrast_min":

Minimaler Kontrast zwischen dem Vorder- und Hintergrund der Barcode-Elemente. Wird dieser Parameter auf Werte über 5 gesetzt, optimiert der Operator find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode die Kandidatensuche auf den Kontrastbereich oberhalb des 'contrast_min'"contrast_min""contrast_min""contrast_min""contrast_min" Wertes. find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode wird dann alle Kandidaten verwerfen, die einen Kontrast unterhalb des Schwellwertes 'contrast_min'"contrast_min""contrast_min""contrast_min""contrast_min" besitzen. Hohe 'contrast_min'"contrast_min""contrast_min""contrast_min""contrast_min" Werte führen daher in der Regel zu einer verbesserten Laufzeit des Operators find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode. Es ist zu beachten, dass Barcodes mit einem geringeren Kontrast als dem Schwellwert 'contrast_min'"contrast_min""contrast_min""contrast_min""contrast_min" nicht gefunden werden. Aus Effizienzgründen ist der berechnete Kontrast eines Kandidaten nur eine Approximation. Es sollte ein niedrigeren Schwellwert verwendet werden, falls ein Barcode verworfen wird und dieser einen Kontrast besitzt, der nahe an dem gewählten Schwellwert 'contrast_min'"contrast_min""contrast_min""contrast_min""contrast_min" liegt.

Typische Werte: [0, 40, 90, 120, ... ]

Standardwert: 0

Symbol spezifische Größen:

'check_char'"check_char""check_char""check_char""check_char":

Barcodes mit optionalem Prüfzeichen werden anhand dieses Parameters interpretiert. Darunter fallen z.B. Code 39, Codabar, 2/5 Industrial und 2/5 Interleaved. Der Standardwert von 'absent'"absent""absent""absent""absent" gibt an, dass kein Prüfzeichen vorliegt. In diesem Fall wird keine Prüfung durchgeführt, und alle Zeichen werden als Daten zurückgeliefert.

Ist dieser Parameter auf 'present'"present""present""present""present" gesetzt, so wird ein Prüfzeichen erwartet und benutzt um die Korrektheit des Barcodes zu prüfen. Ist die Prüfsumme korrekt, so wird das Prüfzeichen aus den Nutzdaten entfernt. Falls dieses Entfernen nicht erwünscht ist, kann der Parameterwert 'preserved'"preserved""preserved""preserved""preserved" eingestellt werden um das Prüfzeichen trotz Prüfung zu erhalten. Ist die Prüfsumme jedoch fehlerhaft, so wird der entsprechende Barcode nicht als Ergebnis zurückgeliefert.

Barcodetypen mit obligatorischem Prüfzeichen haben den Parameter 'check_char'"check_char""check_char""check_char""check_char" stets auf 'present'"present""present""present""present" gesetzt. Ob das Prüfzeichen aus den Nutzdaten entfernt wird oder erhalten bleibt, hängt jedoch vom Standard des jeweiligen Codetypen ab. Beispiele für solche Codetypen sind Code 128, EAN-8, EAN-13 und UPC-A.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden.

Werte: ['absent'"absent""absent""absent""absent", 'present'"present""present""present""present", 'preserved'"preserved""preserved""preserved""preserved"]

Standardwert: 'absent'"absent""absent""absent""absent"

'composite_code'"composite_code""composite_code""composite_code""composite_code":

An den meisten GS1-tauglichen Barcodes kann eine 2D GS1-Composite Code Komponente angehängt sein. Wenn 'composite_code'"composite_code""composite_code""composite_code""composite_code" auf 'CC-A/B'"CC-A/B""CC-A/B""CC-A/B""CC-A/B" gesetzt ist, wird die Composite Komponente lokalisiert und dekodiert. Standardmäßig, ist 'composite_code'"composite_code""composite_code""composite_code""composite_code" auf 'none'"none""none""none""none" gesetzt und so wird der Composite Komponente neben dem Barcode ignoriert. Besitzt ein Barcode des gesuchten Typs keine Composite Komponente, so wird beim Aufruf von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode nur das Ergebnis des Barcodes zurückgeliefert. Zur Zeit werden GS1 Composite Codes nur zusammen mit einem Barcode der Familie GS1 DataBar unterstützt.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für unterschiedliche Barcodetypen gesetzt werden.

Werte: ['none'"none""none""none""none", 'CC-A/B'"CC-A/B""CC-A/B""CC-A/B""CC-A/B"]

Standardwert: 'none'"none""none""none""none"

'upce_encodation'"upce_encodation""upce_encodation""upce_encodation""upce_encodation":

UPC-E-Barcodes können in verschiedenen Ausgabeformaten zurückgegeben werden. Standardmäßig ist 'upce_encodation'"upce_encodation""upce_encodation""upce_encodation""upce_encodation" auf 'ucc-12'"ucc-12""ucc-12""ucc-12""ucc-12" gesetzt und der dekodierte String wird im UCC-12-Format (bestehend aus 12 Ziffern) zurückgegeben. Wird 'upce_encodation'"upce_encodation""upce_encodation""upce_encodation""upce_encodation" auf 'zero-suppressed'"zero-suppressed""zero-suppressed""zero-suppressed""zero-suppressed" gesetzt, so wird das Ergebnis im Zero-Suppressed-Format (also mit unterdrückten Nullen an definierten Stellen) zurückgegeben. Dieses Format besteht aus führender Null, sechs kodierten Ziffern und einem implizit kodiertem Prüfzeichen. Dies entspricht dem Format, das von ISO/IEC 15420:2009 gefordert wird.

Dieser Parameter kann mit dem Operator set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific spezifisch für den Barcodetype UPC-E gesetzt werden.

Werte: ['ucc-12'"ucc-12""ucc-12""ucc-12""ucc-12", 'zero-suppressed'"zero-suppressed""zero-suppressed""zero-suppressed""zero-suppressed"]

Standardwert: 'ucc-12'"ucc-12""ucc-12""ucc-12""ucc-12"

Training:

Neben dem manuellen Setzen der Modellparameter mit dem Operator set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam ist es auch möglich, das Modell mit Hilfe von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode anhand eines oder mehrerer Beispielbilder zu trainieren. Dazu muss zuerst ein Barcode-Modell im Trainings-Modus erstellt werden, oder ein bestehendes Barcode-Modell muss in den Trainings-Modus versetzt werden, indem man in set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam als generischen Parameter GenParamNameGenParamNameGenParamNameGenParamNamegenParamName 'train'"train""train""train""train" übergibt. Der entsprechende Wert bei GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue bestimmt, welche Parameter gelernt werden sollen. Im einzelnen können die folgenden Werte gesetzt werden:

'all'"all""all""all""all":

Es werden alle trainierbaren Parameter gelernt.

'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min":

Minimale Größe eines Basiselements. Diese Einstellung trainiert den Parameter 'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min".

'element_size_max'"element_size_max""element_size_max""element_size_max""element_size_max":

Maximale Größe eines Basiselements. Diese Einstellung trainiert den Parameter 'element_size_max'"element_size_max""element_size_max""element_size_max""element_size_max".

'barcode_width_min'"barcode_width_min""barcode_width_min""barcode_width_min""barcode_width_min":

Minimale Barcode Breite. This setting activates the training mode for the parameter Diese Einstellung trainiert den Parameter 'barcode_width_min'"barcode_width_min""barcode_width_min""barcode_width_min""barcode_width_min".

'meas_thresh'"meas_thresh""meas_thresh""meas_thresh""meas_thresh":

Relativer Schwellwert zur Kantenbestimmung in Scanlinien. Diese Einstellung trainiert den Parameter 'meas_thresh'"meas_thresh""meas_thresh""meas_thresh""meas_thresh".

'meas_thresh_abs'"meas_thresh_abs""meas_thresh_abs""meas_thresh_abs""meas_thresh_abs":

Absoluter Schwellwert zur Kantenbestimmung in Scanlinien. Diese Einstellung trainiert den Parameter 'meas_thresh_abs'"meas_thresh_abs""meas_thresh_abs""meas_thresh_abs""meas_thresh_abs".

'orientation'"orientation""orientation""orientation""orientation":

Orientierung des Barcodes. Diese Einstellung trainiert die Parameter 'orientation'"orientation""orientation""orientation""orientation" und 'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol". Nach Abschluss des Trainings sollte der Wert für 'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol" noch um einen Toleranzwert erhöht werden um auch Barcodes zu finden deren Orientierung sich leicht außerhalb des trainierten Bereichs befindet.

Es können mehrere Parameter in einem Aufruf von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode gemeinsam trainiert werden, indem 'train'"train""train""train""train" in set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam in einem Tuple mehrfach mit den entsprechenden Werten übergeben wird: z.B. GenParamNameGenParamNameGenParamNameGenParamNamegenParamName = ['train','train']["train","train"]["train","train"]["train","train"]["train","train"] und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue = ['element_size_min','element_size_max']["element_size_min","element_size_max"]["element_size_min","element_size_max"]["element_size_min","element_size_max"]["element_size_min","element_size_max"]. Weiterhin können - im Zusammenhang mit 'train'"train""train""train""train" = 'all'"all""all""all""all" - einzelne Parameter explizit vom Training ausgeschlossen werden, indem zusätzlich 'train'"train""train""train""train" mit den entsprechenden Parametern und einem vorangestellten '~'"~""~""~""~" gesetzt wird: z.B. GenParamNameGenParamNameGenParamNameGenParamNamegenParamName = ['train','train']["train","train"]["train","train"]["train","train"]["train","train"] und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue = ['all','~orientation']["all","~orientation"]["all","~orientation"]["all","~orientation"]["all","~orientation"] trainiert alle Parameter außer 'orientation'"orientation""orientation""orientation""orientation".

Anschließend muss für jedes zu trainierende Bild der Operator find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode aufgerufen werden.

Die folgenden Hinweise sollten im Zusammenhang mit dem Training beachtet werden:

- Zusätzlich nötige, nicht zu trainierende Parameter (beispielsweise 'check_char'"check_char""check_char""check_char""check_char") müssen vor dem Training manuell festgelegt werden.

- Soll über mehrere Bilder trainiert werden, ist der Operator find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode mehrfach nacheinander aufzurufen.

- Pro Bild können mehrere Barcodes des gewählten Typs sichtbar sein. Alle dekodierten Barcodes werden als Trainings-Beispiele behandelt.

- Bitte prüfen Sie die Ausgabe von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode im Trainings-Modus. Während des Trainings sollten nur tatsächlich korrekte Dekodierungen auftreten. Stellen Sie fest, dass eine falsche Dekodierung erfolgt ist, sollten Sie dieses Trainingsbild entweder verwerfen oder entsprechende Parameter zuvor setzen (z.B. können Sie in einem solchen Fall versuchen, den Wert des Parameters 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines" zu erhöhen).

- Befinden sich im Trainingsbild mehrere Barcodes und soll aber nur über einen bestimmten Barcode trainiert werden, ist der Definitionsbereich des Bildes mit reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain entsprechend einzuschränken.

- Sind in einer Anwendung alle Bilder sehr ähnlich, reicht i.d.R. ein Trainingsbild für die Parameter 'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min", 'element_size_max'"element_size_max""element_size_max""element_size_max""element_size_max", 'meas_thresh'"meas_thresh""meas_thresh""meas_thresh""meas_thresh" und 'meas_thresh_abs'"meas_thresh_abs""meas_thresh_abs""meas_thresh_abs""meas_thresh_abs".

- Kann die Elementgröße variieren, sollten nach Möglichkeit im Training auch Bilder mit den kleinsten und den größten vorkommenden Elementen verwendet werden. Sollte dies nicht sichergestellt werden können, müssen die Grenzen für die Elementgröße nach dem Training von Hand gesetzt bzw. entsprechend modifiziert werden, oder die Elementgrößen werden vom Training ganz ausgenommen.

- Die Modellparameter werden beim ersten Training auf die Modelleigenschaften des im Bild gefundenen Barcodes eingeschränkt. Bei jedem weiteren Training werden sie, falls notwendig, so erweitert, dass neben den bisher trainierten Barcodes auch der neue Barcode vom Modell abgedeckt wird.

- Wurden genügend Bilder trainiert, so kann das Training beendet werden. Zuvor sollten jedoch die trainierten Parameter ausgelesen werden. Mit query_bar_code_paramsquery_bar_code_paramsQueryBarCodeParamsQueryBarCodeParamsQueryBarCodeParams können die Namen der trainierten Parameter - aufgeteilt in spezifische und allgemeine Parameter - bestimmt werden und anschließend entsprechend mit get_bar_code_param_specificget_bar_code_param_specificGetBarCodeParamSpecificGetBarCodeParamSpecificGetBarCodeParamSpecific und get_bar_code_paramget_bar_code_paramGetBarCodeParamGetBarCodeParamGetBarCodeParam ausgelesen werden.

Zum Beenden des Trainings werden alle trainierten Parameter durch einen Aufruf des Operators set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam mit den Parametern GenParamNameGenParamNameGenParamNameGenParamNamegenParamName = 'train'"train""train""train""train" und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue = '~all'"~all""~all""~all""~all" aus dem Training genommen.

Alternativ kann auch einfach das existierende Barcode-Modell durch den Operator clear_bar_code_modelclear_bar_code_modelClearBarCodeModelClearBarCodeModelClearBarCodeModel geschlossen werden.

- Während des Trainings sollte der Wert eines Trainingsparameters nicht durch einen Aufruf von set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam oder set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific explizit gesetzt werden. Falls das gemacht wird, werden die gesamten internen Trainingsdaten zurückgesetzt und das Training startet mit dem nächsten Aufruf von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode von vorne.

- Kann der zu trainierende Barcode nicht gelesen werden, erzeugt dies keine gesonderte Fehlermeldung, sondern es sind lediglich die Ergebnislisten (DecodedDataStrings, SymbolRegions) leer. Die Modellparameter (insbesondere die trainierten Parameter) werden in diesem Fall nicht modifiziert.

- Timeouts sind während des Trainings deaktiviert.

Sonstiges:

'timeout'"timeout""timeout""timeout""timeout":

Mit Hilfe dieses Parameters ist es möglich, dass find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode nach einer definierten Zeit (in ms) abbricht. Dies ist vor allem dann nützlich, wenn maximale Zykluszeiten eingehalten werden müssen. Alle bis zu diesem Abbruch gewonnenen Ergebnisse sind anschließend verfügbar und können mit get_bar_code_resultget_bar_code_resultGetBarCodeResultGetBarCodeResultGetBarCodeResult abgerufen werden. Werden Werte kleiner oder gleich Null übergeben, wird der Timeout deaktiviert (Default).

Die zeitliche Genauigkeit des Timeouts liegt bei ca. 10 ms. Sie hängt von vielen Faktoren ab, u.a. von der Geschwindigkeit des Rechners und dem 'timer_mode'"timer_mode""timer_mode""timer_mode""timer_mode", der über set_systemset_systemSetSystemSetSystemSetSystem gesetzt wurde.

find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode wirft keinen Fehler, falls ein Timeout auftritt. Um zu prüfen, ob find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode abgebrochen wurde, kann der Parameter 'aborted'"aborted""aborted""aborted""aborted" mit get_bar_code_resultget_bar_code_resultGetBarCodeResultGetBarCodeResultGetBarCodeResult abgefragt werden.

Im Trainingsmodus von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode wird der Timeout ignoriert.

Typische Werte: 'false'"false""false""false""false", 20 .. 100

Standardwert: 'false'"false""false""false""false"

'abort'"abort""abort""abort""abort":

Mit dieser Option ist es möglich find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode von einem anderen Thread aus abzubrechen. Wenn set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam mit 'abort'"abort""abort""abort""abort" aufgerufen wird, wird einer Instanz von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode mit dem Model BarCodeHandleBarCodeHandleBarCodeHandleBarCodeHandlebarCodeHandle in einem anderen Thread signalisiert abzubrechen. Falls es keine solche find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode Instanz mit diesem Model gibt, passiert nichts.

Es ist möglich, dass der Operator find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode nicht sofort abbricht. Er muss zunächst einen interner Abbruchpunkt erreichen, an dem ein sauberes Verlassen des Operators möglich ist. Dies hängt von Rahmenbedingungen wie Rechnerleistung ab und kann ungefähr bis zu 10ms benötigen. Im Trainingsmodus von find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode wird der Parameter ignoriert.

Hinweis: Dies ist die einzige Aktion mit Barcode Handles, die von unterschiedlichen Threads genutzt werden kann, ohne dass zusätzliche Synchronisierung nötig ist.

Standardwert: 'true'"true""true""true""true" (Der Wert wird nicht ausgewertet.)

'persistence'"persistence""persistence""persistence""persistence":

Steuert, ob bestimmte Zwischenergebnisse bei der Symbolsuche mit find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode temporär oder persistent im Modell gespeichert werden sollen. Zur Zeit ist es erforderlich 'persistence'"persistence""persistence""persistence""persistence" einzuschalten ('persistence'"persistence""persistence""persistence""persistence" = 1), wenn die Barcode Druckqualität bewertet werden muss (get_bar_code_resultget_bar_code_resultGetBarCodeResultGetBarCodeResultGetBarCodeResult mit Parameter 'quality_isoiec15416'"quality_isoiec15416""quality_isoiec15416""quality_isoiec15416""quality_isoiec15416") oder die Dekodierungs- Scanlinien inspiziert werden müssen (get_bar_code_objectget_bar_code_objectGetBarCodeObjectGetBarCodeObjectGetBarCodeObject mit Parameter 'scanlines_all'"scanlines_all""scanlines_all""scanlines_all""scanlines_all" oder 'scanlines_valid'"scanlines_valid""scanlines_valid""scanlines_valid""scanlines_valid"). Mit Einschalten von 'persistence'"persistence""persistence""persistence""persistence" steigt der Speicherbedarf für den Barcode-Leser allerdings auch.

Werte: [0, 1]

Standardwert: 0

Ausführungsinformationen

Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:

Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.

Parameter

BarCodeHandleBarCodeHandleBarCodeHandleBarCodeHandlebarCodeHandle (input_control, Zustand wird modifiziert)  barcode HBarCode, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des zu verwendenden Barcode-Modells.

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Parameter, die für den Barcode eingestellt werden sollen.

Defaultwert: 'element_size_min' "element_size_min" "element_size_min" "element_size_min" "element_size_min"

Werteliste: 'abort'"abort""abort""abort""abort", 'barcode_height_min'"barcode_height_min""barcode_height_min""barcode_height_min""barcode_height_min", 'barcode_width_min'"barcode_width_min""barcode_width_min""barcode_width_min""barcode_width_min", 'check_char'"check_char""check_char""check_char""check_char", 'composite_code'"composite_code""composite_code""composite_code""composite_code", 'contrast_min'"contrast_min""contrast_min""contrast_min""contrast_min", 'element_size_max'"element_size_max""element_size_max""element_size_max""element_size_max", 'element_size_min'"element_size_min""element_size_min""element_size_min""element_size_min", 'element_size_variable'"element_size_variable""element_size_variable""element_size_variable""element_size_variable", 'majority_voting'"majority_voting""majority_voting""majority_voting""majority_voting", 'meas_thresh'"meas_thresh""meas_thresh""meas_thresh""meas_thresh", 'meas_thresh_abs'"meas_thresh_abs""meas_thresh_abs""meas_thresh_abs""meas_thresh_abs", 'merge_scanlines'"merge_scanlines""merge_scanlines""merge_scanlines""merge_scanlines", 'min_code_length'"min_code_length""min_code_length""min_code_length""min_code_length", 'min_identical_scanlines'"min_identical_scanlines""min_identical_scanlines""min_identical_scanlines""min_identical_scanlines", 'num_scanlines'"num_scanlines""num_scanlines""num_scanlines""num_scanlines", 'orientation'"orientation""orientation""orientation""orientation", 'orientation_tol'"orientation_tol""orientation_tol""orientation_tol""orientation_tol", 'persistence'"persistence""persistence""persistence""persistence", 'quiet_zone'"quiet_zone""quiet_zone""quiet_zone""quiet_zone", 'start_stop_tolerance'"start_stop_tolerance""start_stop_tolerance""start_stop_tolerance""start_stop_tolerance", 'stop_after_result_num'"stop_after_result_num""stop_after_result_num""stop_after_result_num""stop_after_result_num", 'timeout'"timeout""timeout""timeout""timeout", 'train'"train""train""train""train", 'upce_encodation'"upce_encodation""upce_encodation""upce_encodation""upce_encodation"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Werte der generischen Parameter, die für den Barcode eingestellt werden sollen.

Defaultwert: 8

Wertevorschläge: 0, 0.1, 1, 1.5, 2, 8, 32, 45, 'true'"true""true""true""true", 'false'"false""false""false""false", 'present'"present""present""present""present", 'absent'"absent""absent""absent""absent", 'none'"none""none""none""none", 'CC-A/B'"CC-A/B""CC-A/B""CC-A/B""CC-A/B", 'auto'"auto""auto""auto""auto", 'high'"high""high""high""high", 'low'"low""low""low""low", 'ucc-12'"ucc-12""ucc-12""ucc-12""ucc-12", 'zero-suppressed'"zero-suppressed""zero-suppressed""zero-suppressed""zero-suppressed"

Ergebnis

set_bar_code_paramset_bar_code_paramSetBarCodeParamSetBarCodeParamSetBarCodeParam liefert den Wert 2 (H_MSG_TRUE), falls die übergebenen Parameter korrekt sind. Ansonsten wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_bar_code_modelcreate_bar_code_modelCreateBarCodeModelCreateBarCodeModelCreateBarCodeModel

Nachfolger

find_bar_codefind_bar_codeFindBarCodeFindBarCodeFindBarCode

Alternativen

set_bar_code_param_specificset_bar_code_param_specificSetBarCodeParamSpecificSetBarCodeParamSpecificSetBarCodeParamSpecific

Modul

Bar Code