DE3788264T2 - Verfahren und Gerät zur selbsttätigen Unterscheidung von strichkodierten Daten. - Google Patents

Verfahren und Gerät zur selbsttätigen Unterscheidung von strichkodierten Daten.

Info

Publication number
DE3788264T2
DE3788264T2 DE87308618T DE3788264T DE3788264T2 DE 3788264 T2 DE3788264 T2 DE 3788264T2 DE 87308618 T DE87308618 T DE 87308618T DE 3788264 T DE3788264 T DE 3788264T DE 3788264 T2 DE3788264 T2 DE 3788264T2
Authority
DE
Germany
Prior art keywords
ratio
bar code
bar
space
data
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.)
Expired - Fee Related
Application number
DE87308618T
Other languages
English (en)
Other versions
DE3788264D1 (de
Inventor
Thomas E Shuren
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.)
Mars Inc
Original Assignee
Mars 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 Mars Inc filed Critical Mars Inc
Publication of DE3788264D1 publication Critical patent/DE3788264D1/de
Application granted granted Critical
Publication of DE3788264T2 publication Critical patent/DE3788264T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/10544Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
    • G06K7/10821Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
    • G06K7/10851Circuits for pulse shaping, amplifying, eliminating noise signals, checking the function of the sensing device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06K7/1404Methods for optical code recognition
    • G06K7/1439Methods for optical code recognition including a method step for retrieval of the optical code
    • G06K7/1443Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Electromagnetism (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Toxicology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Record Information Processing For Printing (AREA)
  • Devices For Checking Fares Or Tickets At Control Points (AREA)
  • Machine Tool Sensing Apparatuses (AREA)
  • Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)
  • Sorting Of Articles (AREA)
  • Labeling Devices (AREA)
  • Discharge Of Articles From Conveyors (AREA)
  • Automatic Analysis And Handling Materials Therefor (AREA)
  • Cash Registers Or Receiving Machines (AREA)
  • Character Discrimination (AREA)
  • Printers Characterized By Their Purpose (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Crystals, And After-Treatments Of Crystals (AREA)

Description

    Gebiet der Erfindung
  • Die Erfindung betrifft allgemein ein verbessertes Verfahren und eine Vorrichtung zur selbständigen Erkennung, spezieller ein Verfahren und eine Vorrichtung zum Ermitteln des Orts von Strichcodedaten und zum unterscheiden zwischen mehreren schnell abgerasterten Strichcodes.
  • Beschreibung des Standes der Technik
  • Strichcodesymbole, die aus einem streifen abwechselnder dunkler Striche und heller Zwischenräume bestehen, sowie Strichcodescanner zum Lesen von Strichcodes werden in vielen Industriezweigen für eine Vielzahl von Aufgaben eingesetzt. Es existiert eine große Anzahl verschiedener Strichcodestandards. Z. B. werden die folgenden Codes mit weiter Verbreitung verwendet: Code 128, codabar, UPC/EAN, Code 11, Code 93, Interleaved 2 of 5 sowie Code 3 of 9. Damit ein Strichcodescanner allgemein anwendbar ist, sollte er dazu in der Lage sein, zwischen mehreren verschiedenen Strichcodeformaten unterscheiden zu können, und er sollte dies auf schnelle Weise können.
  • In Zusammenhang mit dem Decodieren von Daten in einem Strichcode ist selbständige Erkennung der Prozeß zum Unterscheiden eines Strichcodetyps von einem anderen. Typischerweise erfolgt die tatsächliche Unterscheidung auf Grundlage eines empirischen Verfahrens, wobei die vorherrschenden Strichcodetypen als Erste durchprobiert werden.
  • Typischerweise wird dann, wenn ein Strichcode abgerastert wird, ein Impulszug erzeugt, der die dunklen und hellen Bereiche des Strichcodes repräsentiert. Der Impuls muß zunächst in binäre Daten umgewandelt werden, bevor ein Decodieren stattfinden kann. Bei einer bekannten Technik wird ein Mikroprozessor dazu verwendet, die Dauer jedes Impulses zeitlich zu steuern. Der Mikroprozessor ist mit einer Softwareschleife programmiert, die die Länge jedes Impulses mißt. Immer dann, wenn der Mikroprozessor einen Polaritätswechsel feststellt, wird die Dauer des Impulses abgespeichert, und die Schleife wird rückgesetzt, um den nächsten Impuls zu zählen. Wenn ein Rastervorgang vollständig ist, werden die abgespeicherten Binärdaten decodiert. Das Decodieren muß vor dem nächsten Rastervorgang abgeschlossen sein.
  • Unter Verwendung dieser Technik wird die gesamte Zeit des Mikroprozessors dafür verwendet, den Impulszug zeitlich zu steuern; die gesammelten Daten können nur in der Zeitspanne zwischen Rastervorgängen decodiert werden. Bei einem Strichcodeleser mit Handbetrieb ist die Zeitspanne zwischen von Hand ausgeführten Rastervorgängen im allgemeinen lange genug, um selbständige Erkennung von Strichcodes unter Verwendung der obigen Technik auszuführen. Wenn ein automatischer Scanner verwendet wird, ist jedoch die Zeitspanne zwischen Rastervorgängen viel kürzer und kann nicht ausreichend lang dafür sein, um mehrere Strichcodetypen selbständig zu erkennen.
  • Zusätzlich muß, bevor ein Strichcode decodiert werden kann, der Startpunkt für den Code aufgefunden werden. Wenn ein Strichcode abgerastert wird, kann auch jedes andere Druckerzeugnis nahe dem Strichcode abgerastert und zusammen mit dem Strichcode in einem Puffer abgespeichert werden, in dem Daten des Rastervorgangs abgespeichert sind. Der Startpunkt kann im Strichcodepuffer hinter nicht zutreffenden Daten vergraben liegen. Jedoch müssen alle Strichcodes definitionsgemäß Raumbereiche aufweisen, die direkt vor und hinter dem Strichcode liegen. Diese Raumbereiche werden als Ränder bezeichnet.
  • Die Minimalrandgrößen, wie sie in der Spezifikation für jeden Strichcodetyp beschrieben ist, ist im allgemeinen das Zehnfache der minimalen Elementbreite dieses Strichcodes. Wenn mehr als ein Strichcodetyp durch einen Strichcodescanner abgerastert und decodiert werden kann, wird ein Gesamtminimalrand für einen Strichcode als kleinster Raumbereich festgelegt, der als Rand für einen der Strichcodetypen angesehen werden kann. Z. B. weist ein Strichcodetyp A eine minimale Elementbreite von 0,0100 Zoll und einen minimalen Rand von 0,1 Zoll auf (1 Zoll entspricht 2,54 cm). Ein Strichcodetyp B weist eine Minimalelementbreite von 0,105 Zoll und einen Minimalrand von 0,105 Zollauf. Der Gesamtminimalrand für einen Strichcodescanner zum Abrastern der Strichcodetypen A und B ist 0,1 Zoll; das Zehnfache der kleinsten Minimalelementbreite des Strichcode A. Jedoch ist ferner zu beachten, daß die Elementgröße durch den Abstand beeinflußt sein kann, aus dem der Strichcode abgerastert wird. Die Elemente erscheinen schmaler, wenn der Strichcodescanner weiter weg über den Strichcode bewegt wird. Um dies zu berücksichtigen, wird die Gesamtminimalrandgröße als das Zehnfache des schmalsten Elements berechnet, wenn dieses aus dem weitesten Abstand gerastert wird, mit dem es gerastert werden kann. Jeder Raumbereich, der größer als dieses Maß ist, ist ein Kandidat für einen Rand.
  • Ein weiteres Problem entsteht dann, wenn es erwünscht ist, einen Strichcodetyp mit einem relativ breiten Minimalelement zu decodieren. Wenn ein solcher Code aus kleinem Abstand abgerastert wird, ist der Minimalrand viel größer als der Gesamtminimalrand. Ein Zwischenraum mit einer Breite über dem Gesamtminimalrand, der jedoch nicht als Möglichkeit für einen Rand dieses Strichcodetyps in Frage kommt, kann beim Decodieren als Startpunkt versucht werden. Daraus resultieren geringere als erwünschte Erfolgsraten beim Decodieren solcher Strichcodes.
  • Die Erfolgsrate kann auch durch die Anzahl und die Unterschiede der abzurasternden Strichcodetypen beeinflußt sein. Geräte zum Decodieren zweier Strichcodetypen mit ähnlichen Minimalelementbreiten sollten ungefähr dieselbe Erfolgsrate beim Auffinden eines Randes haben, wie sie vorliegt, wenn dasselbe Gerät zum Decodieren nur eines der beiden ähnlichen Minimalbreiten-Strichcodes verwendet wird. Wenn jedoch das Gerät für einen dritten Strichcodetyp mit einer viel schmäleren Minimalbreite ausgebildet ist, als sie der Minimalbreite der zwei ähnlichen Strichcodes entspricht, ist die Erfolgsrate zum Auffinden eines gültigen Randes für die ersten zwei Typen verringert. Wenn noch mehr Strichcodetypen hinzugefügt werden, kann die Erfolgsrate zum Auffinden eines Randes noch weiter abgesenkt werden.
  • Eine geringe Erfolgsrate führt zu einem Geschwindigkeitsproblem, d. h., daß dann, wenn die Zeit zum Auffinden des Randes, damit das Decodieren beginnen kann, zu lange wird, der gesamte Decodierprozeß zu lange dauern kann.
  • US-A-3,882,464 zeigt einen Strichcodedecoder mit einem Paar Zeitgeber zur zeitlichen Steuerung der Dauer abgerasteter Striche und Zwischenräume und mit einer Logikschaltung zum Ermitteln, ob die Dauern für einen Zwischenraum und einen Strich in einem vorgegebenem Verhältnis von 2 : 1 liegen.
  • Zusammenfassung der Erfindung
  • Die Erfindung ist durch die Ansprüche festgelegt. Allgemein gesagt, begrenzt das erfindungsgemäße Verfahren zum selbständigen Erkennen von Strichcodedaten die Anzahl von Strichcodes, die zu Vergleichszwecken durchprobiert werden müssen, und zwar durch die folgenden Schritte: Abspeichern von den Zwischenraum- und Strichbreiten entsprechenden Daten eines abgerasterten Strichcodes von unbekanntem Formattyp in einem Speicher; Abrufen von Breitedaten für einen ersten Zwischenraum aus dem Speicher; Abrufen von Breitedaten für einen ersten Strich, der dem ersten Zwischenraum folgt, aus dem Speicher; Berechnen eines ersten Verhältnisses für die Breitedaten für den ersten Zwischenraum und den ersten Strich; Vergleichen des ersten Verhältnisses mit einer ersten vorgegebenen Zahl; und Ermitteln, aufgrund des Vergleichs, ob der erste Zwischenraum ein Strichcoderand ist oder nicht. Wenn der erste Zwischenraum ein Strichcoderand ist, wird die Randbreite (in Form des Verhältnisses) dazu verwendet, bestimmte Strichcodetypen auszuschließen, was die Anzahl von Typkandidaten verringert, zwischen denen beim Decodieren auszuwählen ist.
  • Es wird auch ein zugehöriges Gerät angegeben.
  • Zusätzliche Einzelheiten, Merkmale und Vorteile der Erfindung werden aus den Zeichnungen und der nachfolgenden detaillierten Diskussion deutlich.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist ein Schaltbild, das eine erfindungsgemäße Interruptverarbeitungstechnik veranschaulicht;
  • Fig. 2 ist ein Flußdiagramm, das erfindungsgemäße Interruptverarbeitungstechniken veranschaulicht;
  • Fig. 3 ist ein Flußdiagramm, das die erfindungsgemäße selbständige Erkennungstechnik veranschaulicht.
  • Detaillierte Beschreibung Interruptprozeß
  • Bei einem automatischen Strichcodescanner, wie dem in EP-A- 0 262 943 diskutierten Strichcodescanner, wird ein Strahl typischerweise in mehr oder weniger kontinuierlicher Weise für eine festgelegte Zeitspanne oder eine Anzahl von Durchläufen von einer Seite auf die andere abgelenkt oder durchgerastert. Das reflektierte Licht wird gesammelt und so verarbeitet, daß ein Impulszug erzeugt wird, der für die dunklen und hellen Bereiche auf der abgerasterten Fläche repräsentativ ist. Dieser Impulszug muß in die Form binärer Daten umgewandelt werden, um von einem Mikroprozessor decodiert werden zu können.
  • Eine bekannte Weise, um dies vorzunehmen, ist es, den Impulszug durch einen Mikroprozessor zu beobachten und mit einer softwareschleife, die den Wert für jeden Polaritätswechsel abspeichert, eine "Zeitmessung" für die Impulsdauern vorzunehmen. Dies erfordert jedoch die gesamte Zeit des Prozessors.
  • Die Erfindung gibt einen Lösungsweg an, der den Prozessor unter Verwendung der Hardwarezeitgeber und der Interruptmöglichkeiten des Mikroprozessors "befreit". Es ist zu beachten, daß diese Hardwarezeitgeber dazu in der Lage sind, zeitliche Inkremente mit viel kürzerem Wert zu messen, als er der Dauer des kleinsten abzurasternden Zwischenraums oder Strichs entspricht. Wenn der Impulszug und sein Komplementärwert, die Zwischenräume und Striche repräsentieren, den zwei Interruptpins des Mikroprozessors zugeführt werden (die auch die internen Zeitgeber des Mikroprozessors auftasten), kann die Zeit zwischen Impulsübergängen dafür verwendet werden, andere Softwareaufgaben wahrzunehmen, während die Hardware die Dauer des eingehenden Signals "zeitlich mißt". Diese "Zeitmessung" mißt die relativen Breiten der Striche und Zwischenräume. Wenn die Signalpolarität wechselt, hält ein Zeitgeber an und der andere beginnt, und es wird ein Interrupt erzeugt. Dieser Prozeß hängt davon ab, daß relativ gleichförmige Rastergeschwindigkeiten aufrechterhalten werden. Die Interruptroutine liest einfach den angehaltenen Zeitgeber aus, speichert den Datenwert ab und löscht den angehaltenen Zeitgeber, um ihn für den nächsten Zyklus bereitzumachen. Bei geeigneter Ausgestaltung kann der Prozessor die "freie" Zeit zwischen Zustandsänderung dafür verwenden, die zuletzt gesammelten Daten während des Aufzeichnens der aktuellen Daten in Echtzeit zu decodieren.
  • Fig. 1 veranschaulicht die erfindungsgemäße Interrupt-Verarbeitungstechnik. Fig. 1 zeigt die Hardwareinterruptpins, Interrupt 0 und Interrupt 1 eines Mikroprozessors 10. Sie zeigt auch einen Taktgeber 11, UND-Gatter 12-13, einen Zeitgeber 0 und einen Zeitgeber 1, die alle innere Komponenten sind, die im Mikroprozessor 10 untergebracht sind. Ein für Strichcode-Digitaldaten repräsentativer Impulszug 1, wie er zu decodieren ist, ist über einen Inverter 5 an Interrupt 0 angeschlossen, und dieser Impulszug 1 ist direkt an Interrupt 1 angeschlossen.
  • Der vorstehend beschriebene Anschluß des Mikroprozessors 10 an den Impulszug 1 wird dazu verwendet, den Impulszug zeitlich zu steuern. Der Impulszug 1 wird dem Eingang eines der Interruptpins des Prozessors zugeführt, dem Interrupt 1. Der Komplementärwert des Impulszugs wird dem zweiten Interruptpin, also Interrupt 0, zugeführt. Diese Interrupts sind für Kantentriggerung programmiert.
  • Wie im Flußdiagramm von Fig. 2 veranschaulicht, tasten die Interruptpins die internen Zeitgeber des Mikroprozessors, den Zeitgeber o und den Zeitgeber 1, auf. Wenn der Impulszug auf niedrigen Pegel geht, läuft der Zeitgeber 0, und ein Interrupt tritt am Interrupt 1 auf. Die Interruptroutine speichert den Wert des Zeitgebers 1 ab und setzt ihn zurück. Wenn der Impulszug auf hohen Pegel geht, läuft der Zeitgeber 1, und ein Interrupt tritt am Interrupt 0 auf. Die Interruptroutine speichert den Wert des Zeitgebers 0 ab und setzt ihn zurück.
  • Da die tatsächliche zeitliche Steuerung des Impulszugs 1 durch Hardware vorgenommen wird, ist der Zeitraum, in dem sich der Mikroprozessor 10 dem Decodieren widmen kann, stark erhöht. Die Datenerfassung erfordert Prozessorzeit nur beim Auftreten eines Interrupts, anders gesagt dann, wenn eine Änderung im Zustand des Impulszugs 1 auftritt. Während der Impulszug entweder dauernd auf hohem oder auf niedrigem Wert ist, ist der Mikroprozessor 10 frei, um die während eines vorangehenden Rastervorgangs erfaßten Daten zu decodieren.
  • Selbständige Erkennung
  • Bevor die unter Verwendung des obigen Verfahrens erfaßten Strichcodedaten decodiert werden können, ist es erforderlich, zu bestimmen, wo aktuelle Strichcodedaten beginnen und welcher Typ von mehreren Strichcodetypen abgerastert wurde. Um die Probleme der selbständigen Erkennung voll würdigen zu können, müssen einige Tatsachen bekannt sein. Ein Strichcode wird im allgemeinen abgerastert, während er von anderen Druckerzeugnissen umgeben ist, und demgemäß beinhalten die zu decodierenden Strichcodedaten sowohl irrelevante Daten als auch tatsächliche Strichcodedaten. Die irrelevanten Daten müssen zusammen mit den tatsächlichen Strichcodedaten ausgewertet werden. Geschwindigkeit kann ein wesentlicher Gesichtspunkt sein, da ein Scanner einen Durchlauf über einen Strichcode über etwa 40 ms abschließen kann. Demgemäß sind 40 ms abzüglich der Datenerfassungszeit die gesamte Zeit, die zum Decodieren zur Verfügung steht. Ferner kann es erforderlich sein, mindestens sieben Codetypen selbständig zu erkennen.
  • Abgerasterte Daten werden typischerweise in einem Pufferspeicher abgelegt. Alle weitverbreiteten Strichcodes erfordern einen Minimalzwischenraum auf beiden Seiten des Strichcode, der im allgemeinen dem Zehnfachen der Minimalelementgröße entspricht. Dieser Minimalzwischenraum wird "Rand" genannt. Wenn ein Rand lokalisiert wurde, kann daraufhin ein Versuch unternommen werden, die auf ihn folgenden Elemente in einen gültigen Strichcode zu decodieren.
  • Eine bekannte Technik zum Identifizieren möglicher Ränder oder Randkandidaten ist es, die Daten für irgendeinen Zwischenraum zu durchsuchen, der größer als ein spezieller Wert ist, jedoch ist dies eine grobe Technik, da die Abrastergeschwindigkeit und der Abstand vom Ziel die Relativgröße der Daten verändert. Die aktuelle Technik dient dazu, die Dauer eines Kandidatenzwischenraums durch die Dauer des im folgenden Strichs zu teilen. Das sich ergebende Verhältnis kann dazu verwendet werden, nicht nur zu entscheiden, ob es sich um einen gültigen Randkandidaten handelt, sondern in manchen Fällen kann es auch bestimmte Strichcodetypen ausschließen, wodurch der Prozeß der selbständigen Erkenntnis beschleunigt wird.
  • Die Grundlage für die neue Technik ist das Verhältnis der minimalen Randgröße zum Maximum der ersten oder letzten Strichgröße. Die erste und die letzte Strichgröße wird verwendet, da der Strichcode in beliebiger Richtung abgerastert werden kann. Die Erfindung wird weiter unten in Zusammenhang mit dem selbständigen Erkennen von sieben derzeit üblicherweise verwendeten Strichcodeformaten erörtert. Es ist zu beachten, daß die Lehre der Erfindung nicht auf diese speziellen Strichcodes beschränkt ist.
  • Die Verhältnisse für sieben übliche Strichcodetypen sind untenstehend dargestellt. Durch Versuche werden die Verhältnisse so eingestellt, daß sie Schwankungen in den gemessenen Strichen und Zwischenräumen aufgrund von Fehlern zulassen, wie sie durch Schwankungen in der Rastergeschwindigkeit, Schwankungen für Strichcodes, die auf unebener Oberfläche abgerastert werden, Schwankungen im Strichcodedruck und dergleichen verursacht werden. Die folgenden Schlüsse werden zwischen Verhältnissen und Strichcodetypen gezogen:
  • Verhältnis Strichcodetyp
  • < 3 der Zwischenraum kann kein Rand sein
  • > = 3 & < 4 Code 128 oder Codabar
  • > = 3 & < 6 UPC/EAN, Code 128 oder Codabar
  • > = 6 UPC/EAN, Code 128, Codabar, Code 11, Code 93, Interleaved 2 or 5, Code 3 of 9
  • Wenn das Verhältnis kleiner als drei ist, kann der Zwischenraum kein Rand sein. Wenn das Verhältnis größer als drei und kleiner als vier ist, kann der Zwischenraum ein Rand nur für den Code 128 oder den Codabar-Strichcode sein. Wenn das Verhältnis größer als 3 und kleiner als 6 ist, kann der Zwischenraum ein Rand nur für den Strichcode UPC/EAN, Codabar oder Code 128 sein. Ein Verhältnis größer oder gleich 6 bedeutet, daß der Zwischenraum ein Rand für einen beliebigen der sieben Strichcodetypen sein kann.
  • Fig. 1 zeigt einen mit einem Puffer 20 verbundenen Mikroprozessor 10. Der Puffer 20 speichert Decodierdaten für verschiedene Strichcodes ab, wie auch die zu decodierenden Strichcodedaten. Fig. 3 ist ein Flußdiagramm, das das aktuelle Verfahren zum selbständigen Erkennen der im Puffer 20 abgespeicherten Strichcodedaten veranschaulicht, wenn es auf das Decodieren der folgenden sieben Strichcodes angewandt wird: Code 128, Codabar, UPC/EAN, Code 11, Code 93, Interleaved 2 of 5 oder Code 3 of 9.
  • Der Prozeß beginnt damit, daß der Mikroprozessor 10 den nächsten Zwischenraum mit einer Dauer A aus dem Puffer 20 abruft. Dann wird der nächste Strich mit der Dauer B aus dem Puffer 20 abgerufen. Anschließend wird ermittelt, ob das Ende der Daten im Puffer 20 erreicht wurde, was dadurch erfolgt, daß nachgeprüft wird, ob die Strichdauer B = 0 ist. Ist dies nicht der Fall, wird das Verhältnis C der Zwischenraumdauer A zur Strichdauer B berechnet. Wenn z. B. A = 10 und B = 3 sind, wird A geteilt durch B = C = 3.3 berechnet. Zum Vereinfachen der Berechnung kann das Verhältnis in seinen ganzzahligen Teil gerundet werden. Das Rundungsergebnis ist C = 3.
  • Der nächste Schritt ist es, das Verhältnis C mit einer vorgegebenen Zahl, in diesem Fall 3, zu vergleichen. Wenn das Verhältnis C kleiner als 3 ist, wird erkannt, daß der Zwischenraum kein Rand ist, und der Prozeß geht dazu über, zum Schritt des Abrufens der nächsten Zwischenraumdauer aus dem Puffer 20 zurückzukehren. Wenn das Verhältnis 10 nicht kleiner als 3 ist, ist es der nächste Schritt, danach zu schauen, ob das Verhältnis C kleiner als eine zweite vorgegebene Zahl, in diesem Fall 4, ist.
  • Wenn das Verhältnis kleiner als 4 ist, überprüft der Mikroprozessor 10 die im Puffer 20 abgespeicherten Daten, um zu erkennen, ob es sich um den Code 128 oder den Code Codabar handelt, und wenn es einer dieser Codes ist, werden die Daten decodiert. Wenn das Verhältnis 10 nicht kleiner als 4 ist, ist es der nächste Schritt, das Verhältnis C mit einer dritten vorgegebenen Zahl, in diesem Fall 6, zu vergleichen.
  • Wenn das Verhältnis C kleiner als 6 ist, versucht der Mikroprozessor 10, die Daten im Puffer 20 nur mit den Codes UPC/EAN, Code 128 oder Codabar zu decodieren. Schließlich versucht der Mikroprozessor 10 dann, wenn das Verhältnis C nicht kleiner als 6 ist, die Daten unter Verwendung aller sieben Strichcodetypen zu decodieren.

Claims (13)

1. Verfahren zum Reduzieren der Anzahl von Kandidaten von Strichcodeformattypen aus einem vorgegebenen Satz von Kandidatentypen, zur Verwendung beim Decodieren von Strichcodedaten, mit den folgenden Schritten:
(a) Abspeichern von den Zwischenraum- und Strichbreiten entsprechenden Daten eines abgerasterten Strichcodes von unbekanntem Formattyp in einem Speicher;
(b) Abrufen von Breitedaten (A) für einen ersten Zwischenraum aus dem Speicher;
(c) Abrufen von Breitedaten (B) für einen ersten Strich, der dem ersten Zwischenraum folgt, aus dem Speicher;
(d) Berechnen eines ersten Verhältnisses (C) für die Breitedaten für den ersten Zwischenraum und den ersten Strich;
(e) Vergleichen des ersten Verhältnisses mit einer ersten vorgegebenen Zahl;
(f) Ermitteln, aufgrund des Vergleichs zwischen dem ersten Verhältnis und der ersten, vorgegebenen Zahl, ob der erste Zwischenraum ein Strichcoderand ist oder nicht; und
(g) Ausschließen, wenn sich herausstellt, daß der erste Zwischenraum ein Strichcoderand ist, von Kandidaten-Strichcodeformattypen abhängig vom ersten Verhältnis.
2. Verfahren nach Anspruch 1, bei dem der Schritt des Vergleichens des ersten Verhältnisses mit einer ersten vorgegebenen Zahl ferner den Schritt des Ermittelns aufweist, ob das Verhältnis kleiner als die erste vorgegebene Zahl ist.
3. Verfahren nach Anspruch 2, das ferner die folgenden Schritte aufweist:
- Vergleichen des ersten Verhältnisses (C), um zu erkennen, ob es kleiner als eine zweite vorgegebene Zahl ist, wenn das erste Verhältnis nicht kleiner als die erste vorgegebene Zahl ist; und
- Decodieren der Strichcodedaten so, als seien sie von einem ersten vorgegebenen Codetyp, wenn das erste Verhältnis kleiner als die zweite vorgegebene Zahl ist.
4. Verfahren nach Anspruch 3, das ferner die folgenden Schritte aufweist:
- Vergleichen des ersten Verhältnisses (C), um zu erkennen, ob es kleiner als eine dritte vorgegebene Zahl ist, wenn das erste Verhältnis nicht kleiner als die zweite vorgegebene Zahl ist; und
- Decodieren der Strichcodedaten so, als seien sie von einem zweiten vorgegebenen Codetyp, wenn das erste Verhältnis (C) kleiner als die dritte vorgegebene Zahl ist.
5. Verfahren nach Anspruch 4, ferner mit dem Schritt des Decodierens der Strichcodedaten so, als seien sie von einem dritten vorgegebenen Codetyp, wenn das erste Verhältnis (C) nicht kleiner als die dritte vorgegebene Zahl ist.
6. Verfahren nach einem der Ansprüche 1 bis 5, ferner mit dem Schritt des Wiederholens der Verfahrensschritte außer dem Schritt (a) durch Abrufen von Breitedaten für einen zweiten Zwischenraum und einen zweiten Strich, der auf den zweiten Zwischenraum folgt, und des Berechnens einen zweiten Verhältnisses, wenn das erste Verhältnis kleiner als die erste vorgegebene Zahl ist.
7. Verfahren nach Anspruch 1, bei dem die erste vorgegebene Zahl 3 ist.
8. Verfahren nach Anspruch 3, bei dem die zweite vorgegebene Zahl 4 ist.
9. Verfahren nach Anspruch 4, bei dem die dritte vorgegebene Zahl 6 ist.
10. Verfahren nach Anspruch 4, bei dem der erste vorgegebene Codetyp mindestens den Code 128 und den Code Codabar umfaßt.
11. Verfahren nach Anspruch 4, bei dem der zweite vorgegebene Codetyp mindestens die Codes Code 128, Codabar und UPC/EAN umfaßt.
12. Verfahren nach Anspruch 1, das ferner den Schritt des Messens von Zwischenraum- und Strichdaten unter Verwendung einer durch einen Interrupt betriebenen Meßtechnik mißt.
13. Strichcode-Decodiergerät, das folgendes aufweist:
- eine Einrichtung zum Abrastern eines Strichcodes;
- eine Speichereinrichtung (20) zum Abspeichern von Daten, die den Zwischen- und Strichbreiten des abgerasterten Strichcodes entsprechen;
- eine Einrichtung zum Abrufen von Breitedaten (A) für einen ersten von der Abrastereinrichtung abgerasterten Zwischenraum aus der Speichereinrichtung (20);
- eine Einrichtung zum Abrufen von Breitedaten (B) für einen ersten Strich, der dem ersten Zwischenraum folgt, aus der Speichereinrichtung (20); und
- eine Einrichtung (10) zum Berechnen eines ersten Verhältnisses (C), der Breitedaten für den ersten Zwischenraum und den ersten Strich und zum Vergleichen des ersten Verhältnisses mit einer vorgegebenen Zahl und zum Ermitteln, auf Grundlage des Vergleichs des ersten Verhältnisses (C) mit der vorgegebenen Zahl, ob der erste Zwischenraum ein Strichcoderand ist oder nicht, und Reduzieren, wenn sich herausstellt, daß der erste Zwischenraum ein Strichcoderand ist, der Anzahl von Kandidaten von Strichcodetypen auf Grundlage des ersten Verhältnisses (C) und Decodieren der abgerasterten Strichcodedaten unter Verwendung der reduzierten Anzahl von Kandidaten-Strichcodetypen.
DE87308618T 1986-09-29 1987-09-29 Verfahren und Gerät zur selbsttätigen Unterscheidung von strichkodierten Daten. Expired - Fee Related DE3788264T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/913,098 US4782220A (en) 1986-09-29 1986-09-29 Method and apparatus for bar code data autodiscrimination

Publications (2)

Publication Number Publication Date
DE3788264D1 DE3788264D1 (de) 1994-01-05
DE3788264T2 true DE3788264T2 (de) 1994-03-17

Family

ID=25432925

Family Applications (1)

Application Number Title Priority Date Filing Date
DE87308618T Expired - Fee Related DE3788264T2 (de) 1986-09-29 1987-09-29 Verfahren und Gerät zur selbsttätigen Unterscheidung von strichkodierten Daten.

Country Status (14)

Country Link
US (1) US4782220A (de)
EP (1) EP0262924B1 (de)
JP (1) JP3004017B2 (de)
KR (1) KR880701924A (de)
AT (1) ATE97754T1 (de)
AU (1) AU597443B2 (de)
BR (1) BR8707477A (de)
CA (1) CA1293326C (de)
DE (1) DE3788264T2 (de)
DK (1) DK291888A (de)
ES (1) ES2046205T3 (de)
IE (1) IE872620L (de)
MX (1) MX160169A (de)
WO (1) WO1988002521A1 (de)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4879456A (en) * 1987-06-18 1989-11-07 Spectra-Physics, Inc. Method of decoding a binary scan signal
US4855581A (en) * 1988-06-17 1989-08-08 Microscan Systems Incorporated Decoding of barcodes by preprocessing scan data
US5235167A (en) * 1988-10-21 1993-08-10 Symbol Technologies, Inc. Laser scanning system and scanning method for reading bar codes
US4933538A (en) * 1988-10-21 1990-06-12 Symbol Technologies, Inc. Scanning system with adjustable light output and/or scanning angle
US5486944A (en) * 1989-10-30 1996-01-23 Symbol Technologies, Inc. Scanner module for symbol scanning system
US5229591A (en) * 1988-10-21 1993-07-20 Symbol Technologies, Inc. Scanning system with adjustable light output and/or scanning angle
US5811785A (en) * 1988-10-21 1998-09-22 Symbol Technologies, Inc. Scanning system with adjustable light output and/or scanning angle
DE69022533T2 (de) * 1989-05-17 1996-02-01 Fujitsu Ltd Strichcode-leseverfahren und -vorrichtungen.
US5051567A (en) * 1989-06-13 1991-09-24 Rjs, Inc. Bar code reader to read different bar code formats
US5495097A (en) * 1993-09-14 1996-02-27 Symbol Technologies, Inc. Plurality of scan units with scan stitching
US5241164A (en) * 1990-01-05 1993-08-31 Symbol Technologies, Inc. Method of decoding bar code symbols from partial scans
JP2776035B2 (ja) * 1991-02-18 1998-07-16 富士通株式会社 バーコード読取装置
JPH04283885A (ja) * 1991-03-13 1992-10-08 Alps Electric Co Ltd 自動識別デコード装置
US5196684A (en) * 1991-03-25 1993-03-23 Opticon, Inc. Method and apparatus for improving the throughput of a CCD bar code scanner/decoder
US5231293A (en) * 1991-10-31 1993-07-27 Psc, Inc. Bar code reading instrument which prompts operator to scan bar codes properly
JP2755516B2 (ja) * 1992-03-10 1998-05-20 アルプス電気株式会社 自動識別デコード装置
AU655800B2 (en) * 1992-03-16 1995-01-12 Symbol Technologies, Inc. Systems for encoding and decoding data in machine readable graphic form
US5449893A (en) * 1992-04-02 1995-09-12 Symbol Technologies, Inc. Digitizer for bar code reader
US5734152A (en) * 1995-05-31 1998-03-31 Symbol Technologies, Inc. Optical scanners and signal processors therefor
US6164540A (en) 1996-05-22 2000-12-26 Symbol Technologies, Inc. Optical scanners
US5302813A (en) * 1992-04-02 1994-04-12 Symbol Technologies, Inc. Multi-bit digitizer
US6082621A (en) * 1992-04-02 2000-07-04 Symbol Technologies, Inc. Interface between threshold processing digitizer for bar code reader
US6170749B1 (en) 1995-05-31 2001-01-09 Symbol Technologies, Inc. Method of scanning indicia using selective sampling
US5486689A (en) * 1993-01-22 1996-01-23 Intermec Corporation Method and apparatus for decoding unresolved multi-width bar code symbology profiles
AU681421B2 (en) * 1993-09-14 1997-08-28 Symbol Technologies, Inc. Bar code scan stitching
US5457308A (en) * 1993-09-14 1995-10-10 Symbol Technologies, Inc. Bar code scan stitching
US5481098A (en) * 1993-11-09 1996-01-02 Spectra-Physics Scanning Systems, Inc. Method and apparatus for reading multiple bar code formats
JP2836773B2 (ja) * 1993-12-20 1998-12-14 富士通株式会社 バーコードデータ検出方法及び装置
US7387253B1 (en) 1996-09-03 2008-06-17 Hand Held Products, Inc. Optical reader system comprising local host processor and optical reader
JP3234405B2 (ja) * 1994-08-05 2001-12-04 富士通株式会社 バーコード読取装置及びその方法
US5455414A (en) * 1994-09-15 1995-10-03 Metanetics Corporation Simplified bar code decoding with dynamically loadable data character sets
DE69429784T2 (de) * 1994-10-17 2002-06-20 Intermec Corp., Everett Verfahren und vorrichtung zur dekodierung von strichcodeprofilen
US5770847A (en) * 1994-12-23 1998-06-23 Spectra-Physics Scanning Systems, Inc. Bar code reader with multi-focus lens
US5814803A (en) * 1994-12-23 1998-09-29 Spectra-Physics Scanning Systems, Inc. Image reader with multi-focus lens
EP0722148A2 (de) * 1995-01-10 1996-07-17 Welch Allyn, Inc. Streifencodeleser
US5514858A (en) * 1995-02-10 1996-05-07 Intermec Corporation Method and apparatus for decoding unresolved complex multi-width bar code symbology profiles
US5619027A (en) * 1995-05-04 1997-04-08 Intermec Corporation Single width bar code symbology with full character set utilizing robust start/stop characters and error detection scheme
US5539191A (en) * 1995-06-22 1996-07-23 Intermec Corporation Method and apparatus for decoding unresolved bar code profiles using edge finding circuitry
US5777309A (en) * 1995-10-30 1998-07-07 Intermec Corporation Method and apparatus for locating and decoding machine-readable symbols
JPH09179927A (ja) 1995-12-26 1997-07-11 Fujitsu Ltd バーコード読取装置
US5818024A (en) * 1996-02-05 1998-10-06 Advanced Micro Devices, Inc. Pulse width demodulation device and method
WO2000016242A1 (en) * 1998-09-14 2000-03-23 Psc Scanning, Inc. Bar code label reconstruction system and methodologies
US6078698A (en) * 1999-09-20 2000-06-20 Flir Systems, Inc. System for reading data glyphs
US7181066B1 (en) 2002-12-26 2007-02-20 Cognex Technology And Investment Corporation Method for locating bar codes and symbols in an image
US20060027657A1 (en) 2004-08-04 2006-02-09 Laurens Ninnink Method and apparatus for high resolution decoding of encoded symbols
US7175090B2 (en) * 2004-08-30 2007-02-13 Cognex Technology And Investment Corporation Methods and apparatus for reading bar code identifications
US7963448B2 (en) 2004-12-22 2011-06-21 Cognex Technology And Investment Corporation Hand held machine vision method and apparatus
US9552506B1 (en) 2004-12-23 2017-01-24 Cognex Technology And Investment Llc Method and apparatus for industrial identification mark verification
JP4254724B2 (ja) 2005-02-16 2009-04-15 株式会社デンソーウェーブ バーコード読取り方法及びコンピュータプログラム
KR100742756B1 (ko) 2005-06-21 2007-07-25 인사이드테크윈(주) 다종의 2차원 코드 복호방법과 이 방법이 수록되어컴퓨터로 읽을 수 있는 기록매체
US7628331B2 (en) * 2005-09-29 2009-12-08 Symbol Technologies, Inc. Method and system for optimizing scanner performance
US7364080B2 (en) * 2006-03-22 2008-04-29 Symbol Technologies, Inc. System and method for bar code detection
US8108176B2 (en) * 2006-06-29 2012-01-31 Cognex Corporation Method and apparatus for verifying two dimensional mark quality
US7984854B2 (en) * 2006-07-17 2011-07-26 Cognex Corporation Method and apparatus for multiplexed symbol decoding
US8169478B2 (en) 2006-12-14 2012-05-01 Cognex Corporation Method and apparatus for calibrating a mark verifier
US9734376B2 (en) 2007-11-13 2017-08-15 Cognex Corporation System and method for reading patterns using multiple image frames
JP5321610B2 (ja) * 2011-02-04 2013-10-23 カシオ計算機株式会社 スキャナ装置及びプログラム
JP5748715B2 (ja) * 2012-09-05 2015-07-15 東芝テック株式会社 コードシンボル読取装置及びプログラム
KR101903467B1 (ko) 2016-08-19 2018-11-22 승병선 종이 컵 회수 장치 및 방법
KR101903470B1 (ko) 2016-09-21 2018-11-13 승병선 플라스틱 용기와 종이 컵의 분류 및 회수 장치와 그 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3784792A (en) * 1972-03-29 1974-01-08 Monarch Marking Systems Inc Coded record and methods of and apparatus for encoding and decoding records
US3882464A (en) * 1974-04-04 1975-05-06 Computer Identics Corp Size ratio label reading system
US4032888A (en) * 1975-12-15 1977-06-28 The Singer Company Nonlinear scan drive reader with variable clock correction
US4354101A (en) * 1977-04-15 1982-10-12 Msi Data Corporation Method and apparatus for reading and decoding a high density linear bar code
JPS5566063A (en) * 1978-11-14 1980-05-19 Nippon Electric Ind Co Ltd Optical read system
US4245152A (en) * 1979-10-23 1981-01-13 International Business Machines Corporation Decoding method and system for ETAB bar code
JPS56157570A (en) * 1980-05-08 1981-12-04 Fujitsu Ltd Bar-code reading system
JPS575175A (en) * 1980-06-13 1982-01-11 Nec Corp Bar code reader
US4329574A (en) * 1980-06-25 1982-05-11 International Business Machines Corp. Bar code candidate select circuit
US4308455A (en) * 1980-06-26 1981-12-29 E. I. Du Pont De Nemours And Company Method for decoding bar-coded labels
JPS57120179A (en) * 1981-01-19 1982-07-27 Sharp Corp Bar code reader
JPS57172478A (en) * 1981-04-17 1982-10-23 Teraoka Seiko Co Ltd Type deciding method for bar code of bar code reader
US4414468A (en) * 1981-05-18 1983-11-08 International Business Machines Corporation Systematic error correction in bar code scanner
JPS58223876A (ja) * 1982-06-23 1983-12-26 Casio Comput Co Ltd バ−コ−ド認識装置
JPS59201174A (ja) * 1983-04-28 1984-11-14 Nissan Motor Co Ltd バ−コ−ド読取装置における信号処理方法
US4578570A (en) * 1984-08-14 1986-03-25 Ncr Canada Ltd.-Ncr Canada Ltee Bar code processing apparatus
JPH0762858B2 (ja) * 1985-06-06 1995-07-05 株式会社サトー バーコード読取方法および装置

Also Published As

Publication number Publication date
EP0262924B1 (de) 1993-11-24
US4782220A (en) 1988-11-01
JPH01500937A (ja) 1989-03-30
DK291888D0 (da) 1988-05-27
EP0262924A3 (en) 1989-10-18
MX160169A (es) 1989-12-19
WO1988002521A1 (en) 1988-04-07
CA1293326C (en) 1991-12-17
EP0262924A2 (de) 1988-04-06
JP3004017B2 (ja) 2000-01-31
AU8103087A (en) 1988-04-21
DE3788264D1 (de) 1994-01-05
ATE97754T1 (de) 1993-12-15
IE872620L (en) 1988-03-29
BR8707477A (pt) 1988-12-06
DK291888A (da) 1988-05-27
AU597443B2 (en) 1990-05-31
KR880701924A (ko) 1988-11-07
ES2046205T3 (es) 1994-02-01

Similar Documents

Publication Publication Date Title
DE3788264T2 (de) Verfahren und Gerät zur selbsttätigen Unterscheidung von strichkodierten Daten.
DE2914509C2 (de)
DE2616753C3 (de) Vorrichtung zum Lesen von strichkodierten Informationen
DE69131006T2 (de) Gerät und Verfahren zur optischen Zeichenerkennung
DE69709165T2 (de) Vorrichtung und verfahren zur dekodierung von streifencode-symbolen durch quotenanalyse der modulformate
DE10025332B4 (de) Verfahren zum Lesen eines zweidimensionalen Barcodes
DE3854885T2 (de) Kombinieren von gelesenen Strichcode-Daten
DE69028899T2 (de) Verfahren und Vorrichtung zum Dekodieren von Strichkodes mit Mehrfachabtastung
DE69230631T2 (de) Verfahren zum Vergleichen von Wortgestalten
DE3633743C2 (de)
DE3879254T2 (de) Unterscheidungsvorrichtung für handgeschriebene und maschinengedruckte Buchstaben.
DE69226846T2 (de) Verfahren zur Bestimmung von Wortgrenzen im Text
DE69425404T2 (de) Kombinieren von Strichcodeabtastungen
DE68915950T2 (de) Verfahren zum Trennen von Zeichen.
DE2524495C3 (de) Schaltungsanordnung zur Formatpriifung von Codesignalen eines Streifencodes
DE2216013A1 (de) Verfahren und Gerät zum optischen Lesen eines Binärkodes
DE19960555A1 (de) Verfahren zum Auffinden und Lesen eines zweidimensionalen Strichcodes
DE2816333A1 (de) Verfahren und anordnung zum lesen eines strichcodes
DE2338561A1 (de) Verfahren und vorrichtung zum identifizieren von objekten
DE2125019C3 (de) Verfahren zum maschinellen Lesen und Erkennen von auf Informationsträgern dargestellter Information und Vorrichtung zur Durchführung des Verfahrens
DE69121805T2 (de) Strichkode-Abtastvorrichtung
DE69030614T2 (de) Gerät zur Erkennung handgeschriebener Zeichen
DE68912557T2 (de) Verfahren und gerät zum lesen von zeichen.
DE1901335A1 (de) Vorrichtung zur Schriftzeichenerkennung
DE1499394B2 (de) Anordnung zum messen der groesse von zeichen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee