|
All rules of bar code symbologies
must be followed when printing bar codes. For example, you can't
print alpha characters in a numeric-only bar code type; to do so
will print an invalid code. Some of the rules for the most commonly
used bar code symbologies are listed below.
The Uniform Product Code (UPC) family of codes are typically used for product
identification, and include UPCA and UPCE. These are numeric codes
only, supporting the characters 0 through 9. All UPC codes start
with a number system digit that identifies the type of product being
coded, and end with a checksum digit.
UPCA
consists of a number system digit, ten numbers for the product
identification, and a checksum digit. All Cognitive printers
automatically calculate the checksum. The checksum is not printed in
the bar code subtext. UPC codes usually have extender bars as shown
for the UPCE code below, but Cognitive printers can print UPC codes
without extender bars if desired.
UPCE is a
six-digit variation of the UPC symbology. It always uses number
system zero. You must enter the six numbers of the bar code, but not
the number system digit or the checksum. The printer calculates the
checksum automatically. The bar code is printed with extender bars
and bar code subtext. The bar code subtext shows the system number,
the six digits of the bar code, and the checksum digit. Using the
minus sign bar code modifier removes the checksum from the bar code
subtext.
Numbers coded using the UPCE standard
must conform to these rules:
- If the manufacturer's code ends in
000, 100, or 200, the valid product code numbers are 00000 to
00999.
- If the manufacturer's code ends in
300, 400, 500, 600, 700, 800, or 900, the valid product code
numbers are 00000 to 00099.
- If the manufacturer's code ends in
10, 20, 30, 40, 50, 60, 70, 80, or 90, the valid product code
numbers are 00000 to 00009.
- If the manufacturer's code does
not end in 0, valid product code numbers are 00005 to 00009.
Pinnacle printers will print an error
message if UPCE data does not follow these rules. Other Cognitive
printers do not force conformity, but users should be aware that
improperly coded data may be rejected by UPCE systems.
Interleaved 2 of 5 (I2OF5) is an interleaved code, used mainly in
the distribution industry. It supports numbers 0-9 only. It can use
a weighted modulo 10 checksum digit if desired, and uses start and
stop characters. Because of the interleaved pattern, an even number
of digits (including the checksum, if used) must be placed in the
bar code string. For example, 0123 is valid, while 123 is not valid.

Code 39 is a widely used alphanumeric code that supports numbers
and characters 0-9, A-Z, ".", space, "$",
"/", "+" and "%". It does not support
lower case characters. Code 39 is self-checking, and does not
normally use a check digit. An asterisk is used as a start and stop
character, which Cognitive printers automatically adds to the bar
code. The asterisk does not normally print as part of the bar code
subtext.
HIBC is the Health Industry Bar Code standard symbology. It is
similar to normal Code 39, except it uses an automatically generated
check digit. The check digit does not appear in the bar code
subtext.
Code 93 is similar to Code 39. It can encode 48 different
characters, and with the use of control characters can encode all
128 ASCII characters. Each encoded character in a Code 93 symbol is
represented by three variable width bars and spaces.
Code 93 uses start and stop
characters and can use two modulo 47 check digits (referred to as C
and K). Character C is a modulo 47 sum of the data character values,
weighted from right to left with a 1 through 20 sequence. Character
K is a modulo 47 sum of all characters, including C, weighted from
right to left with a 1 through 15 sequence.
The characters represented by Code 39
are represented in Code 93 as single bar code characters, but all
other Code 93 characters are represented by a control character plus
another character. You must take this into account when estimating
bar code length.
EAN (European Article Numbering) codes are an extension of the
UPC system. A bar code scanner set to read EAN can read UPC;
however, a scanner set for UPC may not read EAN. The EAN codes use a
checksum character, which the printer automatically calculates. EAN
codes are available in two versions: EAN13, which codes 13 digits,
and EAN8, which codes 8 digits.
EAN13 has
the same number of bars as UPCA. EAN13 encodes a number system
character, eleven data digits, and a checksum. You must enter a
number system character and eleven data digits. The printer
calculates and adds the check digit, but the check digit does not
print in the bar code subtext.
EAN8 encodes
a number system character, six data digits, and a checksum. The
printer calculates and adds the check digit, but the check digit
does not print in the bar code subtext.

