Wie wurde die Reihenfolge der Strichbreiten den Ziffern 0-9 für UPC-Barcodes zugewiesen?

4

UPC-Barcodes bestehen aus einer Reihe von schwarzen und weißen Balken. Die Breite der Balken kann zwischen 1 und 4 liegen (1 ist die dünnste und 4 die dickste). Jede Ziffer von 0 bis 9 wird mit genau 4 Strichen codiert:

Digit | Bar Thickness Sequence
  0   |        3-2-1-1
  1   |        2-2-2-1
  2   |        2-1-2-2
  3   |        1-4-1-1
  4   |        1-1-3-2
  5   |        1-2-3-1
  6   |        1-1-1-4
  7   |        1-3-1-2
  8   |        1-2-1-3
  9   |        3-1-1-2

Wie wurden die Strichbreiten den Nummern 0 bis 9 zugeordnet? Ich bemerke, dass jede Serie von 4 Takten 7 ergibt, aber ansonsten sehe ich kein offensichtliches Muster.

(Hinweis: Die Zahlen, die ein UPC-Barcode codiert, können spezielle Bedeutungen haben (Produktklassifizierung, Hersteller, Prüfsumme usw.). Bei dieser Frage geht es nur darum, wie die Strichbreiten (die Barcode-Codierung) abgeleitet wurden.

Hier ist eine der Referenzen, die ich gefunden habe: Alles über UPC Barcode & EAN Barcode

jne
quelle
2
Ich kenne die vollständige Antwort nicht, aber es wurde sicherlich mit Blick auf die Fehlerkorrektur / -erkennung getan. (Ja, es gibt noch einen Prüfcode.) Ein Barcodeleser muss erkennen können, ob er den Anfang einer ganzen Ziffer oder einer Teilziffer gelesen hat. Wenn Sie sich die Breitenzahlen ansehen, sollte es kein Muster geben, das um einen Balken nach rechts oder links verschoben werden kann und dennoch gültige Ziffern erzeugt.
hazzey
Beachten Sie, dass die Sequenz abwechselnd schwarz / weiß ist, sodass ein Verschiebungsfehler eine Verschiebung von zwei sein muss. Es gibt in der Tat viele Beispiele, bei denen dies auftauchen würde, beispielsweise 4-6würde eine Verschiebung um zwei eine Null ergeben (meine Schlussfolgerung, ein solcher Verschiebungsfehler war also kein Problem).
Agentp

Antworten:

3

@hazzey ist auf dem richtigen Weg. Dies ist eine Art Umkehrung des Gray-Codes , bei dem es darum ging, fehlerhafte Daten während der Metazustände des Encoders zu vermeiden. Da ein Barcode statisch ist, möchten wir die Signaldifferenz zwischen allen Werten und nicht nur zwischen Nachbarn maximieren und den physischen Gesamtraum minimieren - daher der Mangel an "4" -Breiten.

Ich möchte darauf hinweisen, dass heute eine Reihe verschiedener Implementierungen im Einsatz sind.

Carl Witthoft
quelle
0

Nur eine Beobachtung, aber zuerst einmal gibt es nur 20 Kombinationen von 1-4, die zu 7 addieren, dh die eine Hälfte wird verwendet und die andere Hälfte ist ungültig.

Jeder Ein-Bit-Fehler (Ein Balken wird als zu breit oder zu eng gelesen) wäre ein offensichtlicher Fehler, da die Sequenz nicht mehr zu 7 summiert wird.

Eine Ein-Bit- Verschiebung , dh ein Balken, der zu breit und eines der benachbarten Leerzeichen entsprechend zu schmal gelesen wird, würde zu 7 addieren und als gültig erscheinen. Wenn Sie sich jedoch die für die Verwendung ausgewählten Sequenzen ansehen, werden Sie feststellen, dass jede mögliche Verschiebung zu diesem Ergebnis führt in einer unbenutzten Reihenfolge und würde so als Fehler identifiziert. (Beispiel wenn 2-1-2-2als 1-2-2-2oder gelesen wurde 2-2-1-2oder 2-1-3-1das wäre ein Fehler).

Das sagt natürlich nichts darüber aus, wie die spezifische Reihenfolge für die Nummernzuordnung hergestellt wurde.

agentp
quelle