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 in this article.
Note:
1. The MSB of all parameters is
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
Attributes
This parameter is treated a byte which contains 8
binary flags used to enable certain bar code specific
attributes.
| Bit
|
Specification |
Value |
Meaning |
| 0 |
Check Digit
(*1) |
0 |
Added |
| 1 |
Not Added |
| 1 |
OCR chars |
0 |
Printed |
| 1 |
Not Printed |
| 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 and 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
|
up to 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 : *
|
up to 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 printing 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 BASIC interpreters 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
|