The component is used to create the Data Matrix (ECC 200) 2D barcode symbols. It's defined in the pDataMatrixEcc200 unit.
Data Matrix code is a two-dimensional matrix barcode symbology 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 raw data. Usual data size is from a few bytes up to 2 kilobytes. The length of the encoded data depends on the symbol dimension used. Error correction codes are added to increase symbol strength: even if they are partially damaged, they can still be read.
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.
There are 2 types of Data Matrix symbology, namely ECC 000 - 140 and ECC 200. The component can be used to generate the ECC 000 - 140 symbols. It is the newest version of Data Matrix and supports advanced encoding error checking and correction algorithms. It 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. So it's recommended for new application or open systems.
ECC 200 symbols have an even number of rows and an even number of columns. Some symbols are square with sizes from 10 * 10 to 144 * 144 not including quiet zones. Some symbols are rectangular with sizes from 8 * 18 to 16 * 48 not including quiet zones. All ECC 200 symbols can be recognised by the upper right corner module being light.
If you want to generate the Data Matrix ECC (000 - 140) symbols, please use another component TBarcode2D_DataMatrix in this components package.
There are two shapes of Data Matrix (ECC 200) symbols, square and rectangle, as described in following list:
Square: Indicates to generate the square symbols.
Rectangle: Indicates to generate the rectangle symbols.
You can use the Shape property to specify which shape of symbol will be selected to generate the barcode symbol. It can be one of values dsSquare and dsRectangle, corresponding to the shapes square and rectangle. These values are defined in the pDataMatrixEcc200 unit.
Data Matrix (ECC 200) symbols have an even number of rows and an even number of columns. The sizes of the square symbols are from 10 * 10 to 144 * 144 (modules) not including quiet zones. The sizes of the rectangle symbols are from 8 * 18 to 16 * 48 (modules) not including quiet zone.
The sizes of square symbols (excluding quiet zones) and their maximum data capacities are listed in following table:
Symbol size values | Symbol sizes (modules) | Maximum data capacities | ||
---|---|---|---|---|
Numeric | Alphanumeric | Byte | ||
dmSize_10_10 | 10 * 10 | 6 | 3 | 1 |
dmSize_12_12 | 12 * 12 | 10 | 6 | 3 |
dmSize_14_14 | 14 * 14 | 16 | 10 | 6 |
dmSize_16_16 | 16 * 16 | 24 | 16 | 10 |
dmSize_18_18 | 18 * 18 | 36 | 25 | 16 |
dmSize_20_20 | 20 * 20 | 44 | 31 | 20 |
dmSize_22_22 | 22 * 22 | 60 | 43 | 28 |
dmSize_24_24 | 24 * 24 | 72 | 52 | 34 |
dmSize_26_26 | 26 * 26 | 88 | 64 | 42 |
dmSize_32_32 | 32 * 32 | 124 | 91 | 60 |
dmSize_36_36 | 36 * 36 | 172 | 127 | 84 |
dmSize_40_40 | 40 * 40 | 228 | 169 | 112 |
dmSize_44_44 | 44 * 44 | 288 | 214 | 142 |
dmSize_48_48 | 48 * 48 | 348 | 259 | 172 |
dmSize_52_52 | 52 * 52 | 408 | 304 | 202 |
dmSize_64_64 | 64 * 64 | 560 | 418 | 277 |
dmSize_72_72 | 72 * 72 | 736 | 550 | 365 |
dmSize_80_80 | 80 * 80 | 912 | 682 | 453 |
dmSize_88_88 | 88 * 88 | 1152 | 862 | 573 |
dmSize_96_96 | 96 * 96 | 1392 | 1042 | 693 |
dmSize_104_104 | 104 * 104 | 1632 | 1222 | 813 |
dmSize_120_120 | 120 * 120 | 2100 | 1573 | 1047 |
dmSize_132_132 | 132 * 132 | 2608 | 1954 | 1301 |
dmSize_144_144 | 144 * 144 | 3116 | 2335 | 1555 |
The sizes of rectangle symbols (excluding quiet zones) and their maximum data capacities are listed in following table:
Symbol size values | Symbol sizes (modules) | Maximum data capacities | ||
---|---|---|---|---|
Numeric | Alphanumeric | Byte | ||
dmSize_8_18 | 8 * 18 | 10 | 6 | 3 |
dmSize_8_32 | 8 * 32 | 20 | 13 | 8 |
dmSize_12_26 | 12 * 26 | 32 | 22 | 14 |
dmSize_12_36 | 12 * 36 | 44 | 31 | 20 |
dmSize_16_36 | 16 * 36 | 64 | 46 | 30 |
dmSize_16_48 | 16 * 48 | 98 | 72 | 47 |
You can use the MinSize and the MaxSize properties to specifiy the minimum and maximum sizes for a Data Matrix (ECC 200) symbol. They can be one of values from dmSize_10_10 to dmSize_16_48 (they are defined in the pDataMatrixEcc200 unit), corresponding to every symbol size shown above. The smallest symbol size that accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes.
If the barcode text does not fill the maximum data capacity of the Data Matrix (ECC 200) symbol, remaining data capacity of the symbol will be filled by using PAD characters. If the barcode text is so long that it cannot be encoded using the maximum symbol size specified by the MaxSize property, an OnInvalidLength or OnInvalidDataLength (only for Delphi/C++ Builder 2009 or later) event will occur. The CurrentSize property can be used to get the factual symbol size.
The minimum quiet zone is equal to 1 module on all four sides. So the minimum values of LeadingQuietZone, TrailingQuietZone, TopQuietZone, and BottomQuietZone properties are equal to 1. For applications with moderate to excessive reflected noise in close proximity to the symbol, a quiet zone of 2 modules to 4 modules is recommended.
Data Matrix (ECC 200) symbols are fixed at a repair level of about 25% damage and overhead ranges from 60% for a small number of characters downward to 26% for a large number of characters encoded.
All 8-bit values can be encoded. The default interpretation shall be:
This interpretation corresponds to ECI 000003.
Two non-data characters can be encoded, FNC1 for compatibility with some existing applications and ECI indicator blocks for the standardized encoding of message interpretation information.
The AllowEscape property should be set to true in order to place the FNC1 characters or the ECI indicator blocks.
If the AllowEscape property is set to true, following escape sequences are supported by the component, you can insert them to the barcode text:
Note, the "{RS}" is ASCII character RS (ASCII value 30), the "{GS}" is ASCII character GS (ASCII value 29), and the "{EOT}" is ASCII character EOT (ASCII value 4).
The Extended Channel Interpretation (ECI) protocol allows the output data stream to have interpretations different from that of the default character set. Four broad types of interpretations are supported in Data Matrix (ECC 200):
The ECI protocol provides a consistent method to specify particular interpretations on byte values before printing and after decoding. The ECI is identified by an integer (up to 6 digits) which is encoded in the Data Matrix (ECC 200) symbol by the ECI indicator block. The escape sequence "\e[<ECI_Number>]" is used to place the ECI indicator block to the barcode text:
ECI indicator blocks may be placed anywhere in the barcode text in a single or structured append set of Data Matrix (ECC 200) symbols. For example:
ABC\e[123]DEFabc\e[000003]def
The AllowEscape property should be set to true in order to place the ECI indicator blocks. Any ECI invoked shall apply until the end of the barcode text, or until another ECI indicator block is encountered. Thus the interpretation of the ECI may straddle two or more symbols.
In order to handle larger messages than are practical in a single symbol, a data message can be distributed across several Data Matrix (ECC 200) symbols. Up to 16 Data Matrix (ECC 200) symbols may be appended in a structured format to convey more data. If a symbol is part of a structured append this shall be indicated by a structured append block in barcode text. The escape sequence "\s[<Index>, <Amount>, <File_Id>]" is used to place the structured append block to the barcode text:
The AllowEscape property should be set to true in order to place the structured append block. The structured append block may only be placed once in the barcode text. Also, it shall be placed at beginning of the barcode text. The OnInvalidChar or OnInvalidDataChar (only for Delphi/C++ Builder 2009 or later) event will occur if the structured append block be placed more than once, or it isn't placed at beginning of the barcode text. The following is the examples of structured append:
\s[2, 5, 25431]ABCDEFGabcdefg1234567890
\s[2, 5, 101, 31]ABCDEFGabcdefg1234567890
(*): The Data property, OnInvalidDataLength and OnInvalidDataChar events are available only for the Delphi/C++ Builder 2009 or later.