Der Data Matrix Code ist ein 2-dimensionaler Code, der aus veschiedenen Komponenten aufgebaut ist. Eine Komponente sind die Codewörter für Daten und Fehlerkorrektur. Die zweite Komponente sind feste Strukturen (feste Muster, Fixed Pattern) ohne Dateninhalt. Diese festen Muster werden zur Codelagebestimmung und Gitterrekonstruktion benutzt. .  
Für SmartPhones gibt es viele Apps, die den Data Matrix Code dekodieren können. Bezüglich der vollständigen Umsetzung des Codes hapert es aber oft.  Einige App's lesen, die  nach Norm erlaubte und spezifizierte Negativversion des Codes nicht (Heller Code auf dunklem Hintergrund). Andere ignorieren die rechteckigen Codevarianten des Data Matrix Codes. Zu prüfen ist auch, ob die verschiedenen Kodiermethoden korrekt umgesetzt sind. Kritisch ist diesbezüglich die ECI Unterstützung.

Es gibt eine weitergehende rechteckige Erweiterung des Data Matrix Codes (DMRE).  
DMRE ist durch die Norm ISO/IEC 21471 spezifiziert. Ein älterer Entwurf der Norm ist hier zu finden.


Das Erkennungsmerkmal der Matrix Codes ist, dass diese in einer Schachbrettform aufgebaut werden. Jedes einzelne Feld beinhaltet eine Information. Da beim Date Matrix jedes Feld (bzw. Matrixzelle oder  Modul) entweder hell oder dunkel sein kann, kann in einer Zelle ein Bit kodiert werden. Ein Bit kann den Wert 0 oder 1 aufweisen. Es werden immer 8 dieser Matrixzellen zusammengefasst. Diese Zusammenfassung ist ein Codewort. Da eine Matrixzelle ein Bit umfasst sind 8 Zellen 8 bit. Mit 8 bit lassen sich die Zahlenwerte von 0 bis 255 kodieren.

codewort  

Das Bild zeigt ein Codewort eines Data Matrix Codes. Wenn die Codeworte an den Rändern des Codes liegen dann überlappen sich die Codeworte an den gegenüberliegenden Seiten. Damit wird erreicht, dass der Platz in dem das Codewort in der gezeigten Geometrie nicht passt trotzdem benutzt werden kann. Das folgende Bild zeigt ein vollständiges Symbol.  
 

DataMatrix-CW  
In diesem Bild ist jedes einzelne Codewort mit einen orangen, grünen, weinroten, rosa oder hellblauen Rahmen markiert worden. Die Codewörter an den Rändern überlappen sich an den gegenüberliegenden Seiten.

DataMatrix CW Nummer  
In diesem Bild wird das gleiche Symbol noch einmal gezeigt. Anstelle der schwarzen und weißen Matrixzellen ist jetzt in jedem Codewort die Nummer des Codewortes eingetragen. Das Symbol hat eine Matrixgröße von 22 x 22. Es nimmt 50 Codewörter auf. Davon können die Codewörter von 1 bis 30 für die Daten benutzt werden und die Codewörter von 31 bis 50 nehmen die Werte für die Reed Solomon Fehlerkorrektur auf. Die 30 Datencodewörter können 60 Ziffern, 43 aplphanumerische Zeichen oder 28 Bytes aufnehmen.

Jeder Code weist neben den Daten- und Fehlerkorrektur Bereiche mit festen Mustern auf. Im folgenden Bild sind die  festen Muster im Data Matrix Code farblich hervorgehoben.  

fixed pattern klein  

Die festen Muster unterteilen sich in verschiedene Bereiche. Der gelbe Rahmen ist die Ruhezone (Hellfeld, EN: light margin, quiet zone). Diese wird benötigt um das Symbol vom umliegend gedruckten Mustern abzugrenzen. Die Ruhezone sollte mindestesn eine Matrixzelle (Modulbreite) breit sein. Empfohlen wird eine Breite von 3 Modulen. Das Bild zeigt die Ruhezone gelb hervorgehoben in einer Breite von einem Modul.  

