[go: up one dir, main page]

DE19640801A1 - Balkencodedekodierung mit Geschwindigkeitskompensation - Google Patents

Balkencodedekodierung mit Geschwindigkeitskompensation

Info

Publication number
DE19640801A1
DE19640801A1 DE19640801A DE19640801A DE19640801A1 DE 19640801 A1 DE19640801 A1 DE 19640801A1 DE 19640801 A DE19640801 A DE 19640801A DE 19640801 A DE19640801 A DE 19640801A DE 19640801 A1 DE19640801 A1 DE 19640801A1
Authority
DE
Germany
Prior art keywords
threshold
elements
display
decoding
narrow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19640801A
Other languages
English (en)
Other versions
DE19640801B4 (de
Inventor
Ming C Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pitney Bowes Inc
Original Assignee
Pitney Bowes Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Pitney Bowes Inc filed Critical Pitney Bowes Inc
Publication of DE19640801A1 publication Critical patent/DE19640801A1/de
Application granted granted Critical
Publication of DE19640801B4 publication Critical patent/DE19640801B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K7/00Methods or arrangements for sensing record carriers, e.g. for reading patterns
    • G06K7/10Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
    • G06K7/14Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Electromagnetism (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Character Input (AREA)
  • Character Discrimination (AREA)

Description

Gebiet der Erfindung
Diese Erfindung betrifft allgemein Dekodierung von Balkencodes. Insbesondere richtet sich diese Erfindung auf die Erzeugung eines Schwellwerts zur Verwendung bei der Dekodierung von Balkencode-Elementen, wenn die Abtastgeschwindigkeit variabel ist.
Hintergrund der Erfindung
Die Verwendung von Balkencodes in verschiedenen Industriezweigen hat in den vergangenen Jahren weit um sich gegriffen, mit dem Ergebnis, daß Balkencodes fast überall angetroffen werden. Balkencodes stellen durch Automatisierung der Wiedergewinnung von Information für viele Industriezweige Automationsvorteile bereit. Typischerweise kann Information, die in Balkencodes enthalten ist, schneller und mit wenigeren Fehlern als mit anderen Techniken, beispielsweise mit dem Ablesen von gedruckten Worten durch einen Menschen, zurückgewonnen werden. Wegen dieser Betriebsvorteile sind Balkencodes für einen breitgefächerten Bereich von Anwendungen angepaßt worden.
Beispielsweise verwendet der Industriezweig der Einzelhandelsgeschäfte Balkencodes, die auf Anhängern, Etiketten und Preisschildern, die an der Ware für eine Inventurführung, zur Preisinformation und zur Erzeugung von ausführlichen Kundenbelegen angebracht sind, gedruckt sind. In ähnlicher Weise verwendet der Industriezweig von Lebensmittelgeschäften Balkencodes, die direkt auf einem Produkt oder auf der Verpackung eines Produkts für die gleichen Zwecke aufgedruckt sind. Dies sind Beispiele von Anwendungen für Balkencodes am Verkaufspunkt. Jedoch existieren vielerlei andere Verwendungen für Balkencodes, die außerhalb des Anwendungsgebiets am Verkaufspunkt liegen. Ein Beispiel findet man in der Fahrzeugindustrie, wo Balkencodes intern zur Produktionssteuerung verwendet werden. Ein anderes Beispiel findet man in dem Industriezweig des Gesundheitswesens, bei dem Balkencodes für eine Patientenidentifikation und Probenverfolgung verwendet werden. Noch ein anderes Beispiel findet man in dem Verteidigungsministerium der Vereinigten Staaten (United States Department of Defense, DOD), welches von allen Zulieferern fordert, die Inhalte jedes an irgendeine militärische Organisation der Vereinigten Staaten zu liefernden Pakets in einem Balkencode-Etikett, welches an dem Paket angebracht wird, zu bezeichnen.
Eine andere Anwendungen, bei der Balkencodes weit verbreitet verwendet werden, ist in der Herstellung von Poststücken. Allgemein umfaßt das Postverarbeitungsgerät, welches für diesen Zweck verwendet wird, ein Einfügersystem. Einfügersysteme, die über 10.000 Poststücke pro Stunde erzeugen können, sind in dem technischen Gebiet altbekannt und werden allgemein von Organisationen wie beispielsweise Banken und Versicherungsgesellschaften verwendet, die ein großes Volumen von Postversendungen erzeugen, bei denen sich die Inhalte jedes Poststücks verändern. Oft sind die Eingaben an das Einfügersystem Computer-erzeugt und gedruckte Dokumente, wobei jedes Dokument Information darüber enthält, daß es für einen bestimmten Empfänger vorgesehen ist. Die Funktion des Einfügersystems besteht darin, die Dokumente anzunehmen und die einzelnen Postversendungen zu erzeugen, die jedem Dokument entsprechen. Um dies durchzuführen umfaßt der typische Einfüger eine Vielzahl von Modulen zum Ausführen von verschiedenen Vorgängen für die Dokumente, die durch den Einfüger laufen, beispielsweise: Behandlungsmodule für verschiedene Gewebe (Schlitzer, Schneider und Burster) zum Trennen der kontinuierlichen Formen i n einzelne oder diskrete Dokumente, einen Blattzuführer-Modul zum Zuführen von einzelnen geschnittenen Blättern, einen Akkumulator-Modul zum Zusammenfassen der Blätter und/oder Dokumente in eine Kollationierung oder Sortierfolge, einen Faltmodul zum Falten der Kollationierung in eine gewünschte Konfiguration (Z-Faltung, C-Faltung, Halb-Faltung), ein Transport-/Staffelungs-Modul zum Transportieren der Kollationierung und zum Einordnen der Kollationierung in einer Warteschlange, eine Vielzahl von Anlage-Zuführer-Modulen zum Zusammenfassen und Hinzufügen eines Pakets von Anlagen zu der Kollationierung, ein Einfügungsstations-Modul zum Einfügen der Kollationierung in einen Umschlag, und ein Steuersystem zum Synchronisieren des Betriebs des gesamten Einfügersystems, um sicherzustellen, daß die Kollationierungen richtig zusammengesetzt werden. Beispiele von derartigen Einfügersystemen sind die 8 SerieTM, 9 SerieTM und SpektrumTM Einfügersysteme, die von Pitney Bowes, Inc., Stamford, CT erhältlich sind.
Typischerweise wird eine Information zur Steuerung derartiger Einfügersysteme aus einem Steuerdokument durch einen Balkencode-Abtaster ausgelesen, der dem am weitesten stromaufwärts liegenden Modul in dem Einfügersystem zugeordnet ist. Das Steuerdokument ist allgemein ein Adressen führendes Dokument, welches einen Balkencode und andere Information enthält, die für einen bestimmten Empfänger spezifisch ist. Der Balkencode enthält eine Steuerinformation, um weiter stromabwärts gelegene Module darüber zu instruieren, wie ein bestimmtes Poststück zusammengesetzt werden soll. Allgemein definiert die Steuerinformation: Die Anzahl von Formen oder Blättern, die in eine Kollationierung zusammengebracht werden sollen, die Anzahl von Anlagen von jedem der Anlagen-Zuführer-Module, die in die Kollationierung zusammengesetzt werden sollen, und Information für andere Zwecke, beispielsweise für die Auswahl eines geeigneten Portos. Ein Beispiel der Verwendung von Balkencodes in Einfügersystemen ist in dem United States Patent Nr. 5,008,520 bereitgestellt, welches den Titel VERFAHREN UND VORRICHTUNG ZUM LESEN EINES BALKENCODES AUF EINEM SICH BEWEGENDEN BLATT trägt, am 16. April 1991 ausgegeben wurde und dem Anmelder der vorliegenden Erfindung übertragen wurde.
Typischerweise bestehen Balkencodes aus einer alternierenden Folge von schwarzen und weißen rechteckigen Spalten oder Elementen. Die Elemente sind parallel zueinander ausgerichtet und besitzen gewöhnlicherweise unterschiedliche Breiten. Allgemein ist eine Reihe von Elementen erforderlich, um ein einzelnes Zeichen zu definieren, beispielsweise den Buchstaben A. Es ist in der Industrie typische Praxis die Breiten und die Anordnung der Elemente zu verändern, um so unterschiedliche Zeichen zu definieren. Deshalb weist jedes Zeichen eine einzigartige Definition oder Symbolisierung auf, um sie von anderen Zeichen zu unterscheiden.
Das Lesen von Balkencodes wird allgemein mit einem Abtastersystem erzielt. Obwohl verschiedene Typen von Abtastern (Wand, Kanone, X-Fenster, fester Strahl etc.) vorhanden sind, arbeiten sie alle mit den gleichen Grundprinzipien. Typischerweise umfaßt der Abtaster eine Lichtquelle, eine Optik zum Richten der Lichtquelle auf den Balkencode und einen Sensor zum Erfassen des Lichtbetrags, der von dem Balkencode zurückreflektiert wird. Wenn der Balkencode und die Lichtquelle relativ zueinander bewegt werden, beleuchtet die Lichtquelle sequentiell jedes Element. Weil die weißen Elemente des Balkencodes mehr Licht als die schwarzen Elemente reflektieren, kann der Sensor dann zwischen ihnen unterscheiden. Solange der Balkencode und die Lichtquelle relativ zueinander bei einer konstanten Geschwindigkeit bewegt werden, kann ferner eine Bestimmung bezüglich der Breite jedes Elements durchgeführt werden, indem die Zeit zurückverfolgt wird, die die Lichtquelle auf jedem Element verbringt. Dies wird typischerweise durch Aufnahme von Abtastungen oder Abtastwerten des Sensorausgangs bei einer festen Rate und durch Zählen der Anzahl von Abtastungen pro Element erreicht. Somit besitzt die Abtastzählung (der Abtastzählwert) pro Element einen umgekehrten Zusammenhang zu der relativen Geschwindigkeit zwischen dem Balkencode und der Lichtquelle. Deshalb weisen breitere Elemente größere Abtastzählungen als schmalere Elemente auf, was somit im Abtastersystem erlaubt, zwischen breiten und schmalen Elementen zu unterscheiden.
Ein Dekoder empfängt diese Daten von dem Abtaster und entschlüsselt den Balkencode in entsprechende Zeichen. Typischerweise wandelt der Dekoder zuerst die Daten von dem Abtaster in binäre Darstellungen um. Dann wandelt der Dekoder unter Verwendung der binären Darstellungen und einer vorgegebenen Symbolik-Definition die binären Darstellungen in entsprechende Zeichen um.
Obwohl derartige Abtaster- und Dekoder-Systeme allgemein gut arbeiten, existieren Probleme, wenn versucht wird, den Balkencode zu entschlüsseln, wenn die relative Geschwindigkeit zwischen dem Balkencode und der Lichtquelle variabel ist. Mit anderen Worten ist die Geschwindigkeit, mit der die Lichtquelle und der Balkencode sich relativ zueinander bewegen nicht konstant, sondern ist anstelle davon einer Beschleunigung und Verzögerung ausgesetzt. Wenn der Dekoder eine gegebene Abtastzählung für ein schmales Element erkannt hat und danach die relative Geschwindigkeit signifikant ansteigt, dann kann die gleiche Abtastzählung für ein nachfolgendes breiteres Element die gleiche sein oder sogar kleiner als die Abtastzählung für das frühere schmale Element. Unter diesen Umständen kann der Dekoder nicht zwischen breiten und schmalen Elementen unterscheiden, was zu einem Entschlüsselungsfehler führt.
Einige herkömmliche Systeme haben dieses Problem adressiert, indem Barcode-Überprüfungseinrichtungen verwendet werden, um die Effekte einer variablen relativen Geschwindigkeit herauszusubtrahieren. Derartige Systeme sind von Symbol Technologies, Inc. von Bohemia, NY. erhältlich. Ein Beispiel ist in dem United States Patent Nr. 5,369,260 offenbart, welches den Titel BALKENCODEABTASTUNG MIT EINER KORREKTUR FÜR EINE PUNKTGESCHWINDIGKEITSVERÄNDERUNG trägt und am 29. November 1994 ausgegeben wurde. Überprüfungseinrichtungen arbeiten durch Abtasten eines Kalibrierungs-Balkencodes mit einer bekannten Abfolge von Elementen einer konstanten Breite und durch Speichern der Abtastzählungen für jedes Element des Kalibrierungs-Balkencodes. Unter Verwendung dieser Serie von Abtastzählungen wird ein Geschwindigkeitsprofil berechnet, welches für die Änderung der relativen Geschwindigkeit, die für den Kalibrierungs-Balkencode auftritt, repräsentativ ist.
Dieses Geschwindigkeitsprofil wird dann verwendet, um Geschwindigkeitsveränderungen in nachfolgenden Balkencodes herauszusubtrahieren oder einzustellen.
Obwohl diese herkömmlichen Systeme allgemein gut arbeiten, weisen sie mehrere Nachteile auf. Ein Problem besteht darin, daß diese Technik annimmt, daß die Geschwindigkeitsveränderungen, die für den Kalibrierungs-Balkencode aufgezeigt werden, konsistent und wiederholbar für alle nachfolgenden Balkencodes vorhersagbar sind. Somit ist diese Technik nicht adaptiv und kompensiert sich verändernde Betriebsbedingungen nicht. Wenn beispielsweise die Geschwindigkeitsveränderungen allgemein wiederholbar wären, aber sich Bedingungen ändern würden, so daß die Geschwindigkeitsveränderungen nicht länger die gleichen wie für den Kalibrierungs-Balkencode wären, dann würde diese Technik für eine genaue Entschlüsselung, nachdem die Bedingungen sich geändert haben, unzureichend sein. Ein noch größeres Problem besteht darin, wenn die Geschwindigkeitsveränderungen nicht wiederholbar oder vollständig zufällig von Balkencode zu Balkencode sind. In diesem Fall würden Entschlüsselungsfehler wahrscheinlich sofort von dem Beginn an auftreten. Ein anderes Problem besteht darin, daß diese Technik zeitaufwendig ist und für den Aufbau einen erfahrenen Betreiber unter Verwendung von ausgefeiltem Gerät erfordert.
Andere herkömmliche Systeme wollten dieses Problem angehen, indem ausgefeilte Geschwindigkeitskodierer zum aktiven Messen der relativen Geschwindigkeitsveränderungen verwendet werden. Diese Information wird dann an den Dekoder zurückgeführt, so daß Einstellungen bei der Dekodierungsprozedur vorgenommen werden können. Obwohl diese Systeme allgemein gut arbeiten, ist deren Implementierung kostenaufwendig und erhöht auch die Komplexität des Gesamtsystems.
Ein anderes Problem ist der weite Bereich von zulässigen Balkencodes für eine bestimmte Balkencode-Spezifikation. Beispielsweise weist der Balkencode des Typs Code 39 definitionsgemäß nur zwei mögliche Breiten für Elemente auf, nämlich schmal oder breit. Jedoch kann die Breite des schmalen Elements in Abhängigkeit von der Dichte, mit der der Balkencode aufgedruckt wird, in einem Bereich von 0,01 Inch bis 0,040 Inch liegen. Ferner kann das Breitenverhältnis (die Breite eines breiten Elements geteilt durch die Breite eines schmalen Elements) in einem Bereich von zwei bis drei liegen. Deshalb existiert ein breites Spektrum von akzeptablen Balkencode-Formaten, die die Code 39 Spezifikation erfüllen.
Dieses Problem ist insbesondere dann schwerwiegend, wenn Balkencodes in einem Einfügersystem abgetastet werden. Das genaue Format des Code 39 Balkencodes auf dem Steuerdokument wird durch die Benutzer oder Käufer des Einfügersystems bestimmt. Deshalb wird von dem Abtaster des Einfügersystems gefordert, daß er irgendeinen von den Benutzern gewählten Code 39 Balkencode entschlüsselt, vorausgesetzt, daß er mit der Code 39 Spezifikation übereinstimmt. Eine kundenspezifische Ausführung des Abtasters für jede Installation, so daß er ein bestimmtes Format liest, ist nicht nur kostenaufwendig und zeitaufwendig, sondern es erlaubt dem Benutzer die Flexibilität in der Zukunft nicht, auf ein anderes Code 39 Format überzugehen.
Deshalb ist es offensichtlich, daß eine Notwendigkeit für ein Balkencode-Dekodierungssystem mit einer Geschwindigkeits- Größen- und Dichte-Kompensation besteht, welches sich einfach, kostengünstig und automatisch auf: (1) den Breitenbereich von zulässigen Balkencodes, (2) verschiedene Balkencode-Dichten, und (3) sich verändernde Geschwindigkeitsveränderungs-Bedingungen anpaßt, so daß Balkencodes genau entschlüsselt werden können.
Zusammenfassung der Erfindung
Allgemein offenbart die vorliegende Erfindung ein Verfahren zum dynamischen Herstellen einer Vielzahl von Schwellwerten zur Verwendung bei der Dekodierung eines Balkencode-Symbols mit einer Vielzahl von Zeichen, wobei jedes Zeichen eine Vielzahl von breiten und schmalen Elementen umfaßt. Zusätzlich umfaßt das Symbol auch ein erstes Zeichen, welches Elemente einer bekannten Abfolge und eines bekannten Typs aufweist. Das Verfahren umfaßt die folgenden Schritte: (a) Führen einer Anzeige über einen Zeitbetrag, zu dem eine Lichtquelle von einem Abtastersystem ein gewähltes Element aus dem ersten Zeichen beleuchtet, (b) Herstellen eines gegenwärtigen Schwellwerts als das Produkt eines Dekodierfaktors mal dem gewählten Elementanzeiger zur Verwendung bei der Dekodierung eines zweiten Elements, (c) für jedes der Vielzahl von Elementen, Führen einer Anzeige über einen Zeitbetrag, zu dem die Lichtquelle von dem Abtastersystem die Vielzahl von Elementen jeweils beleuchtet, und (d) Einstellen des gegenwärtigen Schwellwerts unter Verwendung der Anzeigen vor einer Dekodierung eines nachfolgenden Elements.
Die besonderen Anzeigen, die verwendet werden, um den gegenwärtigen Schwellwert einzustellen, und wie diese Anzeigen verwendet werden, um den gegenwärtigen Schwellwert einzustellen, werden insbesondere unter Bezugnahme auf jede der bevorzugten Ausführungsformen diskutiert.
Gemäß einer ersten Ausführungsform werden nur die Anzeigen von den letzten zwei schmalen Elementen verwendet, um den gegenwärtigen Schwellwert einzustellen. Der gegenwärtige Schwellwert wird eingestellt, indem er gleich zu dem Durchschnitt der Anzeigen für die letzten zwei schmalen Elemente und dem Dekodierfaktor eingestellt wird.
Gemäß einer zweiten Ausführungsform wird eine Anzeige von dem jüngsten schmalen Element und eine gegenwärtige "gewichtete" Anzeige verwendet, um den gegenwärtigen Schwellwert einzustellen. Der gegenwärtige Schwellwert wird eingestellt, indem er gleich zu dem Durchschnitt der Anzeige für das jüngste schmale Element und der gegenwärtigen "gewichteten" Anzeige mal dem Dekodierfaktor eingestellt wird. Dabei wird die "gewichtete" Anzeige aus den Anzeigen für die schmalen Elemente abgeleitet.
Gemäß einer dritten Ausführungsform werden wieder nur die Anzeigen von den letzten zwei schmalen Elementen verwendet, um den gegenwärtigen Schwellwert einzustellen. Der gegenwärtige Schwellwert wird eingestellt, indem er mit dem Verhältnis der Anzeige von dem jüngsten schmalen Element über der Anzeige für das vorangehende schmale Element multipliziert wird.
Gemäß einer vierten Ausführungsform der Erfindung wird eine Anzeige eines Zeitbetrags geführt, für den die Lichtquelle von dem Abtastersystem jedes Zeichen beleuchtet. Der gegenwärtige Schwellwert T wird eingestellt, indem er mit dem Verhältnis der Anzeige für das jüngste Zeichen geteilt durch die Anzeige für das vorangehende Zeichen multipliziert wird, zur Verwendung bei der Dekodierung der Zeichen, die in einem nächsten Zeichen enthalten sind.
Gemäß einer fünften Ausführungsform der vorliegenden Erfindung werden beide Anzeigen für die schmalen und breiten Elemente verwendet, um den gegenwärtigen Schwellwert einzustellen. Diese Ausführungsform arbeitet ähnlich wie die erste Ausführungsform hinsichtlich der Anzeigen für die schmalen Elemente.
Deshalb ist es nun ersichtlich, daß die Erfindung im wesentlichen die voranstehend diskutierten Probleme umgeht. Zusätzliche Nutzen und Vorteile der Erfindung werden in der nachstehenden Beschreibung aufgeführt und sind teilweise aus der Beschreibung offensichtlich oder können durch Umsetzung der Erfindung in der Praxis gelernt werden. Die Nutzen und Vorteile der Erfindung können mittels der Vorgehensweisen und Kombinationen, die insbesondere in den beigefügten Ansprüchen aufgeführt sind, realisiert und erhalten werden.
Kurzbeschreibung der Zeichnungen
Die beiliegenden Zeichnungen, die in die Beschreibung eingebaut sind und einen Teil davon bilden, zeigen eine gegenwärtig bevorzugte Ausführungsform der Erfindung und dienen zusammen mit der voranstehend angegebenen Beschreibung und der nachstehend angegebenen ausführlichen Beschreibung der bevorzugten Ausführungsform der Erläuterung der Prinzipien der Erfindung. Wie überall in den Zeichnungen gezeigt, bezeichnen gleiche Bezugszahlen gleiche oder ähnliche Teile. In den Zeichnungen zeigen:
Fig. 1 ein Diagramm der Code 39 Balkencode-Symbolik;
Fig. 2 eine Darstellung eines Code 39 Balkencode-Symbols;
Fig. 3 eine diagrammartige Ansicht eines Abtastersystems gemäß der vorliegenden Erfindung;
Fig. 4 ein Flußdiagramm einer Prozedur START 600 gemäß der vorliegenden Erfindung;
Fig. 5A ein Flußdiagramm einer Prozedur DECODE 700 gemäß der vorliegenden Erfindung;
Fig. 5B ein Flußdiagramm einer Prozedur DECODE 750 gemäß der vorliegenden Erfindung;
Fig. 6 eine Tabelle, die ein Beispiel der Ausführungsformen der vorliegenden Erfindung unter Verwendung des Abtastersystems aus Fig. 3 zur Dekodierung eines Balkencode-Symbols enthalten.
Ausführliche Beschreibung der bevorzugten Ausführungsformen
Unter Bezugnahme auf Fig. 1 ist eine Code 39 Symbolik gezeigt. Der Balkencode des Typs 39 ist ein Beispiel eines binären Balkencodes mit variabler Breite. Die Zeichen 0-9, A-Z, -, ·, LEERSTELLE, +, *, /, + und % sind zusammen mit ihren entsprechenden Balkencode- und Binärcode-Mustern gezeigt. Es sei darauf hingewiesen, daß jedes Zeichen durch fünf schwarze Elemente und vier dazwischen liegende weiße Elemente für insgesamt neun Elemente pro Zeichen definiert ist. Zusätzlich sind nur zwei Größen von Zeichen vorhanden, nämlich schmal oder breit. Eine andere Anforderung der Code 39 Symbolik besteht darin, daß von den neun Elementen, die jedes Zeichen definieren, drei Elemente breit sein müssen, während die übrigen sechs Elemente schmal sein müssen. Demzufolge werden schmale Elemente, sowohl schwarze als auch weiße als "0" dekodiert, und breite Elemente, sowohl schwarze als auch weiße, werden als "1" dekodiert. Somit bestimmt die bestimmte Anordnung oder das Muster von schmalen oder breiten Elementen das Zeichen, welches gerade codiert ist.
Gemäß der Code 39 Spezifikation benötigt jedes Balkencode-Symbol eine führende Ruhezone, ein Startzeichen, eine Abfolge von einem oder mehreren Datenzeichen, ein Stopzeichen und eine hintere Ruhezone. Ein optionales Überprüfungszeichen kann ebenfalls enthalten sein. Ferner ist es erforderlich, daß die Stop- und Start-Zeichen immer Sternchen (*) sein müssen und jedes Zeichen durch einen Zeichenspalt getrennt sein muß. Code 39 Balkencode-Symbole können auch bei unterschiedlichen Dichten (Anzahl von Zeichen pro Inch) gedruckt werden, indem die Breite der Elemente verändert wird. Jedoch muß die Breite von breiten Elementen nicht immer zwei- bis dreimal diejenige der schmalen Elemente sein. Eine ausführlichere Beschreibung der Code 39 Spezifikation befindet sich in "Reading between the Lines: An Introduction to Bar Code Technology, die von den Autoren Craig K. Harmon und Russ Adams" verfügbar und von Helmers Publishing, Inc. veröffentlicht ist, welches hier durch Bezugnahme Teil der vorliegenden Anmeldung bildet.
Unter Bezugnahme auf Fig. 2 ist ein typisches Balkencode-Symbol 10 mit allen erforderlichen Komponenten gezeigt. Wenn das Balkencode-Symbol 10 in der mit dem Pfeil "A", bezeichneten Richtung abgetastet wird, dann enthält das Balkencode-Symbol 10 eine führende Ruhezone 12, ein Startzeichen "*", eine Folge von Datenzeichen "ABC", ein Stopzeichen "*" und eine hintere Ruhezone 14. Auch gezeigt ist eine Darstellung von: einem schmalen schwarzen Element 16, einem breiten schwarzen Element 18, einem schmalem weißen Element 20, einem breiten weißen Element 22 und einem Zeichenspalt 24.
Unter Bezugnahme auf Fig. 3 ist eine diagrammartige Ansicht eines Abtastersystems 50 gemäß der vorliegenden Erfindung gezeigt, welches ein typisches Symbol 100 in Code 39 Format abtastet. Das Abtastersystem 50 umfaßt einen Abtastkopf 51 und einen Dekoder 58. Der Abtastkopf 51 umfaßt eine Lichtquelle 52 zum Erzeugen eines Lichtstrahls 60, wobei der Lichtstrahl 60 in Richtung auf das Symbol 100 hin gerichtet wird, einen Sensor 54 zum Erfassen des Lichtbetrags, der von dem Symbol 100 reflektiert wird, und einen A/D-Wandler 56 zum Umwandeln des analogen Signals, welches von dem Sensor 54 erzeugt wird, in ein digitales Signal. Der Dekoder 58 tastet die digitalisierten Bilddaten ab, die von dem Abtastkopf 51 bereitgestellt werden, wenn sich der Strahl 60 relativ zu dem Symbol 100 bewegt, wobei jedes Element des Symbols 100 angetroffen wird. Der Dekoder 58 umfaßt einen Zähler 64 zur Führung (einer Zählung oder eines Zählwerts), der Anzahl von Abtastungen für jedes Element in dem Symbol 100, einen Schwellwertgenerator 56 und eine Dekodierungslogik 68. Da die Abtastungen bei einer bestimmten Rate auftreten, stellt der Abtastzählwert eine Anzeige über den Zeitbetrag bereit, über den die Lichtquelle 52 jedes Element beleuchtet. Unter Verwendung dieser Abtastzählwerte entschlüsselt der Dekoder 58 die Elemente des Symbols 100 in ihre entsprechenden binären Darstellungen und entschlüsselt die binären Darstellungen dann weiter in entsprechende Zeichen.
Unter Bezugnahme auf die Fig. 4 und 5A implementiert das Abtastersystem 50 Prozeduren START 600 und DECODE 700 gemäß einer ersten Ausführungsform der Erfindung. Die Prozedur START 600 wartet auf das erste Element eines Symbols und stellt einen Anfangsschwellwert ein, mit dem nachfolgende Elemente ausgewertet werden sollen. Dann wertet die Prozedur DECODE 700 nachfolgende Elemente aus und dekodiert diese, während Einstellungen an dem Anfangsschwellwert vorgenommen werden.
Die Prozedur START 600 beginnt eine Dekodierung eines Balkencodesymbols bei 602, indem eine Variable Cneu, die zum Führen einer Zählung der Anzahl von Abtastungen pro Element verwendet wird, gleich Null gesetzt wird. Bei 604 wird eine Bestimmung durchgeführt, ob ein Abtastwert oder eine Abtastung der Daten von dem Sensor 54 ein schwarzes Element anzeigt. Wenn nicht, geht die Prozedur START 600 durch sich selbst zurück und setzt eine Überprüfung nach einem schwarzen Element fort. Wenn die Abtastdaten ein schwarzes Element in der Tat anzeigen, dann wird bei 606 die Variable Cneu um eins implementiert. Somit sollte ersichtlich sein, daß die Prozedur START 600 nicht über 604 hinausgehen wird, bis das erste Element eines Symbols, welches immer schwarz ist, erfaßt wird. Bei 608 wird eine Bestimmung durchgeführt, ob die Abtastdaten von dem Sensor 54 ein weißes Element anzeigen. Wenn nicht, dann geht die Prozedur über eine Schleife nach 606 zurück, wo Cneu wieder um eins implementiert wird. Wenn jedoch die Abtastdaten ein weißes Element anzeigen, dann schreitet die Prozedur nach 610 fort. Es sollte ersichtlich sein, daß Cneu die Abtastzählung für das erste Element hält. Bei 610 wird eine Bestimmung dahingehend durchgeführt, ob Cneu innerhalb eines vorgegebenen Bereichs von akzeptierbaren Werten liegt. Der vorgegebene Bereich wird so eingerichtet, daß er fehlerhafte Lesungen oder Bedingungen, die für ein genaues Lesen und Dekodieren von Symbolen nicht günstig sind, heraussucht. Wenn Cneu außerhalb des vorgegebenen Bereichs ist, dann geht die Prozedur über eine Schleife nach 602 zurück, ohne das gegenwärtige Symbol zu dekodieren, um auf den Beginn des nächsten Symbols zu warten. Optional kann eine Fehlernachricht oder eine andere Anzeige erzeugt werden, um anzuzeigen, daß das gegenwärtige Symbol nicht dekodiert worden ist. Wenn andererseits Cneu nicht außerhalb des vorgegebenen Bereichs ist, dann wird bei 612 das erste Element ohne irgendeine Auswertung durch Ausgeben einer "0" dekodiert. Dies nutzt den Vorteil der Tatsache aus, daß das erste Zeichen eines Code 39 Symbols immer das Startzeichen "*" sein muß und sein erstes Element definitionsgemäß schmal ist. Als nächstes wird bei 614 ein Schwellwert T gleich 1,5 mal Cneu eingestellt. Der Schwellwert T wird verwendet, um die nachfolgenden Elemente zu dekodieren. Als nächstes wird bei 616 eine Variable Calt gleich Cneu gesetzt. Die Variable Calt wird verwendet, um nachfolgende Einstellungen für T durchzuführen, so wie ein Lesen des Symbols fortschreitet. Als nächstes schreitet die Prozedur START 600 bei 618 zur Prozedur DECODE 700 fort, um nachfolgende Elemente zu dekodieren.
Die Prozedur DECODE 700 beginnt bei 702, indem Cneu auf Null gesetzt wird. Bei 704 wird eine Bestimmung dahingehend durchgeführt, ob der Abtastdatenwert sich von einem Zustand vom Anzeigen eines schwarzen Elements auf ein weißes Element oder umgekehrt geändert hat. Wenn keine Änderung aufgetreten ist, dann wird bei 706 Cneu um eins inkrementiert und die Prozedur geht über eine Schleife nach 704 zurück. Wenn jedoch eine Änderung aufgetreten ist, dann rückt die Prozedur nach 708 fort. Somit ist ersichtlich, daß Cneu die Abtastzählung für die Elemente hält. Bei 708 wird eine Bestimmung dahingehend durchgeführt, ob Cneu außerhalb eines vorgegebenen Bereichs von akzeptablen Werten ist. Diese Bestimmung wird analog zu der Funktion ausgeführt, die in der Prozedur Start 600 bei 610 ausgeführt wird. Jedoch wird 708 auch zur Erkennung des Endes des Symbols dienen und eine Steuerung an die Prozedur START 600 zurückführen. Wenn Cneu außerhalb des vorgegebenen Bereichs ist, dann führt die Prozedur eine Steuerung an die Prozedur START 600 zurück. Optional kann eine Fehlermitteilung oder eine Symbol-Endanzeige je nach Fall erzeugt werden. Wenn andererseits Cneu nicht außerhalb des vorgegebenen Bereichs liegt, dann wird bei 710 eine Bestimmung durchgeführt, ob Cneu größer als der Schwellwert T ist. Wenn Cneu größer als T ist, dann wird bei 712 das Element als ein breites Element dekodiert, indem eine "1" vor einem Rücksprung nach 702 zur Verarbeitung des nächsten Elements ausgegeben wird. Wenn jedoch Cneu nicht größer als T ist, dann wird bei 714 das Element als ein schmales Element durch Ausgeben einer "0" dekodiert. Somit sollte ersichtlich sein, daß bei 614 T auf den Abtastzählwert des ersten Elements, welches schmal war, mal einem Dekodierungsfaktor, der 1,5 war, gesetzt wurde, um so zwischen nachfolgenden schmalen und breiten Elementen unterscheiden zu können. Weil breite Elemente zwei- oder dreimal breiter als schmale Elemente sind, dient 1,5 als ein geeigneter Dekodierungsfaktor. Als nächstes wird bei 716 T eingestellt, um irgendwelche Veränderungen in der relativen Geschwindigkeit zwischen dem Abtaster und dem Symbol zu kompensieren. Hierbei wird T gleich 1,5 mal der Durchschnitt der Abtastzählungen für die zwei jüngsten schmalen Elemente eingestellt. Es sei darauf hingewiesen, daß Calt die Abtastzählung des letzten schmalen Elements darstellt, während Cneu die Abtastzählung des gegenwärtigen schmalen Elements darstellt. Demzufolge können Calt und Cneu zusammenaddiert werden, durch 2 geteilt und dann mit 1,5 multipliziert werden, um einen neuen Schwellwert T zur Verwendung bei der Dekodierung des nächsten Elements zu bilden. Durch erneutes Berechnen eines neuen Schwellwerts T werden somit irgendwelche Änderungen in der relativen Geschwindigkeit zwischen dem Lichtstrahl und dem Symbol berücksichtigt. Dann wird bei 718 Calt gleich zu Cneu gesetzt, bevor die Prozedur durch eine Schleife nach 702 zurückgeht, um das nächste Element zu dekodieren. Die Prozedur DECODE 700 fährt in dieser Weise fort, bis das gesamte Symbol dekodiert worden ist.
Somit sollte ersichtlich sein, daß der Schwellwert T dynamisch eingestellt wird, um relative Geschwindigkeitsveränderungen zu kompensieren. Zusätzlich kompensiert der Anfangsschwellwert T, der von dem ersten Element des Startzeichens "*" hergestellt wird, die Dichte, mit der das Symbol gedruckt ist. Es ist wichtig darauf hinzuweisen, daß in dieser Ausführungsform nur die schmalen Elemente verwendet werden, um den Schwellwert T einzustellen. Da das Verhältnis von breiten Elementen zu schmalen Elementen nicht bekannt ist, ist es unmöglich, exakt die Abtastzählungen eines breiten Elements mit einem schmalen Element zu mitteln. Wenn beispielsweise bekannt wäre, daß die breiten Elemente dreimal so breit wie die schmalen Elemente sind, dann könnten die Abtastzählungen für ein breites Element und ein schmales Element gemittelt werden. Eine Vorgehensweise würde darin bestehen, die Abtastzählungen des breiten Elements zu der Abtastzählung des schmalen Elements zu addieren und dann die Summe durch vier zu teilen. Eine andere Vorgehensweise würde darin bestehen, die Abtastzählung des breiten Elements durch drei zu teilen und dann dieses Ergebnis zu der Abtastzählung des schmalen Elements zu addieren, bevor durch zwei geteilt wird. Jedoch ist es auch möglich, daß die breiten Elemente nur zweimal so breit wie die schmalen Elemente sind. In diesem Fall können die Abtastzählungen für ein breites Element und ein schmales Element nicht zusammen unter Verwendung der Techniken für ein Breitenverhältnis von drei gemittelt werden. Die Techniken müßten modifiziert werden, um das unterschiedliche Breitenverhältnis zu berücksichtigen. Außer wenn das exakte Verhältnis bekannt ist, kann somit die Abtastzählung eines schmalen Elements nicht mit denjenigen eines breiten Elements gemittelt werden. Da glücklicherweise nur drei der neun Elemente breit sind, gibt es viele schmale Elemente, um den Schwellwert T einzustellen. Die Verwendung nur der schmalen Elemente bewirkt in den meisten Fällen keine Dekodierungsschwierigkeiten wegen: (1) den praktischen Begrenzungen einer Beschleunigung und Verzögerung des Abtastens des Balkencode-Symbols, (2) den kleinen schmalen linearen Abständen von Element zu Element, und (3) der in den Dekodierungsfaktor eingebaute Toleranz.
Gemäß einer zweiten Ausführungsform der Erfindung wird der Algorithmus der Prozedur DECODE 700 geändert, um so einen "gewichteten" Durchschnitt der Abtastzählungen er letzten zwei schmalen Elemente zu entwickeln. In dieser Ausführungsform würde bei 718 Calt gleich zu der Summe aus Calt und Cneu geteilt durch zwei eingestellt werden. Somit würde die zweite Ausführungsform nicht so schnell wie die erste Ausführungsform auf Geschwindigkeitsveränderungen ansprechen. Jedoch würde die zweite Ausführungsform gegenüber einzelnen Abtastzählungen weniger empfindlich sein. Wenn deshalb eine Abtastzählung durch eine schlechte Druckqualität oder wegen anderer Gründe ungeeignet beeinflußt worden ist, dann kann die zweite Ausführungsform durch diese falsche Abtastzählung nicht übermäßig beeinflußt werden.
Gemäß einer dritten Ausführungsform der Erfindung wird der Algorithmus der Prozedur DECODE 700 modifiziert, um so eine prozentuale Änderung in den Abtastzählungen der letzten zwei schmalen Elemente zu entwickeln. Dann wird diese gleiche prozentuale Änderung auf den Schwellwert angewendet, um einen neuen Schwellwert zu entwickeln. In dieser Ausführungsform wird bei 716 T gleich T mal dem Verhältnis von Cneu geteilt durch Calt eingestellt werden. Wenn somit Cneu 10% kleiner als Calt sein würde, dann würde auch T auf 10% eingestellt werden.
Gemäß einer vierten Ausführungsform der Erfindung wird der Algorithmus der Prozedur DECODE 700 verändert, so daß die Abtastzählung für jedes Zeichen mit der Abtastzählung für das letzte Zeichen verglichen wird, um eine Einstellung für den Schwellwert T zu entwickeln. Da jedes Zeichen exakt sechs schmale Elemente und drei breite Elemente aufweist, besitzt jedes Zeichen in irgendeinem gegebenen Symbol exakt die gleiche Länge, und zwar unabhängig von der verwendeten Dichte oder dem verwendeten Breitenverhältnis. Deshalb wird der Anfangsschwellwert T eingestellt, indem er mit dem Verhältnis der Gesamtabtastzählung für ein eben abgeschlossenes Zeichen geteilt durch die Gesamtabtastzählung für das vorangehend abgeschlossene Zeichen multipliziert wird. Somit ist der Schwellwert T für jedes Element innerhalb eines Zeichens konstant und stellt sich dann entsprechend für das erste Element jedes nachfolgenden Zeichens ein. Denjenigen Personen, die mit der Technik vertraut sind, ist offensichtlich, daß diese Ausführungsform auf Änderungen in der Geschwindigkeit signifikant langsamer anspricht, als irgendeine der ersten, zweiten oder dritten Ausführungsformen. Jedoch ist die vierte Ausführungsform am tolerantesten gegenüber falschen Abtastzählungen für einzelne Elemente. Bei Anwendungen, bei denen die Änderungen in der Geschwindigkeit gering und ausgewogen sind, würde diese Ausführungsform wahrscheinlich zufriedenstellend arbeiten.
Gemäß einer fünften Ausführungsform der vorliegenden Erfindung werden auch die breiten Elemente zum Einstellen des Schwellwerts T verwendet, obwohl das Verhältnis der Breiten nicht bekannt ist. Die fünfte Ausführungsform ist dafür ausgelegt, um in Anwendungen zu arbeiten, bei denen die Geschwindigkeitsänderungen groß sind. Insbesondere ist sie so ausgelegt, daß sie einen schlechtestmöglichen Fall (Worst-Case-Fall) von Datenzeichen "QW", die bei einer Anwendung einer hohen Beschleunigung oder Verzögerung auftreten, aufnimmt, um einen Dekodierfehler zu verhindern. Unter Bezugnahme auf Fig. 1 ist ersichtlich, daß ein Zeichen "Q" mit drei aufeinander folgenden breiten Elementen endet, während ein Zeichen "W" mit drei aufeinander folgenden breiten Elementen beginnt. Wenn somit ein Zeichen "W" einem Zeichen "Q" folgt, dann wird somit eine Situation erzeugt, bei der insgesamt sechs aufeinander folgende breite Elemente ohne irgendwelche dazwischen liegenden schmalen Elemente vorhanden sind. Wie voranstehend diskutiert wird die erste Ausführungsform, wenn sie dieser Situation gegenübergestellt wird, den Schwellwert T über den Verlauf dieser sechs breiten Elemente nicht einstellen. Bei Anwendungen, die keine hohen Beschleunigungen oder Verzögerungen erfahren, wird diese Situation wahrscheinlich keine Dekodierfehler erzeugen. Jedoch wird bei Anwendungen mit hoher Beschleunigung oder Verzögerung die Änderung in der Geschwindigkeit zwischen dem ersten breiten Element und dem letzten breiten Element in der Folge von sechs breiten Elementen so groß, daß ein Dekodierfehler verursacht wird, wenn der Schwellwert T nicht eingestellt werden würde. Die fünfte Ausführungsform adressiert dieses potentielle Problem.
Unter Bezugnahme auf Fig. 5B ist die Prozedur DECODE 750 der fünften Ausführungsform gezeigt, die aus der Prozedur DECODE 700 der ersten Ausführungsform adaptiert ist. In der fünften Ausführungsform wird der Schwellwert T für jedes schmale Element ähnlich wie bei der ersten Ausführungsform eingestellt. Jedoch wird der Schwellwert T auch eingestellt, wenn breite Elemente benachbart zu einander angetroffen werden. Die Prozedur DECODE 750 beginnt bei 751 durch Einstellen von W und Walt auf Null. Die Variable W verfolgt, ob das letzte dekodierte Element breit oder schmal war, während Walt eine Zählung der Anzahl von Abtastungen für das letzte breite Element führt. Bei 752 wird Cneu auf Null gesetzt. Bei 754 wird eine Bestimmung dahingehend durchgeführt, ob die Abtastdaten sich von einem Zustand von einem Anzeigen eines schwarzen Elements auf ein weißes Element oder umgekehrt geändert haben. Wenn keine Änderung aufgetreten ist, dann wird bei 756 Cneu um eins inkrementiert und die Prozedur geht über eine Schleife nach 754 zurück. Wenn jedoch eine Änderung aufgetreten ist, dann schreitet die Prozedur nach 758 fort. Bei 758 wird eine Bestimmung dahingehend durchgeführt, ob Cneu außerhalb eines vorgegebenen Bereichs von akzeptierbaren Werten liegt. Wenn Cneu außerhalb des vorgegebenen Bereichs liegt, dann übergibt die Prozedur eine Steuerung an die Prozedur START 600 zurück. Wenn andererseits Cneu nicht außerhalb des vorgegebenen Bereichs liegt, dann wird bei 760 eine Bestimmung durchgeführt, ob Cneu größer als ein Schwellwert T ist. Wenn Cneu nicht größer als T ist, dann wird bei 762 das Element als ein schmales Element dekodiert, indem eine "0" ausgegeben wird. Als nächstes wird bei 764 T eingestellt, um Änderungen in der relativen Geschwindigkeit zwischen dem Abtaster und dem Symbol zu kompensieren. Hierbei wird T gleich 1,5 mal dem Durchschnitt von Calt und Cneu gesetzt. Dann wird bei 766 Calt gleich zu Cneu gesetzt, W wird gleich Null gesetzt und Walt wird auf Null gesetzt, bevor die Prozedur über eine Schleife nach 752 zurückgeht, um das nächste Element zu dekodieren.
Wenn jedoch bei 760 Cneu größer als T ist, dann wird bei 768 das Element als ein breites Element dekodiert, indem eine "1" ausgegeben wird. Als nächstes wird bei 770 eine Bestimmung dahingehend durchgeführt, ob W gleich eins ist. Wenn W nicht gleich eins ist, dann wird bei 772 W auf eins gesetzt und Walt wird gleich zu Cneu gesetzt, bevor die Prozedur durch eine Schleife nach 752 zurückkehrt. In dieser Weise wird keine Einstellung für den Schwellwert T durchgeführt, wenn ein erstes breites Element angetroffen wird. Wenn jedoch bei 770 W gleich eins ist, dann wird bei 774 der Schwellwert T gleich T mal Cneu geteilt durch Walt gesetzt. In dieser Weise werden benachbarte breite Elemente benötigt, bevor eine Einstellung für den Schwellwert T durchgeführt wird. Der Block 766 stellt dies sicher, indem W und Walt gleich Null gesetzt werden, jedesmal wenn ein schmales Element angetroffen wird. Somit wird der Schwellwert T durch die prozentuale Änderung von Abtastzählungen für benachbarte breite Elemente eingestellt. Da die prozentuale Änderung in den Abtastzählungen verwendet wird, muß das Breitenverhältnis nicht bekannt sein. Deshalb ist diese Ausführungsform unabhängig von dem Breitenverhältnis. Als nächstes wird bei 776 Calt, der die Abtastzählung für das letzte schmale Element darstellt, in der gleichen Weise wie der Schwellwert T eingestellt, indem Calt gleich zu Calt mal Cneu geteilt durch Walt gesetzt wird. Wenn eine Abtastzählung für das nächste schmale Element erhalten wird, kann es somit mit einem eingestellten Wert der Abtastzählung für das letzte schmale Element gemittelt werden. Somit wird bei 778 Walt gleich zu Cneu gesetzt, bevor die Prozedur durch eine Schleife nach 752 zurückkehrt.
Es sollte nunmehr ersichtlich sein, daß zahlreiche unterschiedliche Algorithmen abgeleitet werden können, die den Schwellwert einstellen, wenn das Balkencode-Symbol abgetastet wird. Der gewählte exakte Algorithmus ist Gegenstand der Entwurfswahl in Abhängigkeit von den Erfordernissen einer bestimmten Anwendung und der Einfachheit einer Implementierung. Deshalb sind die voranstehend beschriebenen Ausführungsformen lediglich illustrativ und es ist nicht beabsichtigt, eine ausführliche Beschreibung aller möglichen Algorithmen bereitzustellen.
Es sollte nunmehr auch offensichtlich sein, daß die voranstehend beschriebenen Ausführungsformen auf diejenigen Anwendungen angepaßt sind, bei denen das Breitenverhältnis unbekannt oder ohne eine vorherige Unterrichtung Gegenstand einer Veränderung ist. Wenn jedoch das Breitenverhältnis bekannt und konstant von Symbol zu Symbol ist, dann können diejenigen Personen, die mit der Technik vertraut sind, die obigen Ausführungsformen mit nur einer geringen mathematischen Manipulation anpassen, so daß sie diesen Anwendungen besser angepaßt sind.
Unter Bezugnahme auf Fig. 6 ist eine Tabelle 200 gezeigt, die ein Beispiel der Ausführungsformen der vorliegenden Erfindung unter Verwendung des Abtastersystems 50 der Fig. 3 zum Dekodieren eines Symbols 100 enthält. Unter Bezugnahme auf die Fig. 3 und 6 nimmt dieses Beispiel die folgenden Betriebsbedingungen an: eine Abtastrate für das Abtastersystem 50 von 0,000002 Sekunden pro Abtastung, eine Breite für die schmalen Elemente von 0,010 Inch, eine Breite für die breiten Elemente von 0,025 Inch, eine Anfangsrelativgeschwindigkeit oder Abtastgeschwindigkeit von 15,0 Inch pro Sekunde und eine Beschleunigung von 4000,0 Inch pro Sekunde. Zur einfacheren Darstellung sind in dem Symbol 100 nur das Startzeichen "*", ein erstes Datenzeichen "T" und geeignete Zwischenzeichenabstände dargestellt. Direkt über jedem Element des Symbols 100 ist die Nummer des Elements in der Reihenfolge einer Abtastung angegeben. Die Tabelle 200 enthält die ungefähre Abtastgeschwindigkeit und den Abtastzählwert (d. h. die Abtastzählung) für jedes Element. In der Tabelle 200 sind auch für jedes Element die Schwellwerte gezeigt, die von den verschiedenen voranstehend diskutierten Ausführungsformen erhalten werden und dann verwendet werden, um die entsprechenden dekodierten Ausgabewerte zu erhalten. Zusätzlich ist für Vergleichszwecke ein Fall, bei dem ein Schwellwert nicht dynamisch eingestellt wird, gezeigt.
Der Fall ohne Einstellung, die erste, zweite, dritte, vierte und fünfte Ausführungsformen verhalten sich alle ähnlich bezüglich der Dekodierung der ersten zwei Elemente des Symbols 100. Ein Schwellwert wird nicht verwendet, um das erste Element des Startzeichens "*" zu dekodieren, da es bekannt ist, daß dieses Element schmal oder "0" sein muß. Jedoch wird die Abtastzählung für das erste Element verwendet, um einen Schwellwert zur Verwendung bei der Dekodierung des zweiten Elements herzustellen. Da die Abtastzählung für das erste Element 333 ist, wird der Schwellwert für das zweite Element gleich 500 (1,5 mal die Abtastzählung für das erste Element) eingestellt. Da die Abtastzählung für das zweite Element 707 ist, was größer als der Schwellwert ist, wird das zweite Element als breit oder "1" dekodiert. Von diesem Punkt an folgen der Fall ohne Einstellung, die erste, zweite, dritte, vierte und fünfte Ausführungsform ihren jeweiligen Algorithmen oder Schemata zum Dekodieren der übrigen Elemente. Die Ergebnisse, die von jedem Fall erhalten werden, sind in der Tabelle bereitgestellt. Irgendwelche Dekodierungsfehler sind mit einem Sternchen neben dem dekodierten Ausgabewert angezeigt.
Viele Merkmale der vorliegenden Ausführungsformen stellen Entwurfsauswahlen dar, die zur besten Ausnutzung des erfindungsgemäßen Konzepts gewählt sind, wie es in einer Anwendung implementiert ist, bei der das Breitenverhältnis nicht bekannt oder einer Gegenstand einer Änderung ist und die relative Geschwindigkeit nicht konstant ist. Ein Beispiel dieser Art von Anwendung ist in einem Einfügersystem, bei dem die Symbole nahe zu der führenden Kante eines Blatts aufgedruckt sind und das Abtastersystem betriebsmäßig mit einer stromaufwärts angeordneten Blattzuführungsvorrichtung gekoppelt ist. Ein Beispiel eines Einfügersystems, bei dem die vorliegende Erfindung verwendet werden kann, ist in dem United States Patent Nr. 5.008,520 offenbart, welches den Titel VERFAHREN UND VORRICHTUNG ZUM LESEN EINES BALKENCODES AUF EINEM SICH BEWEGENDEN BLATT trägt, am 16. April 1991 ausgegeben wurde, dem Anmelder der vorliegenden Erfindung übertragen wurde und insbesondere hierdurch Bezugnahme mit eingeschlossen ist. Die vorliegende Erfindung verbessert derartige Einfügersysteme, indem ein Abtasten der Symbole zugelassen wird, bevor das Blatt eine konstante Geschwindigkeit erreicht hat. Dies weist den praktischen Vorteil auf, daß ein Aufdrucken des Balkencode-Symbols nahe zu der führenden Kante eines Blatts zugelassen wird und daß der Balkencode-Abtaster fast sofort ein Lesen des Symbols beginnen kann. Diejenigen Personen, die mit der Technik vertraut sind, werden sicherlich andere Anwendungen für die vorliegende Erfindung finden.
Es ist wichtig, darauf hinzuweisen, daß die vorliegende Erfindung unabhängig von der Tatsache ist, ob: (1) sich das Symbol an einem festen Strahl vorbei bewegt, (2) das Symbol stationär ist, während es von einem sich bewegenden Strahl abgetastet wird, oder (3) das Symbol sich bewegt und von einem sich bewegenden Strahl abgetastet wird. Die vorliegende Erfindung ist insbesondere geeignet, um eine Anpassung auf irgendwelche Änderungen in der relativen Geschwindigkeit zwischen dem Symbol und dem Strahl oder der Lichtquelle vorzunehmen.
Es ist auch wichtig, darauf hinzuweisen, daß die Komponenten des Abtaster-Systems nicht notwendigerweise innerhalb des gleichen Gehäuses oder innerhalb der gleichen Einrichtung angeordnet werden müssen. Die vorliegende Erfindung hängt nicht von dem Typ, der Auswahl oder der Anordnung der Komponenten des Abtaster-Systems 50 ab.
Da die ersten neun Elemente des Startzeichens bekannt sind, ist denjenigen Personen, die mit der Technik vertraut sind, offensichtlich, daß keine bestimmte Notwendigkeit besteht, sogar einen Schwellwert zu verwenden, um irgendeines der ersten neun Elemente in einem Code 39 Symbol zu dekodieren. Deshalb ist es möglich, bis zu dem neunten Element des Startzeichens zu warten, welches wie das erste Element schmal ist, um einen Schwellwert für das erste Element des nächsten Zeichens zu bilden. Genauso könnte ein dazwischenliegendes schmales Element in dem Startzeichen verwendet werden.
Denjenigen Personen, die mit der Technik vertraut sind, ist auch offensichtlich, daß das Symbol in einen Puffer "gelesen" und dann nachher dekodiert werden kann. Somit muß das bekannte Zeichen nicht das erste gelesene Zeichen sein, sondern ist typischerweise das erste verarbeitete Zeichen.
Ferner ist die vorliegende Erfindung nicht auf die Verwendung nur mit Code 39 Symbolen beschränkt. Andererseits kann die vorliegende Erfindung bei jeder Anwendung, bei der ein Element oder ein Symbol bekannte Charakteristiken aufweist, verwendet werden. Ein derartiger Fall ist beispielsweise bei Anwendungen, bei denen Startzeichen verwendet werden, und zwar unabhängig von dem Typ der gewählten Balkencode-Definition.
Noch andere Modifikationen werden wahrscheinlich für diejenigen Personen, die mit der Technik vertraut sind, offensichtlich sein. Deshalb ist die Erfindung in ihren breiteren Aspekten nicht auf die spezifischen Details der vorliegenden Ausführungsformen beschränkt. Dementsprechend können verschiedene Modifikationen durchgeführt werden, ohne von dem Grundgedanken des allgemeinen erfinderischen Konzepts abzuweichen, so wie dies mit den beigefügten Ansprüchen und deren Äquivalenten definiert ist.

Claims (16)

1. Verfahren zum dynamischen Herstellen von Schwellwerten (T) zur Verwendung bei der Dekodierung eines Balkencode-Symbols (12, 14, 16, 18, 20, 22, 24, 10; 100) mit einer Vielzahl von Zeichen (* A, B, C, *), wobei jedes Zeichen eine Vielzahl von Elementen umfaßt, wobei die Vielzahl von Zeichen ein erstes Zeichen umfassen und das Verfahren die folgenden Schritte umfaßt:
  • (a) Führen einer ersten Anzeige (Cneu, Calt ) eines Zeitbetrags, über den eine Lichtquelle (52) von einem Abtastersystem (50) ein gewähltes Element des ersten Zeichens beleuchtet;
  • (b) Herstellen eines ersten Schwellwerts (T) auf Grundlage der ersten Anzeige (Cneu, Calt ) zur Verwendung bei einer Dekodierung eines zweiten Elements.
2. Verfahren nach Anspruch 1, ferner gekennzeichnet durch die folgenden Schritte:
  • (c) Führen einer zweiten Anzeige (Cneu, Calt , Walt) über einen Zeitbetrag, über den die Lichtquelle (52) von dem Abtastersystem (50) das zweite Element beleuchtet;
  • (d) Verwenden der zweiten Anzeige (Cneu, Calt, Walt) zur Herstellung eines zweiten Schwellwerts (CT) zur Verwendung bei der Dekodierung eines dritten Elements.
3. Verfahren nach Anspruch 2, ferner umfassend die folgenden Schritte:
  • (e) Führen einer dritten Anzeige (Cneu, Calt, Walt) über einen Zeitbetrag, über den die Lichtquelle (52) von dem Abtastersystem (50) das dritte Element beleuchtet; und danach
  • (d) Verwenden des zweiten Schwellwerts (T) zur Dekodierung eines vierten Elements.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß die Vielzahl von Elementen Elemente (16, 20) vom schmalen Typ und Elemente (18, 22) vom breiten Typ umfassen, und wobei das gewählte Element und das zweite Element beide vom schmalen Typ und das dritte und vierte Element beide vom breiten Typ sind.
5. Verfahren nach Anspruch 3, ferner umfassend die folgenden Schritte:
  • (f) Führen einer vierten Anzeige über den Zeitbetrag, über den die Lichtquelle (52) von dem Abtastersystem (50) das vierte Element beleuchtet; und danach
  • (g) Verwenden der dritten Anzeige und der vierten Anzeige zum Einstellen des zweiten Schwellwerts (T) zur Herstellung eines dritten Schwellwerts (T) zur Verwendung bei der Dekodierung eines fünften Elements.
6. Verfahren nach Anspruch 5, dadurch gekennzeichnet, daß die Vielzahl von Elementen Elemente (16, 20) vom schmalen Typ und Elemente (18, 22) vom breiten Typ umfassen, und daß das gewählte Element und das zweite Element beide vom schmalen Typ und das dritte und vierte Element beide vom breiten Typ sind.
7. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß
  • - der erste Schwellwert (T)gleich einem Dekodierfaktor mal der ersten Anzeige ist;
  • - der zweite Schwellwert (T) gleich zu dem Durchschnitt der ersten Anzeige und der zweiten Anzeige mal dem Dekodierungsfaktor ist.
8. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß
  • - der erste Schwellwert (T) gleich einem Dekodierfaktor mal der ersten Anzeige ist;
  • - der zweite Schwellwert (T) gleich dem Durchschnitt der Anzeige des ersten Elements und der zweiten Anzeige mal dem Dekodierungsfaktor ist; und
  • - der dritte Schwellwert (T) gleich zu dem Verhältnis der vierten Anzeige über der dritten Anzeige mal dem zweiten Schwellwert (T) ist.
9. Verfahren nach Anspruch 1, ferner umfassend die folgenden Schritte:
  • (c) Führen einer zweiten Anzeige (Cneu, Calt , Walt) über den Zeitbetrag, über den die Quelle (52) von dem Abtastersystem (50) einen ersten Abschnitt (12, 16, 18, *) des Symbols beleuchtet;
  • (d) Führen einer dritten Anzeige über den Zeitbetrag, über den die Lichtquelle (52) von dem Abtastersystem (50) einen zweiten Abschnitt (18) des Symbols beleuchtet; und
  • (e) Verwenden der zweiten Anzeige und der dritten Anzeige zum Einstellen des ersten Schwellwerts (T) zur Herstellung eines zweiten Schwellwerts (T) zur Verwendung bei der Dekodierung eines dritten Elements.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß:
  • - der erste Schwellwert (T) gleich einem Dekodierungsfaktor mal der ersten Anzeige ist;
  • - der zweite Schwellwert (T) gleich dem Verhältnis der dritten Anzeige über der zweiten Anzeige mal dem ersten Schwellwert ist.
11. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Vielzahl von Elementen Elemente (16, 20) vom schmalen Typ und Elemente (18, 22) vom breiten Typ umfassen und das gewählte Element (16, 20) von einem schmalen Typ ist, und ferner umfassend die folgenden Schritte:
  • (c) Führen einer zweiten Anzeige über den Zeitbetrag, über den die Lichtquelle (52) von dem Abtastersystem das zweite Element beleuchtet;
  • (d) wenn die zweite Anzeige kleiner als der erste Schwellwert (T) ist, Dekodieren des zweiten Elements (16, 20) als schmalen Typ;
  • (e) wenn das zweite Element (16, 20) ein schmaler Typ ist, Verwenden der zweiten Anzeige zum Einstellen des ersten Schwellwerts (T), um einen zweiten Schwellwert (T) zur Verwendung bei der Dekodierung eines dritten Elements herzustellen.
12. Verfahren nach Anspruch 11, ferner umfassend die folgenden Schritte:
  • (f) wenn die zweite Anzeige größer als der erste Schwellwert (T) ist, Dekodieren des zweiten Elements (18, 22) als breiten Typ;
  • (g) wenn das zweite Element (18, 22) von einem breiten Typ ist, Verwenden des ersten Schwellwerts (T) um ein drittes Element zu dekodieren.
13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, daß das zweite Element (16, 22) ein breiter Typ ist und ferner umfassend die folgenden Schritte:
  • (h) Führen einer dritten Anzeige über den Zeitbetrag, über den die Lichtquelle (52) von dem Abtastersystem (50) das dritte Element beleuchtet;
  • (i) wenn die dritte Anzeige kleiner als der erste Schwellwert (T) ist, Dekodieren des zweiten Elements (16, 20) als schmalen Typ;
  • (j) wenn das dritte Element (16, 20) ein schmaler Typ ist, Verwenden der dritten Anzeige zum Einstellen des ersten Schwellwerts (T), um einen zweiten Schwellwert (T) zur Verwendung bei der Dekodierung eines vierten Elements bereitzustellen;
  • (k) wenn die erste Anzeige größer als der erste Schwellwert (T) ist, Dekodieren des dritten Elements (18, 22) als breiten Typ; und
  • (l) wenn das dritte Element (18, 20) ein breiter Typ ist, Verwenden des Verhältnisses der dritten Anzeige über der zweiten Anzeige zum Einstellen des ersten Schwellwerts (T), um den zweiten Schwellwert (T) zur Verwendung bei der Dekodierung des vierten Elements bereitzustellen.
14. Verfahren zum dynamischen Herstellen von Schwellwerten (T) zur Verwendung bei der Dekodierung eines Balkencode-Symbols (10, 100, 12, 14, 16, 18, 20, 22, 24) mit einer Vielzahl von Zeichen (* A, B, C, *), wobei jedes Zeichen eine Vielzahl von Elementen (16, 18, 20, 22, 24) umfaßt, die Vielzahl von Zeichen ein bekanntes Zeichen (*) umfassen, wobei das Verfahren die folgenden Schritte umfaßt:
  • (a) Führen einer Anzeige über den Zeitbetrag, über den eine Lichtquelle (52) von einem Abtastersystem (50) ein gewähltes Element des bekannten Zeichens (*) beleuchtet; und
  • (b) Herstellen eines Schwellwerts (T) auf Grundlage der Anzeige.
15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, daß die Vielzahl von Elementen Elemente (16, 22) eines schmalen Typs umfaßt und ferner umfassend die folgenden Schritte:
  • (c) Führen einer nächsten Anzeige über einen Zeitbetrag, über den die Lichtquelle (52) von dem Abtastersystem (50) ein nächstes Element beleuchtet;
  • (d) Dekodieren des nächsten Elements (16, 20) als schmalen Typ, wenn die nächste Anzeige geringer als der Schwellwert (T) ist;
  • (e) wenn das nächste Element (16, 20) ein schmaler Typ ist, dann Verwenden der nächsten Anzeige zum Einstellen des Schwellwerts (T); und
  • (f) Wiederholen der Schritte (c) bis (e) für nachfolgende Elemente (18, 20, 22, 24).
16. Verfahren nach Anspruch 15, dadurch gekennzeichnet, daß die Vielzahl von Elementen (16, 20; 18, 22) Elemente (16, 20) vom breiten Typ umfassen, und ferner umfassend die folgenden Schritte:
  • (g) Dekodieren des nächsten Elements (18, 20) als breiten Typ, wen die nächste Anzeige größer als der Schwellwert (T) ist; und
  • (h) Verwenden von Anzeigen von einer Vielzahl von Elementen (18, 22) vom breiten Typ, um den Schwellwert (T) einzustellen.
DE19640801A 1995-10-02 1996-10-02 Verfahren zum dynamischen Erstellen von Schwellwerten Expired - Fee Related DE19640801B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/537,967 US5708261A (en) 1995-10-02 1995-10-02 Bar code decoding with speed compensation
US08/537,967 1995-10-02

Publications (2)

Publication Number Publication Date
DE19640801A1 true DE19640801A1 (de) 1997-04-24
DE19640801B4 DE19640801B4 (de) 2010-02-11

Family

ID=24144864

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19640801A Expired - Fee Related DE19640801B4 (de) 1995-10-02 1996-10-02 Verfahren zum dynamischen Erstellen von Schwellwerten

Country Status (3)

Country Link
US (1) US5708261A (de)
DE (1) DE19640801B4 (de)
GB (1) GB2306033B (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5877481A (en) * 1996-09-16 1999-03-02 The Standard Register Company Document dispenser with reading aperture formed in document guide
US6497366B1 (en) * 1997-12-31 2002-12-24 Ncr Corporation Methods and apparatus for dual channel video recovery in bar code scanners
US6614916B2 (en) * 2001-01-04 2003-09-02 Bell & Howell Mail And Messaging Technologies Company Machine vision system and triggering method
US6826445B2 (en) * 2002-02-25 2004-11-30 Pitney Bowes Inc. Method and apparatus for inserting checks into a bank statement mail piece
US20040112963A1 (en) * 2002-12-16 2004-06-17 Ncr Corporation Bar code scanner
US7311262B2 (en) * 2004-08-09 2007-12-25 Optoelectronics Co., Ltd. Method of decoding a symbol with a low contrast
US9652653B2 (en) * 2014-12-27 2017-05-16 Hand Held Products, Inc. Acceleration-based motion tolerance and predictive coding

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA955685A (en) * 1971-07-01 1974-10-01 Roland O. Barnes Rate adaptive nonsynchronous demodulator apparatus for two level binary signals
BE791469A (fr) * 1971-11-16 1973-03-16 Monarch Marking Systems Inc Enregistrement code et procede et systeme d'interpretation de cet enregistrement
SE356146B (de) * 1972-01-27 1973-05-14 Svenska Dataregister Ab
SE356147B (de) * 1972-01-27 1973-05-14 Svenska Dataregister Ab
DE2208309C3 (de) * 1972-02-22 1975-09-18 Nixdorf Computer Ag, 4790 Paderborn Verfahren zur Auswertung von Informationen in Form gruppenweise zusammengefaßter Informationselemente aus einfarbig gedruckten Strichen, Anordnung zur Darstellung von Informationen zur Auswertung nach dem Verfahren und Schaltungsanordnung zur Durchführung des Verfahrens
US3906202A (en) * 1974-03-01 1975-09-16 Monarch Marking Systems Inc Data retrieval and error detection method and apparatus designed for use in a width-modulated bar-code scanning apparatus
US4146046A (en) * 1973-11-16 1979-03-27 Monarch Marking Systems, Inc. Coded record and methods of and apparatus for encoding and decoding records
US4414468A (en) * 1981-05-18 1983-11-08 International Business Machines Corporation Systematic error correction in bar code scanner
US4438327A (en) * 1982-04-21 1984-03-20 Burr-Brown Research Corporation Bar code reading system and method
US4567361A (en) * 1983-05-23 1986-01-28 Gca Corporation Reticle bar code and method and apparatus for reading same
US4578570A (en) * 1984-08-14 1986-03-25 Ncr Canada Ltd.-Ncr Canada Ltee Bar code processing apparatus
JPS61101880A (ja) * 1984-10-24 1986-05-20 Sato :Kk バ−コ−ド読取方法および装置
US5036183A (en) * 1988-08-25 1991-07-30 Alps Electric Co., Ltd. Code reading device
US5008520A (en) * 1988-11-10 1991-04-16 John Georgiou Method and apparatus for reading a bar code on a moving sheet
US5157243A (en) * 1989-12-26 1992-10-20 Pitney Bowes Inc. High speed bar code scanning on inserters using pivotable moving beam bar codes scanners
US5241164A (en) * 1990-01-05 1993-08-31 Symbol Technologies, Inc. Method of decoding bar code symbols from partial scans
US5369260A (en) * 1993-04-08 1994-11-29 Symbol Technologies, Inc. Bar code scanning with correction for spot speed variation

Also Published As

Publication number Publication date
GB2306033B (en) 2000-06-07
GB2306033A (en) 1997-04-23
US5708261A (en) 1998-01-13
GB9619988D0 (en) 1996-11-13
DE19640801B4 (de) 2010-02-11

Similar Documents

Publication Publication Date Title
DE69221502T2 (de) Vorrichtung zum generieren von etiketten
DE4000603C5 (de) Verfahren und Vorrichtung zur Zwischenspeicherung von Gegenständen, wie Briefen o.ä. in einem Lesesystem
DE69330582T2 (de) Aufzeichnung mit kodierten Daten
DE69635512T2 (de) Verfahren zum Lesen eines zweidimensionalen Strichcodes ohne Taktsignal
DE2523112C2 (de) Vorrichtung zum Bearbeitung von Daten tragenden Schriftstücken
DE69225196T2 (de) Kombination aus Scanner, Rechner und Drucker
DE69207515T2 (de) Sortiervorrichtung für Poststücke
DE69228100T2 (de) System zum automatischen Drucken von Poststücken
DE69917217T2 (de) Verfahren und system zum identifizieren eines oder mehrerer gegenstände
DE69709165T2 (de) Vorrichtung und verfahren zur dekodierung von streifencode-symbolen durch quotenanalyse der modulformate
DE2212809B2 (de) Codemarke und Einrichtung zu ihrer Abtastung
DE1549673A1 (de) Zeichenlese- und -uebertragungsvorrichtung
DE19640801A1 (de) Balkencodedekodierung mit Geschwindigkeitskompensation
DE69029417T2 (de) Erkennungssystem für Zeichen mit magnetischer Tinte
DE69620068T2 (de) Verfahren und Vorrichtung zur Vorbereitung von Poststücken
DE69407369T2 (de) Verfahren und Vorrichtung zur Vorbereitung von zu verschickenden Poststücken
DE69029359T2 (de) Verfahren und Gerät zur Umformattierung von Druckdaten
DE68926379T2 (de) Verfahren und Vorrichtung zum Abtasten von Strichkodes auf einem laufenden Blatt
DE69731021T2 (de) Verfahren und Vorrichtung zum Lesen von Zeichen aus magnetischer Tinte
DE69811460T2 (de) Druck und Endbearbeitung von Dokumenten
WO1998058340A1 (de) Verfahren und vorrichtung zum zusammenführen und verbinden von kunststoffkarten und bedruckten kartenträgern
DE69017282T2 (de) Verfahren zum Vorbereiten eines abzusendenden Poststückes und System zur Durchführung dieses Verfahrens.
DE19708280C2 (de) Lesevorrichtung für vollständige Anschriften
EP1599343B1 (de) Drucksystem sowie verfahren und computerprogrammprodukt mit druckdatenintegritäts überwachung
DE60033432T2 (de) AUTHENTIFIZIERUNGSSYSTEM FüR POSTSENDUNGEN

Legal Events

Date Code Title Description
8125 Change of the main classification

Ipc: G06K 7/14

8110 Request for examination paragraph 44
8363 Opposition against the patent
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110502

R028 Decision that opposition inadmissible now final

Effective date: 20120929