BAR CODE PRINTING



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 -

ASCIIESC DC4(b) R(c) (w)(h) (a)(ch 1) .....(ch n)
Decimal27 20(b) 82(c) (w)(h) (a)(ch 1) .....(ch n)
Hex1B 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 ValueBar 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 192
20 to 273
28 to 1274


(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 WidthEAN 13EAN 8Others
2 dots0.9 inch0.7 inch 0.6 inch
3 dots1.3 inch1.0 inch 0.75 inch
4 dots1.7 inch1.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 ValueMeaning
Bit 0Check Digit (*1)0Added
1 Not Added
Bit 1OCR chars0 Printed
1 Not Printed
Bit 2Flag Character0 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 TypeCharacter Set No of data item (n)
CodebarNumeric : 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 13Numeric : 0 - 9n = 12
EAN 8Numeric : 0 - 9n = 7
Code 3 of 9Numeric : 0 - 9

Alpha : A - Z

Special : +,-,/,%,$,.,Space

Start/Stop : *

upto 32 including check digit
Industrial 2 of 5Numeric 0 - 9 as above
Interleaved 2 of 5Numeric 0 - 9 as above
Matrix 2 of 5Numeric 0 - 9 as above
UPC Type ANumeric 0 - 9n = 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