Der blau markierte Bereich ist das L-Suchmuster. Dies dient zur Lageerkennung des Symbols im Bildauschnitt eines Scanners. Der rot markierte Bereich zeigt das Taktmuster (Clock Track). Das Taktmuster zeigt ein alternierendes Muster von Modulen an die immer genau eine Matrixzelle umfassen. Damit kann die Gittermatrix rekonstruiert werden. Die Kenntnis über die Lage des Symbol und die Gitterrekonstruktion ist notwendig um die Codewörter in der korrekten Sequenz (siehe Bild mit den Codewortnummern) zu erkennen.  
 

Das folgende Bild zeigt einen Data Matrix Code mit vier Segmenten.

fpd soliD Area

Wenn  ein Symbol in Segmente unterteilt wird, dann liegen zwischen den Segmenten wieder feste Muster. Es handelt sich dabei um kleinere  Kopien des L Suchmusters und des Taktmusters. Diese zusätzlichen festen Muster sind in dem Bild in grün und beige farblich hervorgehoben worden und werden als "Solid Area" bezeichnet.  

Die Anzahl der Segmente und Größen sind in folgender Tabelle zu sehen.

 

Tabelle der Data Matrix Segmente
kleinste Matrixgrößte MatrixAnzahl der SegmenteVarianten
10 x 1026 x 2619
32 x 3252 x 5246
64 x 64104 x 104166
120 x 120144 x 144362
Rechtecksymbole 
8 x 18, 12 x 2612
8 x 32, 12 x 36, 16 x 36, 16 x 4824

Zu beachten : Die Tabelle zeigt auf welche Matrixgrößen wieviele Segmente nutzen.  
Die Zahl in der Spalte Varianten nennt die Anzahl der verschiedenen Matrixgrößen pro Segmentanzahlvariante.

Die folgenden Dateien beinhalten Codebespiele

Quadratische Symbole (ODT Format)

Quadratische Symbole (PDF Format)

Rechteckige Symbole (ODT Format)

Rechteckige  Symbole (PDF Format)

Die folgende Tabelle zeigt die Bedeutung der Codewörter an.

CodewortFunktion oder Daten
1-128ASCII Daten (ASCII Wert + 1)
129Füllzeichen (Pad, bitte Folgesequenz beachten)
130-229Ziffernwerte 00-99 (numerischer Wert + 130)
230Umschaltung auf C40 Kodierung
231Umschaltung auf binäre Kodierung (Base 256, Längenangabe erforderlich)
232Sonderzeichen FNC1 (siehe ISO/IEC 15418, ANS MH10.8.2)
233Strukturiertes Verketten
234Scanner Programmierung
235Einzelschaltung erweitertes ASCII
236Makro 05 (siehe Format 05 ISO/IEC 15434)
237Makro 06 (siehe Format 06 ISO/IEC 15434, EDIFICE Seite 11, securPharm Seite 7)
238Umschaltung auf ANSI X12 Kodierung
239Umschaltung auf Text Kodierung
240Umschaltung auf EDIFACT Kodierung
241ECI Zeichen (Enhanced Channel Interpretation)
242 -253nur im Base256 Modus benutzt
254Unlatch
255nur im Base 256 Modus benutzt

Die Umschaltzeichen (Latch) bewirken eine permanente Umschaltung in den gewählten Zeichensatz bis ein ein Unlatch Zeichen kommt. Das Einzelschaltzeichen (upper shift) wirkt sich nur auf das folgende Zeichen aus.

Im Base256 Modus (oder Byte Modus) werden die Codewörter mit Hilfe des "255-state algorithm" kodiert. Dabei wird, unter anderem, eine Zahl mit Werten zwischen 1 und 255 zu dem zu kodierenden Wert hinzuaddiert.  Das Base 256 Codewort hat dann Werte zwischen 0 und 255. Prinzipiell können im Byte Modus beliebige binäre Daten kodiert werrden. Die Norm gibt als normale Methode  vor, dass die Codewörter als  ASCII Zeichen ISO/IEC 646 bzw. ISO 8859-1, Latin Alphabet No. 1 interpretiert werden. Wenn das nicht der Fall ist, muss durch eine Anwenderspezifikation festgelegt werden wie die im Base 256 Modus kodierten Daten zu verstehen sind.  Es besteht durchaus die Möglichkeit kleine Bilder oder MP3 Schnipsel zu kodieren.

