BarDIMM Barcoding logic


BarDIMM Pro manages the whole barcoding complexity for you, there is no need to understand barcoding.


It adds barcoding commands to the PCL5 printer language, very close to the text font commands for sake of simplicity.


In this manual, the escape code is indicated as <Esc>. These five characters must not be entered as individual symbols, but must be replaced with the unique character of ASCII value 27 (decimal 27, hexadecimal 1B).


1.    A Barcode number in the BarDIMM language range (24580-24900) is activated with a BarDIMM language sequence: <Esc>(s#p#h#v#b#s#T where # are parameters.


2.    The end of bar code data is determined according to the bar code type:

  • Bar code data is numeric only: ended by space/CR/LF/FF/Escape code.
  • Bar code data is alphanumeric: ended by CR/LF/FF/Escape code.

Advice: end the data to barcode with a valid PCL5 regular font sequence, such as <Esc>(10U <Esc>(s0p12hbs4099T


3.    Data to barcode is analyzed to verify its characters and length fits in the bar code specs.
If data is invalid an X is printed on bars and an error message describing the problem is systematically added below the bars, preventing the user from blindly printing invalid bar codes.


Transparent Print Data Mode


Some bar code formats support full 128 character set, from ASCII code 0 to ASCII code 127, or full binary data (ASCII 0 to 255): Bar codes Extended 39, Extended 93, 128A, PDF417, 128auto, MaxiCode, EAN/UCC128, Data Matrix, Aztec, Codablock, QRcode.


If you want to print special characters (ASCII code < 32) with these bar codes, a “Transparent Print Data” PCL sequence (< Esc >&p#X, where < Esc > is replaced by ASCII char 27 decimal or by ‘~’ and where # is replaced with the number of data bytes that follow until the next escape sequence) must follow immediately the font selection sequence. This is the only way to know how many characters have to be printed as bar codes. Please analyze the sample Code/EAN/UCC 128 test files for more information.


4.    Some formats require what is called a checksum. A checksum is a value, result of a complex calculation on the code data. This value is added to the end of the data and used by the code reader to proof the reading. BarDIMM Pro and BarDIMM Box calculate automatically the checksum(s) of bar codes that need it. Bar codes can have up to two checksums (MSI Plessey, UCC128). 


If the checksum is provided with fixed length data (EAN 8/13, UPC) it is ignored.


5.    The bar code is generated according to parameters in the BarDIMM Pro Language command. The T parameter selects the Barcode type.
As BarDIMM Pro and BarDIMM Box are algorithm-only, you can apply the scaling independently in the X and Y axis for the 1D barcodes. In the past, with standard scalable fonts, bigger size meant larger bars, resulting in an unreadable code that was too wide, and small size meant thinner bars, also resulting in unreadable codes. Some barcodes are standardized and cannot be resized. Some 2D barcodes can be resized by columns/rows or by defining a ratio.
The bar code can be of any height, in the 3 to 960 point size range (1 point size = 1/72 inch).
The current cursor position is the location of the bottom left corner of the leftmost black bar, whatever bar code text parameter is provided.
Every bar code system has default options, activated when parameters are not provided. The user does not need to provide all parameters. As an example, if the height is omitted, the default size is used. Every code has its specific default values, based on international standards.


6.    If required, BarDIMM Pro and BarDIMM Box prints the code value as centered text with the bars, either under, half-embedded in, full embedded in, or above the bars. Checksum and flag characters are automatically placed in the right place for some systems (EAN 8/13 and UPC), according to the international standards. Automatic sizing limits the embedded text point size, there is no limit for text above or under bar code. 


7.    After bar code printing completion, cursor is set after the bottom right corner of the rightmost black bar or dot.


8.    If another bar code then needs to be printed, just locate the cursor to a new position and send the barcode data. The BarDIMM language command does not need to be sent again unless the barcode format changes.