The component is used to create the Data Matrix (ECC 000 - 140) 2D barcode symbols. It's defined in the *pfmxDataMatrix* 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 was 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 conventional coding for error correction that was used in the initial installations of Data Matrix systems. It offers five levels of error correction using convolutional code error correction. ECC 000 - 140 symbols have an odd number of rows and an odd number of columns. Symbols are square with sizes from 9 * 9 to 49 * 49 (modules) not including quiet zones. These symbols can be recognized by the upper right corner module being dark.

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.

If you want to generate the Data Matrix ECC 200 symbols, please use another component TBarcodeFmx2D_DataMatrixECC200 in this components package.

Data Matrix (ECC 000 - 140) symbols offer five levels of error correction, referred to as ECC 000, ECC 050, ECC 080, ECC 100 and ECC 140 respectively in increasing order of recovery capacity. They are listed in following table:

Error correction code level | Maximum % correctable damage | % increase in used bits from ECC 000 |
---|---|---|

ECC 000 | none | none |

ECC 050 | 2.8 | 33 |

ECC 080 | 5.5 | 50 |

ECC 100 | 12.6 | 100 |

ECC 140 | 25 | 300 |

In an application, it is important to understand that these error correction levels result in the generation of a proportional increase in the number of bits in the message (and hence increase in the size of the symbol), and offer different levels of error recovery.

You can use the ECCLevel property to specify the error correction code level for a Data Matrix (ECC 000 - 140) symbol. It can be one of these values: *dmECC000*, *dmECC050*, *dmECC080*, *dmECC100*, and *dmECC140* (they are defined in the *pfmxDataMatrix* unit), corresponding to the ECC levels ECC 000, ECC 050, ECC 080, ECC 100, and ECC 140.

If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol size will be used for creating more robust symbols. Note, the new level is always no lower than the level specified by the ECCLevel property, and the symbol size will not be increased, it may be determined depending on the length of barcode text, and the error correction code level specified by the ECCLevel property (see also the "Symbol sizes" section below). In other words, only the remaining capacity in current symbol size will be used to upgrade the error correction code level. The property CurrentECCLevel can be used to get the factual error correction code level.

All 8-bit values can be encoded. The default interpretation shall be:

- For values 0 to 127, in accordance with the U.S. national version of ISO/IEC 646 (ASCII); Note this version consists of the GO set of ISO/IEC 646 and the CO set of ISO/IEC 6429 with values 28 to 31 modified to FS, GS, RS and US respectively).
- For values 128 - 255, in accordance with ISO/IEC 8859-1 (These are referred to as extended ASCII).

Note, the character set isn't different based on the encoding mode. See also the "Encoding modes" section below.

There are six encoding modes of Data Matrix (ECC 000 - 140) symbols, they are shown in following list, in decreasing order of encoding density:

**Numeric (Base 11)**: The encoding mode encodes 10 numeric characters 0 to 9, and the space character. The encoding density is 3.5 bits per data character. The encoding mode has highest encoding density.**Alpha (Base 27)**: The encoding mode encodes 26 upper case letters A to Z, and the space character. The encoding density is 4.8 bits per data character.**Alphanumeric (Base 37)**: The encoding mode encodes 26 upper case letters A to Z, 10 numeric characters 0 to 9, and the space character. The encoding density is 5.25 bits per data character.**Punctuation (Base 41)**: The encoding mode encodes 26 upper case letters A to Z, 10 numeric characters 0 to 9, and the space, point(.), hyphen(-), comma(,) and solidus(/) characters. The encoding density is 5.5 bits per data character.**ASCII**: The encoding mode encodes all 128 ASCII characters from ISO/IEC 646. The encoding density is 7 bits per data character.**Binary**: The encoding mode encodes all 256 8-bit bytes. It shall be used for closed applications, where the data interpretation shall be determined by the user. The encoding density is 8 bits per byte. The encoding mode has lowest encoding density.

You can use the EncodeMode property to specify the encoding mode for a Data Matrix (ECC 000 - 140) symbol. It can be one of these value: *emNumeric*, *emAlpha*, *emPunctuation*, *emAlphanumeric*, *emASCII*, and *emBinary*, corresponding to the encoding modes Numberic (Base 11), Alpha (Base 27), Alphanumeric (Base 37), Punctuation (Base 41), ASCII, and Binary. Also, it can be set to *emAuto*, in this case, the encoding mode will be selected automatically from the list shown above, depending on the barcode text, in other words, the barcode text to be encoded will be analysed, and an appropriates lowest level (highest encoding density) encoding mode will be selected, in order to minimize the symbol size. The property CurrentEncodeMode can be used to get the factual encoding mode. These property values are defined in the *pfmxDataMatrix* unit.