Die ANSI X12 Kodierung ist eine Kodierung die, die Ziffern 0...9, die Buchstaben A....Z, CR, Leerzeichen und die X12 Zeichen  Segment- und Subsegmentseparator kodieren kann. Damit kann eine EDI X12 Nachricht im Data Matrix Code transportiert werden. Der eingeschränkte Umfang der verfügbaren Zeichen erlaubt eine höhere Kodierdichte (5,33 bits pro Datenzeichen)

Die EDIFACT Kodierung ist ebenfalls eine Methode EDIFACT Nachrichten im DataMatrix Code zu transportieren. Es werden 6 bit pro Zeichen benötigt. Es können nur die ASCII Zeichen mit den Werten 32 bis 94 benutzt werden. Im wesentlichen ist es eine Methode um die betreffenden ASCII Zeichen kompakt zu kodieren.

Die C40 Methode fasst zwei Codewörter zu einem 16-bit Wort zusammen. Damit erreicht man eine Kodierdichte von 5,33 oder 10,66 bit pro Zeichen. Mit dem Upper Shift Schalter können erweiterte ASCII Werte dargestellt werden.

Die Text Kodierung kann alle Kleinbuchstaben mit 5,33 bit pro Zeichen kodieren. Mit dem Uppershift können auch hier in 10,66 bits Sonderzeichen wie auch die Großbuchstaben kodiert werden.

Ohne Angabe einer Kodiermethode gilt die ASCII und Digit Methode. Die ASCII Zeichen sind in den Codewörtern 1-128 kodiert (ISO 646). Die Ziffernpärchen in den Codewörtern 130 -229. Mit dem Upper Shift Zeichen können die erweiterten ASCII Zeichen 128 bis 255 (ISO 8859-1, Latin Alphabet No. 1)  kodiert werden.

Mit dem ECI Protokoll können Sonderzeichen wie Griechich, Kyrillisch usw. kodiert werden. Vom AIM Verband gibt es dazu eine dreiteilige Spezifikation zu kaufen. In der Praxis wird die Methode  selten benutzt.  Die Standardmethode ist ECI 000003. Eine Tabelle der ECI Modi gibt es wie folgt  https://strokescribe.com/en/ECI.html

"GS1 Datamatrix" ist eine Anwendung des Data Matrix Codes. Der Data Matrix Code wird als Datenträger für die Datenstrukturen nach Vorgaben der privatwirtschaftlich aufgestellten GS1 Organisation benutzt. Als Erkennungsmerkmal muss in diesem Fall das Data Matrix Code Spezialzeichen FNC1 immer als erstes Zeichen im Code erscheinen. Zwingend ist in diesem Fall die Nutzung der Application Identifier Syntax die durch GS1 spezifiert ist.

Steckbrief:  
Kleinste Matrix 10 x 10, 1 Byte, 3 a/n Zeichen, 6 Ziffern  
Größte Matrix 144 x 144 1555 Bytes , 2335 a/n Zeichen, 3116 Ziffern  
Kleinste Rechteckmatrix 8x18 3 Bytes 6 a/n Zeichen, 10 Ziffern  
Größte Rechteckmatrix 16x48 47 Bytes, 72 a/n Zeichen, 98 Ziffern  
Es ist eine Ruhezone von einem Pixelelement ( 1 Modul) rundherum notwendig  
Die ECC200 Fehlerkorrektur nach Reed Solomon ist fest vorgegeben. Eine Skalierung ist nicht vorgesehen.  
Inverse Symbole sind spezifiziert, spiegelverkehrte Symbole sind nicht spezifiziert, Leserichtung Omnidirektional  
Mehrere Symbole können verkettet werden  
Die alte Data Matrix Version mit der CRC Fehlerkorrektur ECC000 bis  ECC140 soll nicht mehr benutzt werden.  
Norm: ISO/IEC 16022