
The FUJITSU DPL24C & DPL24C+ emulation's built into all DL series printers supports the direct printing of 8
industry standard Bar Codes.
This document explains the commands required to implement this feature.
The command format is as follows -
| ASCII | ESC | DC4 | (b) | R | (c) | (w) | (h) | (a) | (ch 1) | ..... | (ch n) |
| Decimal | 27 | 20 | (b) | 82 | (c) | (w) | (h) | (a) | (ch 1) | ..... | (ch n) |
| Hex | 1B | 14 | (b) | 52 | (c) | (w) | (h) | (a) | (ch 1) | ..... | (ch n) |
Where lower case letters enclosed in parentheses, e.g. (b), should be replaced with a single byte parameter as
defined later.
Note:
1. The MSB of all parameters are ignored.
2. The command length varies defined by parameter (b)
Parameters
(b) Byte Count
This specifies the number of subsequent bytes, including the byte count itself, in the command sequence e.g. if the
data to be bar coded is 5 characters then (B) should be set to 11 (decimal) or 0B (hex).
(c) Coding System
This specifies the type of bar code to be printed.
| Parameter Value | Bar Code Type |
| 1 (31 hex) | Codebar (nw-7) |
| 2 (32 hex) | EAN 13 |
| 3 (33 hex) | EAN 8 |
| 4 (34 hex) | Code 3 of 9 |
| 5 (35 hex) | Industrial 2 of 5 |
| 6 (36 hex) | Interleaved 2 of 5 |
| 7 (37 hex) | Matrix 2 of 5 |
| A (41 hex) | UPC Type A |
(w) Width of narrow bars
This specifies the width of the narrow bars, in units of 1/1440 inch, but bar-codes will be printed in units of 1/180th
inch
| Parameter Value (w) | Number of Dots (@180 dpi |
| 0 to 19 | 2 |
| 20 to 27 | 3 |
| 28 to 127 | 4 |
(h) Height of bars
This specifies the height of the bars, in relation to the width of the narrow bars (w)
Height h is determined as follows :
H = (h) / (w) units 1/1440 inch
When h is less than 192 ( 24 dots at 180 dpi), bar codes are printed using the defaults in the following tables
| Narrow Bar Width | EAN 13 | EAN 8 | Others |
| 2 dots | 0.9 inch | 0.7 inch | 0.6 inch |
| 3 dots | 1.3 inch | 1.0 inch | 0.75 inch |
| 4 dots | 1.7 inch | 1.4 inch | 0.9 inch |
(a) Bar Code Attrtibutes
This parameter is treated a byte which contains 8 binary flags used to enable certain bar code specific attributes.
| Bit | Specification | Value | Meaning |
| Bit 0 | Check Digit (*1) | 0 | Added |
| 1 | Not Added | ||
| Bit 1 | OCR chars | 0 | Printed |
| 1 | Not Printed | ||
| Bit 2 | Flag Character | 0 | left of bar code |
| 1 | lower left of bar code |
*1
The check digit is always added for EAN & UPC bar-codes. No check digit is added for Codebar regardless of
this flag
(Ch 1) .... (Ch n) Bar Code Data
These bytes are the actual data to be bar coded, the number of characters & range of characters vary for each bar
code type as defined in the table below
| Bar Code Type | Character Set | No of data item (n) |
| Codebar | Numeric : 0 - 9 Sign: +, - , $, /,: Start/Stop A,a,B,b,C,c,D,d,T,t,N,n,*,E,e | upto 34 including start/stop |
| EAN 13 | Numeric : 0 - 9 | n = 12 |
| EAN 8 | Numeric : 0 - 9 | n = 7 |
| Code 3 of 9 | Numeric : 0 - 9 Alpha : A - Z Special : +,-,/,%,$,.,Space Start/Stop : * | upto 32 including check digit |
| Industrial 2 of 5 | Numeric 0 - 9 | as above |
| Interleaved 2 of 5 | Numeric 0 - 9 | as above |
| Matrix 2 of 5 | Numeric 0 - 9 | as above |
| UPC Type A | Numeric 0 - 9 | n = 11 |
Data must be in the ASCII characters appropriate to the character set used by each type of bar code
If a character not in the valid range of characters is detected the command is cancelled and the remaining data
defined by (B) is skipped.
Bar code specific restrictions
1. Codebar
The start/stop code is not checked by the printer and the bar code is printed according to the input data. The user
must select the start/stop code shown in the table above. both upper & lower case characters can be used for the
start/stop code. OCR Characters are printed in upper case.
2. Code 3 of 9
Only uppercase alpha characters can be used. The printer automatically places the start/stop code (*) preceding &
following the input data. OCR characters are printed for the start/stop code. An error occurs if the start stop code is
detected in the input data.
3. Interleaved 2 of 5
The bar code composition requires that the number of data digits be EVEN. for an ODD number of data items the
bar code is printed with a 0 preceding the input data. The printer automatically places the start stop code
Bar Code Printing
The bar code printing command is treated as a single vertically & horizontally enlarged character in the printer in
relation to other commands or characters, and can be entered by the user at any point in the text.
Note that the bar code pattern is usually larger than ordinary characters and there are some restrictions
If the bar code pattern width exceeds the right margin currently set, the bar code pattern is not printed.
The bar code pattern is printed from current position even though the pattern may extend beyond the bottom margin.
The flag character for the EAN and UPC bar coding is not printed if the bar code pattern is printed at the left margin
without any previous spaces or characters.
Other points to note
Use a new ribbon to maintain high contrast in the printed bar code
Higher resolution bar-codes printed may differ slightly from standards due to limitations in the printer resolution.
Generally the wider the bar code the higher the readability ratio. Be sure to check readability before actual use.
A Sample Barcode Printing Program
10 D$ = "123456789012" ' the data to be bar coded
20 CLEN = LEN (D$) + 6 ' set command len = data +6
30 CODE$ = "2" ' print EAN 13
40 WIDTH = 24 ' set narrow bar width
50 REQD_HEIGHT = 1440 ' request height = 1 inch
60 HEIGHT = INT(REQD_HEIGHT/WIDTH)
70 ATTRIB = &H1
80 LPRINT "A ";
90 LPRINT CHR$(27);CHR$(20); ' start barcode command
100 LPRINT CHR$(CLEN); ' send command len
110 LPRINT "R";
120 LPRINT CODE$;CHR$(WIDTH) ' send Type & Width
130 LPRINT CHR$(HEIGHT);CHR$(ATTRIB) ' send hgt & att
140 LPRINT D$ ' send user data
150 LPRINT " B";
160 LPRINT CHR$(10);CHR$(12)
170 LPRINT "A BARCODE TEST PRINT"
Other points to note when trying to print bar-codes
Always check using the printers Hex Dump command that the printer is really receiving the bytes you expect,
application software/ editors often translate some codes according to their own rules.
E.g. Some BASICS will translate the code 13 ( 0D hex ) into the character pair 13 (0D hex ) , 10 (0A hex). i.e. Carriage returns are converted to Carriage Return / Line feed pairs
To get round this problem "OPEN AS #1" the printer as a file rather than use the LPRINT command and send data
to the printer using the "PRINT #1, nnnnnnn..." command