1.1. What is data matrix?

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.

Figure 1.1. sample data matrix barcode

sample data matrix barcode

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