The component is used to create the Micro QR Code barcode symbols. It's defined in the pMicroQRCode unit.
Micro QR Code is a very small QR Code that fits applications that require a smaller space and use smaller amounts of data, such as ID of printed circuit boards and electronics parts, etc. The efficiency of data encoding has been increased with the use of only one position detection pattern.
Micro QR Code is a two-dimensional matrix symbology. It is not capable of storing much data. However, because it can store data for each symbol size more efficiently than QR Code, the size of Micro QR Code symbols does not significantly increase, even though the amount of data is increased.
The Micro QR Code was created by Toyota subsidiary Denso-Wave in 1994.
There are three user-selectable levels of error correction, as shown in following table, offering the capability of recovery from the amounts of damage in the table:
Values of ECCLevel property | ECC levels | Recevory capacities (%) (approx.) |
---|---|---|
elLowest | L | 7 |
elMedium | M | 15 |
elQuality | Q | 25 |
You can use the ECCLevel property to specify the error correction code level for a Micro QR Code symbol. It can be one of these values: elLowest, elMedium, and elQuality, corresponding to the error checking and correcting levels L, M, and Q. These values are defined in the pMicroQRCode unit.
If the ECCLevelUpgrade property is set to true, the highest error correction code level that can be accommodated by current symbol size will by 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.
Note, for version 1 Micro QR Code symbols, the error checking and correcting capacity is limited to error detection only. See also the "Symbol sizes" section below.
There are four sizes of Micro QR Code symbol, referred to as version 1 to 4, in increasing order of data capacity. You can use the MinVersion and the MaxVersion properties to specifiy the minimum and maximum sizes for a Micro QR Code symbol. They can be one of values from 1 to 4 (defined in the pMicroQRCode unit), corresponding to the versions 1 to 4. The smallest symbol size that accommodates the barcode text will be automatically selected between minimum and maximum symbol sizes. The CurrentVersion property can be used to get the factual symbol size.
The symbol sizes and the maximum data capacity of each version are listed in following table:
Version | Symbol size (modules) | ECC level | Data capacities | |||
---|---|---|---|---|---|---|
Numeric mode | Alphanumeric mode | Byte mode | Kanji mode | |||
1 | 11 * 11 | L | 5 | - | - | - |
2 | 13 * 13 | L | 10 | 6 | - | - |
M | 8 | 5 | - | - | ||
3 | 15 * 15 | L | 23 | 14 | 9 | 6 |
M | 18 | 11 | 7 | 4 | ||
4 | 17 * 17 | L | 35 | 21 | 15 | 9 |
M | 30 | 18 | 13 | 8 | ||
Q | 21 | 13 | 9 | 5 |
If the barcode text does not fill the maximum data capacity of the Micro QR Code 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 MaxVersion property, an OnInvalidLength or OnInvalidDataLength (only for Delphi/C++ Builder 2009 or later) event will occur.
The minimum quiet zone is equal to 2 modules on all four sides. So the minimum values of LeadingQuietZone, TrailingQuietZone, TopQuietZone, and BottomQuietZone properties are equal to 2.
All 8-bit values can be encoded. The default interpretation shall be:
Micro QR Code has four encoding modes as Numeric mode, Alphanumeric mode, Kanji mode and Byte mode respectively in decreasing order of encoding density. All 256 8-bits value are encoded by switching automatically between all 4 (the AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The character sets in each mode are listed in the following:
Numeric mode: Encodes data from the decimal digit set (0 to 9, byte values 48 to 57).
Alphanumeric mode: Encodes data from a set of 45 characters, i.e. 10 numeric digits (0 to 9) (byte values 48 to 57), 26 alphabetic characters (A - Z) (byte values 65 to 90) , and 9 symbols (SP, $, %, *, +, -, ., /, :) (byte values 32, 36, 37, 42, 43, 45 to 47, 58 respectively).
Note, alphanumeric mode is not available in version 1 Micro QR Code symbols.
Byte mode: All 8-bit values can be encoded.
Note, Byte mode is not available in version 1 or 2 Micro QR Code symbols.
Kanji mode: The Kanji mode efficiently encodes Kanji characters in accordance with the Shift JIS system based on JIS X 0208. The Shift JIS values are shifted from the JIS X 0208 values. JIS X 0208 gives details of the shift coded representation.
It may be possible to achieve a smaller symbol size by using the Kanji mode compaction rules when an appropriate sequence of byte values occurs in the data. You can set the AllowKanjiMode property to false in order to disable the Kanji mode.
Note, Kanji mode is not available in version 1 or 2 Micro QR Code symbols.
The EncodePolicy property indicates how to use these encoding mode by the component. This property can be one of these values (defined in the pMicroQRCode unit):
epMixingOptimal: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The optimal combination of encoding modes will be used in order to minimize the symbol size.
epMixingQuick: All 256 8-bits values are encoded by switching automatically between all 4 (the AllowKanjiMode property is set to true) or 3 (the Kanji mode will not be used if the AllowKanjiMode property is set to false) encoding modes. The combination of encoding modes may not be the optimal one, in order to optimize encoding speed.
epSingleMode: The encoding mode will be selected automatically and applied to entire symbol, based 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, and the encoding mode will not be switched in the sybmol. Note, the Kanji mode will not be used if the AllowKanjiMode property is set to false.
(*): The Data property, OnInvalidDataLength and OnInvalidDataChar events are available only for the Delphi/C++ Builder 2009 or later.