ECC 000 - 140 symbols have an odd number of rows and an odd number of columns. Symbols are square with sizes from 9 * 9 to 49 * 49 (modules) square not including quiet zones. These symbol sizes (excluding quiet zones) and their maximum data capacities are listed in following table:

Symbol size values | Symbol sizes (modules) | Maximum data capacities (bits) | ||||
---|---|---|---|---|---|---|

ECC 000 | ECC 050 | ECC 080 | ECC 100 | ECC 140 | ||

dmSize_09_09 | 9 * 9 | 12 | - | - | - | - |

dmSize_11_11 | 11 * 11 | 44 | 6 | - | - | - |

dmSize_13_13 | 13 * 13 | 84 | 36 | 18 | 7 | - |

dmSize_15_15 | 15 * 15 | 132 | 72 | 50 | 31 | - |

dmSize_17_17 | 17 * 17 | 188 | 114 | 86 | 59 | 9 |

dmSize_19_19 | 19 * 19 | 252 | 162 | 130 | 91 | 25 |

dmSize_21_21 | 21 * 21 | 324 | 216 | 178 | 127 | 43 |

dmSize_23_23 | 23 * 23 | 404 | 276 | 230 | 167 | 63 |

dmSize_25_25 | 25 * 25 | 492 | 342 | 290 | 211 | 85 |

dmSize_27_27 | 27 * 27 | 588 | 414 | 354 | 259 | 109 |

dmSize_29_29 | 29 * 29 | 692 | 492 | 422 | 311 | 135 |

dmSize_31_31 | 31 * 31 | 804 | 576 | 498 | 367 | 163 |

dmSize_33_33 | 33 * 33 | 924 | 666 | 578 | 427 | 193 |

dmSize_35_35 | 35 * 35 | 1052 | 762 | 662 | 491 | 225 |

dmSize_37_37 | 37 * 37 | 1188 | 864 | 754 | 559 | 259 |

dmSize_39_39 | 39 * 39 | 1332 | 972 | 850 | 631 | 295 |

dmSize_41_41 | 41 * 41 | 1484 | 1086 | 950 | 707 | 333 |

dmSize_43_43 | 43 * 43 | 1644 | 1206 | 1058 | 787 | 373 |

dmSize_45_45 | 45 * 45 | 1812 | 1332 | 1170 | 871 | 415 |

dmSize_47_47 | 47 * 47 | 1988 | 1464 | 1286 | 959 | 459 |

dmSize_49_49 | 49 * 49 | 2172 | 1602 | 1410 | 1051 | 505 |

The maximum number of characters in each encoding mode can be calculated by using the Maximum data capacities (bits). For example, the maximum data capacities are 114 bits if the symbol size is 17 * 17 and the error correction code level is ECC 050. The encoding density is 4.8 bits per data character in Alpha (Base 27) encoding mode, so the maximum number of characters is 23 (114 / 4.8 = 23.75) in the Alpha (Base 27) encoding mode. You can find the encoding density in "Encoding modes" section above.

You can use the MinSize and the MaxSize properties to specify the minimum and maximum sizes for a Data Matrix (ECC 000 - 140) symbol. They can be one of values from *dmSize_09_09* to *dmSize_49_49* (defined in the *pfmxDataMatrix* 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 000 - 140) symbol, remaining data capacity of the symbol will be filled by using pad bits (the ECCLevelUpgrade property is set to false), or will be used to upgrade the error correction code level (the ECCLevelUpgrade property is set to true). 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 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.

- Image
- Barcode
- Data
- Module
- BarColor
- SpaceColor
- Opacity
- Orientation
- Stretch
- LeftMargin
- TopMargin
- BarcodeWidth
- BarcodeHeight
- ShowQuietZone
- LeadingQuietZone
- TopQuietZone
- TrailingQuietZone
- BottomQuietZone
- EnableUpdateDB
- Locked
- Inversed
- MinSize
- MaxSize
- EncodeMode
- ECCLevel
- ECCLevelUpgrade
- CurrentSize (Read only)
- CurrentECCLevel (Read only)
- CurrentEncodeMode (Read only)

Copyright © 2001-2018 Han-soft Corporation. All rights reserved.