ADD2 and ADD5 are add-ons for UPC and EAN codes. ADD2 is
a two digit add-on; ADD5 is a five digit add-on.

CODABAR supports numbers 0-9 and the special characters
":", ".", "$", "+" and
"-". It requires you to frame the numeric data with valid
start/stop character pairs; for example, A0123B, where "A"
is the start and "B" is the stop character. The valid
start characters are designated A, B, C, and D. The valid stop
characters are designated T, N, *, and E. Since you may use any of
the four start/stop characters on either end of the symbol, there
are 16 possible combinations. These combinations can identify the
product type or other information.
Postnet is designed for use with the nine digit ZIP +
4 postal code. Each character to be encoded is represented by five
bar code elements, with each element being either a short or tall
bar followed by a space. The bar and space widths are constant.
Postnet uses a start and stop bar and a modulo 10 check digit.
Cognitive printers can automatically calculate and add this digit to
the code.

Plessey code supports numerals 0-9, plus six additional characters
(typically A-F). Plessey uses a check digit, but the check digit may
be calculated several different ways. To allow the user some
flexibility, Cognitive printers do not calculate or print the check
digit. You must calculate and enter the check digit manually,
according to the requirements of your bar code system.
MSI is a modified Plessey code that uses two check digits.
Cognitive printers automatically calculate and add the check digits
to the bar code. Check digits are not printed in the human-readable
bar code subtext.
MSI1 is another modified Plessey code that uses one check digit.
Again, Cognitive printers automatically calculate and add the check
digit. The check digits are not printed in the human-readable bar
code subtext.

