Data Matrix 2D Barcode ISO/IEC 16022 FAQ
The Data Matrix barcode (ISO/IEC 16022) is a high-density, two-dimensional (2D) symbology that encodes text, numbers, files and actual data bytes. This FAQ provides information and answers to commonly asked questions about the 2D Data Matrix barcode symbology.
Data Matrix is a very efficient, two-dimensional (2D) barcode symbology that uses a small area of square modules with a unique perimeter pattern, which helps the barcode scanner determine cell locations and decode the symbol. Characters, numbers, text and actual bytes of data may be encoded, including Unicode characters and photos.
The encoding and decoding process of Data Matrix is very complex. Several methods have been used for error correction in the past. All current implementations have been standardized on the ECC200 error correction method, which is approved by ANSI/AIM BC11 and the ISO/IEC 16022 specification. IDAutomation 2D Data Matrix barcode products all support ECC200 by default and are based on the ANSI/AIM BC11 and the ISO/IEC 16022 specifications. The Reed-Solomon error correction algorithms of ECC200 allow the recognition of barcodes that are up to 60% damaged.
Specific standards & specs for the 2D Data Matrix barcode symbology:
Data Matrix is one of the smallest and most dependable barcode symbologies. Compared to other barcode types, DataMatrix is approximately 30 times smaller than a Code 39 barcode representing the same data. The size difference of popular barcode types is compared in the Barcode Symbology Evaluation and Test Sheet. The 2D Data Matrix is barcode also the recommended choice when sending barcodes over faxed documents, because the symbol can withstand many poor resolution and scanning issues.
The required Reed-Solomon error correction built into Data Matrix ECC200 is able to reconstruct and verify the data scanned for improved accuracy. In a study at The Center for Automatic Identification at Ohio University, the statistical probability of a misread error with Data Matrix is 1 in 10.5 million scans, compared to a misread error probability of 1 in 1.7 million with the Code 39 barcode.
The IDAutomation Data Matrix Barcode Font and Encoder is a collection of encoders and components that generate ECC200 Data Matrix symbols with fonts or graphics. Several types of encoders are available in the package to generate Data Matrix symbols. Source code is also available in VB .NET, VB 6, Java and C#. A C++ header file is also available.
Printed barcode symbols may be easily verified with the Print Quality Assessment test found in the IDAutomation 2D Barcode Scanner. The quality assurance test will grade the symbol and report any possible problems. The report below was generated when scanning the symbol in Fig. 1 with PQA enabled:
>> PQA << DATA MATRIX ECC200: 16 x 16 modules in size Data Field: 12 data & 12 chks in 1 block(s) of GF(256) X roughly = 0.016" [A] < Fixed Patterns: 0 module errors [A] < Data Safety Margin = 100% [A] < Horizontal Print Growth = +9% of X [A] < Vertical Print Growth = +14% of X
GS1-DataMatrix barcode symbols may be easily created with IDAutomation Data Matrix products. The following must all be true to properly create GS1 symbols:
Fig. 1 below is a symbol encoding of the GTIN string (01)3456789012345 with the date field of (15)171231. According to the GS1 Application Identifier specification, an additional FNC1 is not necessary in this symbol because the preceding element string of (01) is a fixed length. Note that when encoding the GTIN within Data Matrix, the 14th digit of the GTIN is not encoded.
Fig. 2 below is a symbol encoding of the GTIN string (01)10614141543219 with a variable batch element string of (10)3456789 and a variable serial number element string of (21)3456789012. Because the AIs (10) and (21) are both variable, an additional FNC is required between these according to the GS1 Application Identifier specification.
According to GS1 specifications, when GS1 emulation is enabled, the first FNC1 character should be decoded as "]d2" and any additional FNC1 characters will be decoded as <GS> (ASCII 29). The <GS> function is usually only visible when scanned with the Barcode Scanner ASCII String Decoder. Not all scanners properly decode the first FNC1 character as "]d2". The screenshot below is the decoded symbol of Fig. 2 above scanned with the IDAutomation 2D USB Scanner. To enable this decoding within the scanner, refer to the GS1-DataMatrix emulation programming guide.
The most common method of reading Data Matrix barcodes is with a camera-based image reader (aka: barcode imager). Most of the hand-held barcode imagers recommended by IDAutomation perform keyboard emulation and receive power from the USB port so that no external power supply is needed. When a barcode symbol is read using keyboard emulation, the data appears at the cursor as if it had been typed in from the keyboard.
Most barcode imagers have the ability to read Data Matrix barcodes by default, such as the Symbol, Metrologic and Hand Held Products Barcode Imagers. Many hand-held imagers also read very small symbols, such as the IDAutomation 2D Barcode Scanner, which reliably reads the IDAutomation ECC200 Data Matrix Barcode Font when printed as small as 3 points, which is an X-dimension of 10 mils.
In many cases, it may be desired to have the scanner trigger a form or action in an application. IDAutomation has documented simple methods of accomplishing this task in the USB Barcode Scanner Application Integration Guide.
DataMatrix allows ASCII codes to be easily encoded for various functions such as tabs, returns and the RS, GS and EOT characters required for ISO/IEC 15434 and DOD UID labels. In all IDAutomation products, the tilde (~) may be used to encode ASCII functions according to the documentation. For example; ~d009 is used to encode a tab and ~d013 encodes a return. These functions are not usually visible when scanned unless the Barcode Scanner ASCII String Decoder is used with the scanner.
In many development environments, Chr or Char may also be used to encode the ASCII value directly. For example, the programming examples below encode ECC<tab>200:
ProcessTilde: = "ECC~d009200"
It is possible to scan and encode international and extended characters provided the instructions below are followed:
It is recommended to limit the amount of data encoded in each symbol to 800 characters or less if possible. Although the AIM Data Matrix specifications state, "up to 2335 alpha numeric characters can be encoded," it has been determined that these numbers are not realistic. The amount of data that can be encoded will vary depending upon the type of data, the encoding mode and what the indented scanner can read. In most implementations, the amount of data that can be encoded is significantly decreased due to mode switching between different types of characters, such as between numbers, upper case, lower case and punctuation.
Most camera based imagers and hand-held scanners have a difficult time reading symbols that contain over 800 characters. In the best case scenario, up to 1200 ASCII characters have been successfully encoded and read by using the text encoding mode of the IDAutomation Data Matrix Barcode Forms Control with the IDAutomation 2D Barcode Scanner.
Products such as the IDAutomation Data Matrix Barcode Fonts and the Data Matrix Components all support the encoding modes listed below. By default, the encoding mode for most components is BASE256. If the choice is to encode text or numbers only and size is a concern, a change of the encoding mode to ASCII, TEXT or C40 may produce a smaller symbol. The data represented in the symbol may be compressed using one of the following modes:
IDAutomation Data Matrix Barcode Fonts, Components and Applications use the tilde character "~" to recognize special characters when "Apply Tilde" or "Process Tilde" is enabled. The following tilde options are available:
IDAutomation 2D Data Matrix ECC 200 barcode products support all formats. The following table contains the size, capacity and error correction features of each format. By default, the encoding mode is BASE256 (or binary) for compatibility reasons. The encoding mode may be changed to reduce the symbol size in some situations. The chart below illustrates the smallest symbol size, in the best-case scenario, for the amount of data encoded.
Is a License Required for Use?
Acuity CiMatrix / Siemens invented the Data Matrix ECC200 symbology and placed it in the public domain. Acuity CiMatrix and AIM Global both believe the Data Matrix ECC200 barcode is a public domain symbology and that license fees are not necessary for recent Data Matrix Patent Claims made by Acacia and other companies. Cognex recently challenged, and won a case relating to Data Matrix patent claims by Acacia and Veritec.