Data matrix is a variable-size, two-dimensional symbology capable of encoding large amount of data. The barcode consists of an array of data cells within a distinct perimeter pattern. Although it is capable of encoding 2000 characters, data matrix is best for encoding small amount of data when space is a primary concern. Data matrix is a space efficient symbology. When encoding small amount of data, it produces more compact barcodes than any other two dimensional symbologies.
The encoding process (converting data into an array of light/dark modules) is fairly complicated. First, to produce space efficient symbols, data matrix standard defines six character sets, also called encodation modes with each targeting a different kind of data. Data matrix encoder shifts the encodation mode from one to another whenever it sees that doing so will reduce the whole symbol size. Moreover, to make sure that the symbol can be read when some portions become damaged, the encoder adds additional modules for error correction purposes. The error correction algorithm by itself is not easy.
There are two types of data matrix bar codes: ECC 000-140 and ECC 200. The difference lies in the error correction algorithms they employ - the ECC 000-140 uses several levels of convolutional error correction and ECC 200 uses Reed-Solomon error correction. By employing Reed-Solomon error correction algorithm, ECC200 allows data to be successfully read, even if 60% of the data area is damaged. The most recent data matrix standard requires all new applications to use ECC 200.
Data matrix offers limited combinations between the number of rows and columns. A valid selection is called a “data matrix size”. All data matrix sizes are listed in the table below. A data matrix symbol can be any one of the 30 shapes. In addition, our software uses value 0 for automatic size selection. The value 0 means “do not care”. The program selects the smallest size to fit your data when you set the target size parameter to 0.
Table 1.1. Data matrix sizes
| Size ID | Symbol Size | Data Capacity | ||||
|---|---|---|---|---|---|---|
| Enum | Value | Row | Column | Numeric | Alphanum | Binary |
| mbxDMTargetSize_10X10 | 30 | 10 | 10 | 6 | 3 | 1 |
| mbxDMTargetSize_12X12 | 1 | 12 | 12 | 10 | 6 | 3 |
| mbxDMTargetSize_14X14 | 2 | 14 | 14 | 16 | 10 | 6 |
| mbxDMTargetSize_16X16 | 3 | 16 | 16 | 24 | 16 | 10 |
| mbxDMTargetSize_18X18 | 4 | 18 | 18 | 36 | 25 | 16 |
| mbxDMTargetSize_20X20 | 5 | 20 | 20 | 44 | 31 | 20 |
| mbxDMTargetSize_22X22 | 6 | 22 | 22 | 60 | 43 | 28 |
| mbxDMTargetSize_24X24 | 7 | 24 | 24 | 72 | 52 | 34 |
| mbxDMTargetSize_26X26 | 8 | 26 | 26 | 88 | 64 | 42 |
| mbxDMTargetSize_32X32 | 9 | 32 | 32 | 124 | 91 | 60 |
| mbxDMTargetSize_36X36 | 10 | 36 | 36 | 172 | 127 | 84 |
| mbxDMTargetSize_40X40 | 11 | 40 | 40 | 228 | 169 | 112 |
| mbxDMTargetSize_44X44 | 12 | 44 | 44 | 288 | 214 | 142 |
| mbxDMTargetSize_48X48 | 13 | 48 | 48 | 348 | 259 | 172 |
| mbxDMTargetSize_52X52 | 14 | 52 | 52 | 408 | 304 | 202 |
| mbxDMTargetSize_64X64 | 15 | 64 | 64 | 560 | 418 | 278 |
| mbxDMTargetSize_72X72 | 16 | 72 | 72 | 736 | 550 | 366 |
| mbxDMTargetSize_80X80 | 17 | 80 | 80 | 912 | 682 | 454 |
| mbxDMTargetSize_88X88 | 18 | 88 | 88 | 1152 | 862 | 574 |
| mbxDMTargetSize_96X96 | 19 | 96 | 96 | 1392 | 1042 | 694 |
| mbxDMTargetSize_104X104 | 20 | 104 | 104 | 1632 | 1222 | 814 |
| mbxDMTargetSize_120X120 | 21 | 120 | 120 | 2100 | 1573 | 1048 |
| mbxDMTargetSize_132X132 | 22 | 132 | 132 | 2608 | 1954 | 1302 |
| mbxDMTargetSize_144X144 | 23 | 144 | 144 | 3116 | 2335 | 1556 |
| mbxDMTargetSize_8X18 | 24 | 8 | 18 | 10 | 6 | 3 |
| mbxDMTargetSize_8X32 | 25 | 8 | 32 | 20 | 13 | 8 |
| mbxDMTargetSize_26X32 | 26 | 12 | 26 | 32 | 22 | 14 |
| mbxDMTargetSize_35X44 | 27 | 12 | 36 | 44 | 31 | 20 |
| mbxDMTargetSize_36X64 | 28 | 16 | 36 | 64 | 46 | 30 |
| mbxDMTargetSize_16X48 | 29 | 16 | 48 | 98 | 72 | 47 |