MaxiCode is a fixed-size, two-dimensional bar code
symbology developed by United Parcel Service, Inc. for parcel
tracking and distribution. MaxiCode consists of a matrix of
hexagonal elements arranged around a bull's-eye "finder
pattern." It uses five code sets (designated A through E) to
encode all 256 characters of the extended ASCII character set.
PDF417 (an abbreviation for Portable Data File 417),
originally developed by Symbol Technologies, Inc., is a
two-dimensional stacked bar code symbology. It is a highly compact
medium for encoding any data representable by the 256 characters of
the International Character Set.
The
codeword is the basic unit of a PDF417 bar code. All data encoded
using PDF417 is first converted to a decimal value between 0 and 928
inclusive, since there are 928 discrete symbols that can be
represented by the allowable pattern of bars and spaces in each
codeword. The printer converts the raw data to a series of numeric
values following rules that provide optimum data compression. PDF417
provides several different rule sets, or modes, for optimum data
compression.
Table 1. PDF417 error
correction performance
| Security level |
Error limit |
| 0 |
0 |
| 1 |
2 |
| 2 |
6 |
| 3 |
14 |
| 4 |
30 |
| 5 |
62 |
| 6 |
126 |
| 7 |
254 |
| 8 |
510 |
PDF417 provides error detection and
correction within the bar code block. The thoroughness of the
automatic error checking is called the security level of the code.
There are eight security levels, numbered 0-8, as shown in Table 1.
As long as the number of unreadable
or missing code words in the bar code block is less than the number
indicated for the applicable security level, the code may be read
without error.
A high security level provides very
reliable data encoding. However, the bar code block gets bigger with
increasing security, since more codewords are needed to provide the
necessary error checking data. Processing speed also increases
significantly with increasing security, since more error checking
calculations are performed.
Cognitive printers automatically
handle most of the decisions and tasks associated with printing
PDF417 bar codes. The printer selects the best mode for the data,
encodes it, and does all calculations associated with start and stop
characters and error-checking.
Code 128 uses 106 unique characters in three character
sets to represent the numerals 0 through 9, the English alphabet in
both upper and lowercase, some punctuation, and some special
characters. Cognitive printers automatically calculate and add the
checksum character, as well as any required start and stop
characters. Code 128A, Code 128B, and Code 128C are the three
character sets of the Code 128 symbology.
Code 128A can encode punctuation, the digits 0
through 9, the English alphabet in uppercase only, the standard
ASCII control codes, and the special characters shown in Table 2.
Code 128B can encode punctuation, digits 0
through 9, the English alphabet in both upper and lowercase, and the
special characters shown in Table 2.
Code 128C is numeric only, and encodes numbers
00 through 99 plus the special characters shown in Table 2. It
encodes numbers more efficiently than Code 128A or Code 128B, since
the numbers are encoded as double digits.
Most Cognitive printers support
Code 128 Automode Switching. That is, if you specify Code 128
without the A, B, or C modifier the printer will automatically
select and shift among the three symbology versions for optimum
data compression. This will produce the smallest possible bar
code.
Table 2. CODE128
special characters
| 2 Digit
Code |
CODE128A |
CODE128B |
CODE128C |
| 32 |
FNC3 |
FNC3 |
invalid |
| 33 |
FNC2 |
FNC2 |
invalid |
| 34 |
SHIFT |
SHIFT |
invalid |
| 35 |
CODE C |
CODE C |
invalid |
| 36 |
CODE B |
FNC4 |
CODE B |
| 37 |
FNC4 |
CODE A |
CODE A |
| 38 |
FNC1 |
FNC1 |
FNC1 |
| Code
16K is a multi-row
symbology based on Code 128. It offers the features of Code
128 with the added density of a two-dimensional bar code.
Each Code 16K symbol consists of from two to sixteen rows.
Each row consists of a leading quiet zone, a start
character, a guard bar, five symbol characters, a stop
character, and a trailing quiet zone. Rows are separated
from each other by a separator bar, and there are separator
bars at the top and bottom of the symbol as well.
As with Code 128, Code 16K has three unique
character sets. Cognitive printers automatically select the
best character set for the encoded data when using Code 16K.
The user does not need to specify the character set when
programming Code 16K bar codes.
|
Table 3. CODE16K
special characters
| 2 Digit Code |
Function |
| 33 |
FNC3 |
| 34 |
FNC2 |
| 35 |
invalid |
| 36 |
invalid |
| 37 |
FNC4 |
| 38 |
FNC4 |
| 39 |
FNC1 |
|
Many factors can affect bar code
reliability, and the bar code printer does not control all of them.
The printer programmer and user must assume responsibility for some
aspects of bar code printing. Improper programming or improper
printer use can produce bar codes that will not scan reliably.
Common errors resulting in
unscannable or unreliable bar codes include:
- Using a bar code symbology that is
incompatible with the encoded data.
- Trying to read a bar code with a
scanner that will not accept the bar code symbology being used.
(Remember, the bar code process involves two tasks - printing
and reading - and the printer only affects one of them.)
- Using unsuitable print media for
the job.
- Setting the printer darkness
incorrectly.
- Using the wrong print speed for
the job.
- Printing bar codes having
insufficient bar width.
- Printing bar codes using incorrect
bar and space proportions.
- Failing to encode start and stop
characters or checksum characters correctly, for codes where
these elements are not automatically calculated and printed.
You can avoid these errors with a
little care. Follow these guidelines to produce reliable bar codes:
Always confirm that the chosen bar
code symbology supports the characters you wish to encode.
Keeping data on bar code symbology handy
while writing label formats can help you avoid mistakes. The
previous section covers the prominent features of most of the bar
code symbologies supported by Cognitive printers.
Identify any bar code data that
you must program manually. Sometimes
you must include some hidden information, such as start and stop
characters and checksum characters, along with the bar code data.
The nature of such data depends on your printer and the chosen bar
code symbology. Some printers automate many of these housekeeping
chores, but nevertheless, you should be aware that:
- UPCA requires you to specify the
number system type and enter it as part of the bar code data.
- I2OF5 uses a checksum, which you
may have to calculate and enter as part of the bar code data.
- CODE39 sometimes requires a
checksum. If your implementation of CODE39 requires a checksum,
you may need to calculate it and enter it as part of the bar
code data.
- CODABAR requires start and stop
characters that you may need to enter as part of the bar code
data.
- PLESSEY requires a checksum digit
that you may need to enter as part of the bar code data.
(Of course, if you are using a label
printing software package, the software should handle all of these
issues more-or-less automatically. We don't mean to imply that store
clerks need to know how to calculate checksums.)
Use a "systems approach"
when setting up your bar code printer, scanner, and host computer.
Resolve compatibility issues early.
Since Cognitive printers support most bar code symbologies,
developing a system that is compatible with your requirements should
not be difficult.
Always use high-quality print
media, and make sure that the media is suited to the application and
its environment. Use thermal
transfer printing when you expect labels to be in place for extended
periods, or where labels may be exposed to intense heat or direct
sunlight. Use vinyl labels and rub proof ribbon in harsh
environments.
Do not print bar codes in color;
many scanners can't see color. Avoid printing bar codes on media that has a colored
background. The background color may reduce the bar and space
contrast, possibly below your scanner's detection threshold.
Print bar codes as large as
possible. Avoid printing bar
codes that have less than a 10 mil minimum bar width. There are
several ways to program the size of bar codes. Probably the easiest
way to assure yourself that all bar codes are at least 10 mils wide
is to always use a print pitch of 100 dots per inch or less, if your
printer will support it (most Cognitive printers do).
300 DPI printers can safely print
higher density codes. Bar widths as small as 5 mils should scan when
printed on Barcode Blaster SR or similar printers. But as a
general rule, large bar codes scan more reliably than small ones.
Adjust printer speed and darkness
for optimum label printing. These
settings tend to interact to a certain degree. Reducing print speed
will often improve print quality.
Cognitive printers are factory set
for optimum results with most popular media, but may need adjustment
for different media or as the printer ages. Experiment with print
darkness to find the best setting. Use a bar code verifier to check
print darkness, if possible.
When considering print darkness,
there is a difference between printing text and bar codes,
especially rotated bar codes: Labels having text, boxes, graphics,
and the like that "look good" are often too dark for
reliable bar codes. This is because heat buildup on the printhead
and print media makes the bars print wider than you expect. This
changes the width ratio of the bars and spaces. When printing labels
that have mixed text and bar codes, try reducing darkness if the
text looks very dark, even if it looks sharp. Printing labels as
light as possible also helps reduce printhead wear.
Note: Our Blaster
Advantage and Solus printers use an advanced "dot
history" algorithm to greatly reduce problems with rotated
codes. If you are using an Advantage or a Solus printer you probably
do not need to concern yourself much about the information in this
section. (But if you are using another manufacturer's printer,
then read on.)
There is one characteristic of
thermal printing that sets it apart from other printing techniques:
It takes time for a thermal printhead and print media to change
temperature. Each dot on the printhead must get very hot to darken
the thermal print media, and the dots take a little while to heat
and cool as the drive voltage is applied and removed. The print
media is in motion continuously, so while the dots are heating and
cooling the print media is still exposed to some heat. Areas of the
label that theoretically should stay white will be subjected to
temperatures close to the darkening temperature. This results in
some unavoidable bleeding of dark areas into light areas.
The severity of the bleeding depends
on several factors, the most critical of which are:
- Print speed: As you increase the print speed, a larger
area of the label will be exposed to heat during the cool-down
period. This tends to increase bleeding.
- Media quality: Different media types have different heat
sensitivity. Media also has a response time. Some media types
are more subject to bleeding than others.
- Print temperature: The printer darkness setting controls
print temperature. Up to a certain point, the higher the print
temperature the darker the print will be. Excessive heat
increases print bleeding.
Print bleeding affects rotated codes
more than normal codes, because the bars of rotated codes travel
perpendicular to the printhead as it heats and cools. With unrotated
codes, the bars are traveling parallel to the printhead, so the
width of the bars are subjected to heat for a shorter period of
time. This is why unrotated codes generally look sharper and tend to
scan more reliably than rotated codes.
Design labels using unrotated codes
rather than rotated codes if you have a choice. If you must print
rotated bar codes, there are several ways to improve scannability:
- Always use high quality print
media.
- Print your labels at the slowest
printer speed that is available and acceptable for the job
requirements.
- Experiment with print darkness to
find the best darkness/speed combination for your printer and
print media.
- Print the bar codes as large as
possible. Generally, the wider the bars the better the labels
will scan.
|