Data Matrix
This article needs additional citations for verification. (February 2010) |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Datamatrix.svg/220px-Datamatrix.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Datamatrix-modulecolours.png/220px-Datamatrix-modulecolours.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Semapedia.jpg/220px-Semapedia.jpg)
A Data Matrix code is a two-dimensional matrix barcode consisting of black and white "cells" or modules arranged in either a square or rectangular pattern. The information to be encoded can be text or numeric data. Usual data size is from a few bytes up to 1556 bytes. The length of the encoded data depends on the number of cells in the matrix. Error correction codes are often used to increase reliability: even if one or more cells is damaged so it is unreadable, the message can still be read. A Data Matrix symbol can store up to 2,335 alphanumeric characters.
Data Matrix symbols are rectangular in shape and usually square and are composed of "cells": little squares that represent bits. Depending on the coding used, a "light" cell represents a 0 and a "dark" cell is a 1, or vice versa. Every Data Matrix is composed of two solid adjacent borders in an "L" shape (called the "finder pattern") and two other borders consisting of alternating dark and light "cells" or modules (called the "timing pattern"). Within these borders are rows and columns of cells encoding information. The finder pattern is used to locate and orient the symbol while the timing pattern provides a count of the number of rows and columns in the symbol. As more data is encoded in the symbol, the number of cells (rows and columns) increases. Each code is unique. Symbol sizes vary from 10×10 to 144×144 in the new version ECC 200, and from 9×9 to 49×49 in the old version ECC 000 - 140.
Applications
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8c/STAMPIT_Adresse.svg/220px-STAMPIT_Adresse.svg.png)
The most popular application for Data Matrix is marking small items, due to the code’s ability to encode fifty characters in a symbol that is readable at 2 or 3 mm2 and the fact that the code can be read with only a 20% contrast ratio[citation needed]. The Data Matrix is scalable, with commercial applications as small as 300 micrometres (laser etched on a 600 micrometre silicon device) and as large as a 1 metre (3 ft) square (painted on the roof of a boxcar). Fidelity of the marking and reading systems are the only limitation.
The United States of America's Electronic Industries Alliance (EIA) recommends using Data Matrix for labeling small electronic components.[1]
Technical specifications
![](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Lorem_Ipsum.png/220px-Lorem_Ipsum.png)
Data Matrix symbols are made up of modules arranged within a perimeter finder and timing pattern. It can encode up to 3,116 characters from the entire ASCII character set (with extensions). The symbol consists of data regions which contain modules set out in a regular array. Large symbols contain several regions. Each data region is delimited by a finder pattern, and this is surrounded on all four sides by a quiet zone border (margin). (Note: The modules may be round or square- no specific shape is defined in the standard. For example, dot-peened cells are generally round.)
Data Matrix ECC 0
ECC 200 is the newest version of Data Matrix and uses Reed-Solomon codes for error and erasure recovery. ECC 0 allows the routine reconstruction of the entire encoded data string when the symbol has sustained 30% damage, assuming the matrix can still be accurately located. Data Matrix has an error rate of less than 1 in million characters scanned.[2]
Symbols have an even number of rows and an even number of columns. Most of the symbols are square with sizes from 10×10 to 144×144. Some symbols however are rectangular with sizes from 8×18 to 16×48 (even values only). All symbols utilizing the ECC 0 error correction can be recognized by the upper right corner module being the same as the background color. (binary 0).
Additional capabilities that differentiate ECC 0symbols from the earlier standards include:
- Inverse reading symbols (light images on a dark background)
- Specification of the character set (via Extended Channel Interpretations)
- Rectangular symbols
- Structured append (linking of up to 16 symbols to encode larger amounts of data)mak
Data Matrix ECC 000 - 140
Older versions of Data Matrix include ECC 000, ECC 050, ECC 080, ECC 100, ECC 140. Instead of using Reed-Solomon codes like ECC 200, ECC 000 - 140 use a convolution based error correction. Each of these varies in the amount of error correction they offer, with ECC 000 offering none, and ECC 140 offering the greatest. For error detection at decode time, even in the case of ECC 000, each of these versions also encode a Cyclic Redundancy Check (CRC) on the bit pattern. As an added measure, the placement of each bit in the code is determined by bit-placement tables included in the specification. These older versions always have an odd number of modules, and can be made in sizes ranging from 9×9 to 49×49. All symbols utilizing the ECC 000 through 140 error correction can be recognized by the upper right corner module being the inverse of the background color. (binary 1).
According to ISO/IEC 16022, "ECC 000 - 140 should only be used in closed applications where a single party controls both the production and reading of the symbols and is responsible for overall system performance."
Data Matrix applications
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Intelwireless-datamatrix.jpg/220px-Intelwireless-datamatrix.jpg)
Data Matrix codes are becoming common on printed media such as labels and letters. [citation needed] The code can be read quickly by a barcode reader which allows the media to be tracked, for example when a parcel has been dispatched to the recipient.
For industrial engineering purposes, Data Matrix codes can be marked directly onto components, ensuring that only the intended component is identified with the Data Matrix encoded data. The codes can be marked onto components with various methods, but within the aerospace industry these are commonly industrial ink-jet, dot-peen marking, laser marking, and electrolytic chemical etching (ECE). These methods give a permanent mark which can last up to the lifetime of the component.
Data Matrix codes are usually verified using specialist camera equipment and software.[further explanation needed] This verification ensures the code conforms to the relevant standards, and ensures readability for the lifetime of the component. After the component enters service, the Data Matrix code can then be read by a reader camera, which decodes the Data Matrix data which can then be used for a number of purposes, such as movement tracking or inventory stock checks.
Data Matrix codes, along with other Open Source codes such as 1D Barcodes can also be read with mobile phones by downloading code specific mobile applications. Although the majority of these mobile readers are capable of reading Data Matrix,[citation needed] few extend the decoding to enable mobile access and interaction, whereupon the codes can be used securely and across media; for example, in track and trace, anti-counterfeit, e.govt, and banking solutions.
Standards
Data Matrix was invented by International Data Matrix, Inc. (ID Matrix) which was merged into RVSI/Acuity CiMatrix, who were acquired by Siemens AG in October, 2005 and Microscan Systems in September 2008. Data Matrix is covered today by several ISO/IEC standards and is in the public domain for many applications, which means it can be used free of any licensing or royalties.
- ISO/IEC 16022:2006—Data Matrix bar code symbology specification
- ISO/IEC 15415—2-D Print Quality Standard
- ISO/IEC 15418:2009—Symbol Data Format Semantics (GS1 Application Identifiers and ASC MH10 Data Identifiers and maintenance)
- ISO/IEC 15424:2008—Data Carrier Identifiers (including Symbology Identifiers) [IDs for distinguishing different bar code types]
- ISO/IEC 15434:2006—Syntax for high-capacity ADC media (format of data transferred from scanner to software, etc.)
- ISO/IEC 15459—Unique Identifiers
Encoding
The encoding process is described in documents published by ISO web site.[3] Open source software for encoding and decoding the ECC-200 variant of Data Matrix has been published[4]
The diagrams below illustrates the placement of the message data within a Data Matrix symbol. The message is "Wikipedia", and it is arranged in a somewhat complicated diagonal pattern starting near the upper-left corner. Some characters are split in two pieces, such as the initial W, and the third 'i' is in "corner pattern 2" rather than the usual L-shaped arrangement. Also shown are the end-of-message code (marked End), the padding (P) and error correction (E) bytes, and four modules of unused space (X).
![]() |
![]() |
There are multiple encoding modes used to store different kinds of messages. The default mode stores one ASCII character per 8-bit codeword. Control codes are provided to switch between modes, as shown below.
Codeword | Interpretation |
---|---|
0 | Not used |
1 – 128 | ASCII data (ASCII value + 1) |
129 | End of message |
130 – 229 | Digit pairs 00 – 99 |
230 | Begin C40 encoding |
231 | Begin Base 256 encoding |
232 | FNC1 |
233 | Structured append. Allows a message to be split across multiple symbols. |
234 | Reader programming |
235 | Set high bit of the following character |
236 | 05 Macro |
237 | 06 Macro |
238 | Begin ANSI X12 encoding |
239 | Begin Text encoding |
240 | Begin EDIFACT encoding |
241 | Extended Channel Interpretation code |
242 – 255 | Not used |
Text modes
The C40, Text and X12 modes are potentially more compact for storing text messages. They are similar to DEC Radix-50, using character codes in the range 0–39, and three of these codes are combined to make a number up to 40³=64000, which is packed into two bytes (maximum value 65536) as follows:
- V = C1*1600 + C2*40 + C3 + 1
- B1 = floor(V/256)
- B2 = V mod 256
The resulting value of B1 is in the range 0–249. The special value 254 is used to return to ASCII encoding mode.
Character code interpretations are shown in the table below. The C40 and Text modes have four separate sets. Set 0 is the default, and contains codes that temporarily select a different set for the next character. The only difference is that they reverse upper-and lower-case letters. C40 is primarily upper-case, with lower-case letters in Set 3. Text is the other way around. Set 1, containing ASCII control codes, and set 2, containing punctuation symbols are identical in C40 and Text mode.
Code | C40 | Text | X12 | ||||
---|---|---|---|---|---|---|---|
set 0 | set 1 | set 2 | set 3 | set 0 | set 3 | ||
0 | set 1 | NUL | ! | ' | set 1 | ' | CR |
1 | set 2 | SOH | " | a | set 2 | A | * |
2 | set 3 | STX | # | b | set 3 | B | > |
3 | space | ETX | $ | c | space | C | space |
4 | 0 | EOT | % | d | 0 | D | 0 |
5 | 1 | ENQ | & | e | 1 | E | 1 |
6 | 2 | ACK | ‘ | f | 2 | F | 2 |
7 | 3 | BEL | ( | g | 3 | G | 3 |
8 | 4 | BS | ) | h | 4 | H | 4 |
9 | 5 | HT | * | i | 5 | I | 5 |
10 | 6 | LF | + | j | 6 | J | 6 |
11 | 7 | VT | , | k | 7 | K | 7 |
12 | 8 | FF | - | l | 8 | L | 8 |
13 | 9 | CR | . | m | 9 | M | 9 |
14 | A | SO | / | n | a | N | A |
15 | B | SI | : | o | b | O | B |
16 | C | DLE | ; | p | c | P | C |
17 | D | DC1 | < | q | d | Q | D |
18 | E | DC2 | = | r | e | R | E |
19 | F | DC3 | > | s | f | S | F |
20 | G | DC4 | ? | t | g | T | G |
21 | H | NAK | @ | u | h | U | H |
22 | I | SYN | [ | v | i | V | I |
23 | J | ETB | \ | w | j | W | J |
24 | K | CAN | ] | x | k | X | K |
25 | L | EM | ^ | y | l | Y | L |
26 | M | SUB | _ | z | m | Z | M |
27 | N | ESC | FNC1 | { | n | { | N |
28 | O | FS | | | o | | | O | |
29 | P | GS | } | p | } | P | |
30 | Q | RS | hibit | ~ | q | ~ | Q |
31 | R | US | DEL | r | DEL | R | |
32 | S | s | S | ||||
33 | T | t | T | ||||
34 | U | u | U | ||||
35 | V | v | V | ||||
36 | W | w | W | ||||
37 | X | x | X | ||||
38 | Y | y | Y | ||||
39 | Z | z | Z |
EDIFACT mode
EDIFACT mode uses six bits per character, with four characters packed into three bytes. It can store digits, upper-case letters, and many punctuation marks, but has no support for lower-case letters.
Code | Meaning |
---|---|
0 – 30 | ASCII codes 64 – 94 |
31 | Return to ASCII mode |
32 – 63 | ASCII codes 32 – 63 |
Base 256 mode
Base 256 mode data starts with a length indicator, followed by a number of data bytes. A length of 1 to 249 is encoded as a single byte, and longer lengths are stored as two bytes.
- L1 = floor(length / 250) + 249, L2 = length mod 250
It is desirable to avoid long strings of zeros in the coded message, because they become large blank areas in the Data Matrix symbol, which may cause a scanner to lose synchronization. (The default ASCII encoding does not use zero for this reason.) In order to make that less likely, the length and data bytes are obscured by adding a pseudorandom value R(n), where n is the position in the byte stream.
- R(n) = (149 × n) mod 255 + 1
Patent issues
Prior to the expiration of U.S. patent 5,612,524, intellectual property company Acacia Technologies claimed that Data Matrix was partially covered by its contents. As the patent owner, Acacia allegedly contacted Data Matrix users demanding license fees related to the patent.
Cognex Corporation, a large manufacturer of 2D barcode devices, filed a declaratory judgment complaint on March 13, 2006 after receiving information that Acacia had contacted its customers demanding licensing fees. On May 19, 2008 Judge Joan N. Ericksen of the U.S. District Court in Minnesota ruled in favor of Cognex. The ruling held that the '524 patent, which claimed to cover a system for capturing and reading 2D symbology codes, is both invalid and unenforceable due to inequitable conduct by the defendants during the procurement of the patent.
Notably, since the '524 patent expired in November 2007, a ruling against Cognex wouldn't have affected current use of Data Matrix codes. However, it would have established that use of Data Matrix prior to November 2007 could potentially be covered by the '524 patent.
A German Patent Application DE 4107020 was filed in 1991, and published in 1992. This patent is not cited in the above US patent applications and might invalidate them.
Art & Advertising
In May 2006 a German computer programmer, Bernd Hopfengärtner, created a large data matrix in a wheat field (in a fashion similar to crop circles). The message read "Hello, World!".[5] In June 2011 the Parisian tattoo artist K.A.R.L., as part of a promotion for Ballantine's scotch whisky,[6] created the world's first animated tattoo utilizing a QR code in a collaborative process streamed live on Facebook.[7][8]
Implementation in the Food Industry
Data matrix codes are used in the food industry in autocoding systems to prevent food products being packaged and dated incorrectly. Codes are maintained internally on a food manufacturers database and associated with each unique product, e.g ingredient variations. For each product run the unique code is supplied to the printer. Label artwork is required to allow the 2D data matrix to be positioned for optimal scanning. For black on white codes testing isn't required unless print quality is an issue, but all colour variations need to be tested before production to ensure they are readable.[9]
See also
- Aztec Code
- High Capacity Color Barcode
- MaxiCode
- Nintendo e-Reader
- QR Code
- Semacode
- SPARQCode
- Trusted paper key
References
- ^ Stevenson, Rick (December 2005). "Laser Marking Matrix Codes on PCBs" (PDF). Printed Circuit Design and Manufacture. Retrieved 2007-05-31.
- ^ http://www.ohio.edu/industrialtech/aidc/activities/research.cfm
- ^ ISO e-commerce page for this standard http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=44230
- ^ http://code.google.com/p/zxing/
- ^ German man programs "Hello World" into wheat field
- ^ http://www.digitalbuzzblog.com/the-worlds-first-animated-tattoo/
- ^ http://www.youtube.com/watch?v=f3qv2dSXQXk
- ^ https://www.facebook.com/ballantines
- ^ Food Industry 2D Barcode Specification 7th June 2012
External links
![](http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)