No part of this document may be reproduced or utilized in any form or by any means
electronic or mechanical, including photocopying, recording or by any information
storage and retrieval system, without permission in writing from IntelliTech International.
Published in the United States of America by:
IntelliTech International, Inc.
43 Broad Street
Section B404
Hudson, MA 01749
Notice
To the best of our knowledge, the information in this publication is accurate: however,
IntelliTech International does not assume any responsibility or liability for the accuracy or
completeness of, or consequences arising from, such information. This document is
intended for informational purposes only. Mention of trade names or commercial
products does not constitute endorsement or recommendation for use by IntelliTech
International. Final determination of the suitability of any information or product for use
contemplated by any user, and the manner of that use is the sole responsibility of the
user. We recommend that anyone intending to rely on any recommendation of materials
or procedures mentioned in this publication should satisfy himself as to such suitability,
and that he can meet all applicable safety and health standards.
All trademarks and registered trademarks appearing in this document are the property of
their respective owners.
This Programmer’s Guide provides information about printer specific commands that are
supported by the following printer(s):
•Mi46
•Mi48E
•Mi410
•Mi46A
•Mi610
The IntelliTech International, Inc. (IntelliTech) Mi Series Thermal Printer barcode label
printer page description language is based on Hewlett Packard
language does not have native support for barcode printing, IntelliTech has extended the
language by adding barcode specific commands. Methods exist to print barcodes in a
Windows® environment without using these new commands. Examples include using
commercially available barcode fonts or label design packages.
®
PCL 5e. Because this
There are many ways to print barcodes from Windows applications, including the popular
authoring software Microsoft Word. This document describes a basic method for adding
barcodes to Windows applications when using the IntelliTech Thermal Printer Windows
Print Driver.
Scope
This document describes IntelliTech PCL barcode commands, internal variable
commands and various commands specific to thermal print devices. Additionally, a
method for embedding these commands in Windows applications is presented, allowing
the user to include barcodes in their documents directly. Knowledge of PCL is helpful but
not required. A full explanation of PCL is beyond the scope of this guide but many PCL
reference manuals may be found online.
Referenced Documents
The following documents referenced herein shall apply unless otherwise superseded by
requirements specified elsewhere in this document.
There are frequent references to Hewlett Packard’s (HP) PCL Technical Reference
Manual (TRM). This document can be found on HP’s website listed in the Referenced
Documents above. IntelliTech provides unique commands not within the command set
found in the HP’s PCL TRM. No command defined within this document supersedes or
negates any commands found within the PCL TRM. This does not imply that all
commands defined within the PCL TRM are implemented by the IntelliTech Mi Series
Barcode Label Printers. Many commands found within the PCL TRM are irrelevant within
the context of the IntelliTech Mi Series Barcode Label Printer. Examples of these are
commands for selecting discrete pages sizes such as Letter, Legal, A4, and Executive.
Features such as duplexing and stapling do not currently exist in IntelliTech Mi Series
Barcode Printers and these commands, if found within the data stream, are silently
ignored without error.
PCL Language
PCL Command Structure
General Information
As per Hewlett Packard’s specification on the syntax of escape sequences, there are two
forms of PCL escape sequences: two-character escape sequences and parameterized
escape sequences.
Two character escape sequences have the following form:
<ESC>X
“X” is a character that defines the operation to be performed. Two examples of twocharacter escape sequences are <ESC>E and <ESC>9. The first example resets the
printer to default conditions and the second resets the left and right margins to their
default value. The value of “X” may be any character within the range 0x30 – 0x7E.
Parameterized escape sequences have the following form:
<ESC>X y z1 [+|-]#[.#] z2 [+|-]#[.#] z3 … [+|-]#[.#] Zn[data]
The following characters y, #, zi and data may be optional. The parameterized character
X is within the range of 0x21 – 0x2F. The group character “y” is within the range of 0x60
– 0x7E. Group characters specify the type of control being performed.
Table 1: Parameterized Character <ESC> X...
Character (X)SymbolPurpose
0x21!Reserved for debug firmware
0x22“Not Used
0x23#Not Used
0x24$IntelliBar Mi Series Barcode Parameter
3Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
Character (X)SymbolPurpose
0x25%PCL Language Parameter
0x26&PCL Cursor Parameter
0x27‘Not Used
0x28(PCL Font Parameter
0x29)PCL Font Parameter
0x2A*PCL Graphic Parameter
0x2B+Not Used
0x2C,Not Used
0x2D-Not Used
0x2E.Not Used
0x2F/Not USed
The value field ‘#’ is a group of characters specifying a numeric value. The value is an
ASCII string of characters within the range 0x30 – 0x39. The string may be preceded
with an optional ‘+’ or ‘-‘ sign and may contain a decimal portion separated by the
decimal point. Consider the following example:
<ESC>&l5.81C
This command will set the printer to print 33 lines per label on a 4 inch high label. The
value specified is the number of 1/48 inch increments between rows (5.81 = 4/33 x 48).
The parameter character is any character from the ASCII table within the range of 0x60 –
0x7E. This character specifies the parameter to which the previous value field applies.
This character is used when combining escape sequences as described below in the
section titled “Combining Escape Sequences.”
The Termination Character is any character from the ASCII table within the range 0x40 –
0x5E. This character specifies the parameter to which the previous value field applies.
This character terminates the escape sequence.
The Binary Data is eight-bit data (for example, graphics data, downloaded fonts, etc.).
The number of bytes of binary data is specified by the value field of the escape
sequence. Binary data immediately follows the terminating character of the escape
sequence. Data that is to be encoded into barcode images will be considered as binary
data.
Combining Escape Sequences
All escape sequences that have the same first two characters AFTER the “<ESC>” (the
parameterized and group character) can be combined into a single escape sequence.
For example, the three commands (each begins with the <ESC> character) are of the
type “EC&l”.
can be combined into the following single escape sequence:
<ESC>&l1o2a5.81C
In the example above, the capital ‘O’ becomes a lower case ‘o’, the ‘A’ of the second
command becomes an ‘a’ and the ‘EC&l’ are dropped from the second and third
commands. The printer commands are performed in the order they are combined, from
left to right.
Barcode Clipping
PCL normally clips print objects at the dot level on the logical page boundary. Barcodes
clipped in this manner can easily go undetected. Because of this, any portion of a
barcode that falls beyond the boundaries of the logical print area will be dropped and a
shaded rectangle will be printed, inscribing the area within the logical print page where
the barcode would have been. This will provide visual evidence to the user the barcode
has been clipped and is therefore invalid.
Barcodes that are not generated internally by the printer will not be clipped in this
manner and may not be readable by scanning devices.
Cursor Positioning Commands
The PCL cursor refers to the Current Active Position (CAP) which identifies the current
position on the label where a print command begins laying out page data. The cursor can
be moved anywhere within the logical page using a combination of the horizontal and
vertical cursor position commands and control codes. Although there are many different
ways to move the cursor, there are three types of cursor positioning units. These include
PCL Units, Decipoints, and Row/Column units.
The size of a PCL unit is determined by the value specified by the Unit of Measure
command. The format of this command is <ESC>&u#D where # is the number of units
per inch. The “units per inch” value is a discrete value from the following set of values:
{96, 100, 120, 144, 150, 160, 180, 200, 225, 240, 288, 300, 360, 400, 450, 480, 600,
720, 800, 900, 1200, 1440, 1800, 2400, 3600, and 7200}. If the Unit of Measure is not
set, the default value is 300.
A decipoint, in PCL terminology, is 1/720 inch or one-tenth of a PCL point. A PCL point is
exactly 1/72 inch as opposed to a typographic point which is approximately 1/72 inch.
Decipoints are resolution independent. Labels that are designed using units of decipoints
will be resolution independent and are therefore easily portable across PCL printers of
different resolutions. This is the preferred unit of measure in label design.
Cursor Positioning after Printing Barcode
PCL has a procedure for cursor positioning after printing a text character. Set the Current
Active Position (CAP) to the right at a distance equal to the width of that character, ready
5Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
for the next character to be rendered. With raster images, the CAP is moved vertically to
the next dot row below the raster image previously rendered and then returned to the
horizontal start position of the raster image. The terminus CAP of the barcode is
selectable with the commands described below.
Set the Current Active Position (CAP) to the right of the last printed text character at a
distance equal to the width of that character so the next character can be rendered. With
raster images, the CAP is moved vertically to the next dot row below the previously
rendered raster image and returned to the horizontal start position of the raster image.
The terminus CAP of the barcode is selectable with the commands described below.
Orientation and the Influence on Label Dimensions
HP PCL defines the portrait orientation to be the page configuration where the X
dimension moves to the left along the short edge of the paper and the Y dimension
moves downward along the long edge of the paper. This seems perfectly reasonable
until both the label stock and the arbitrary dimensions a label may have on a given roll of
media are considered. As an example, for the common label stock size of 4” by 6”, it is
obvious the label is in the portrait orientation. For 4” by 3” label stock, HP PCL regards
this label as being in the landscape orientation and will automatically rotate the text,
images, rules, and coordinates by 90 degrees to maintain the portrait orientation with
respect to the shorter distance on the side. This may not be what an experienced user of
thermal printers would expect to see. In order for the same image to be produced on a
shorter label, the printer must be programed to produce the image in the landscape
orientation. Orientation takes precedence over label dimensions. If the printer is in the
portrait orientation, HP PCL will rotate the image to align it to the short edge of the label.
This subtle design characteristic may cause problems with users of legacy label printers
therefore we have chosen to modify this behavior to be more in-line with thermal printers.
Fonts and Symbol Sets Supported
Resident Scalable Fonts
The table below provides a list of the 53 resident scalable fonts and the escape
sequence needed to select that font as the current primary font. The <ESC> tag
represents the escape character 0x1B. The <symset> tag represents the symbol set to
use with the selected font (see section 13 below). The <ptsize> tag represents the
requested point size of the font, up to two decimal places. The <pitch> tag represents
horizontal spacing of a fixed pitch font in characters per inch.
Refer to the Symbol Set Mapping Table resident symbol sets. The tags must be replaced
with their appropriate values. Developers may choose to define their own symbol sets.
Note: The resident fonts for your printer may vary in number from those listed in this
Symbol sets are used to map character codes to the associated character image. The
most familiar symbol set is the ASCII character mapping for characters occupying the
character codes ranging from 0x20, which is the space character, through 0x7E, which is
the tilde ‘~’ character. These symbol sets are used to support the internationalization of
labels.
As stated earlier, printer commands are performed in the order that they are combined,
from left to right. There are several barcode parameters that are only relevant to a subset
of the total number of barcodes provided.
All IntelliTech Mi Series barcodes and their support parameters will begin with the
following sequence:
<ESC>$b... 0x1b 0x24 0x62
There are several escape commands associated with barcodes. Any escape command
that modifies a property of a barcode will only affect the currently selected barcode. For a
label design with multiple barcode types, modification of one or more barcode properties
does not affect the properties of any other barcode type.
The following commands illustrate how one might handle modifying the default
parameters for multiple barcode types on a single label. Note that the examples below
have line numbers. For ease of reading each line is separated by a carriage return and
line feed. When sending this data to the printer, all the lines in the examples should NOT
have a carriage return and line feed except where you see the symbol “CRLF”. The
“CRLF” symbol indicates a carriage return/line feed combination should be inserted into
the data stream. The “<ESC>” symbol indicates the escape character (hex value 0x1B)
should be inserted into the data stream.
Table 4: Example of Printing Barcodes (Compressed Commands)
CommandsDescription
<ESC>%-12345X@PJL SET RESOLUTION =
CRL
300
@PJL SET PAPERWIDTH=2880
@PJL SET PAPERLENGTH=2880
@PJL ENTER LANGUAGE = PCL
<ESC>&a2160h720v270PSet the horizontal cursor position at 2160
<ESC>$b1030c360h2a10W9876543210
F
CRL
F
CRL
F
CRL
F
Reset the printer and enter into PJL mode, Set the
resolution to 300 DPI
Set the label width to 2880 decipoints (4 inches)
Set the label length to 2880 decipoints (4 inches)
Select the PCL emulation
decipoints (3 inches) and the vertical cursor
position at 720 decipoints (1 inch) and set the
writing direction at 270 degrees counter clockwise
from horizontal (down the label).
Select barcode 1030 (Code 128 w/ Auto select).
Set the barcode height of this barcode to 360
decipoints and enable autoprint w/ checksum
(human readable). With the currently selected
barcode (1030), print the data 9876543210 (10
bytes of data)
11Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
CommandsDescription
<ESC>&a0p720h540VSet the writing direction to 0 degrees, the horizontal
cursor position at 720 decipoints horizontally (1
inch) and 540 decipoints vertically (¾ inch).
<ESC>$b1061c360h0a10W1234567890 Select barcode 1061 (Interleave 2 of 5 w/ Bearer
Bars), the height of the barcode to 360 decipoints
(1/2 inch), no autoprint and print the following 10
bytes: 1234567890
<ESC>EReset PCL (this causes any imaged data to be
printed)
<ESC>%-12345XReset the printer and wait for more PJL commands
Table 5: Example of printing Barcodes (Uncompressed Commands
CommandsDescriptions
<ESC>%-12345X@PJL SET RESOLUTION =
CRL
300
@PJL SET PAPERWIDTH=2880
@PJL SET PAPERLENGTH=2880
@PJL ENTER LANGUAGE = PCL
F
CRL
F
CRL
F
CRL
F
Reset the printer and enter PJL mode
Set the label width to 2880 decipoints (4 inches)
Set the label length to 2880 decipoints (4 inches)
Select the PCL emulation
<ESC>&a2160HSet the horizontal cursor position to 2160
decipoints
<ESC>&720V
<ESC>&a270P
Set the vertical cursor position to 720 decipoints
Set the writing direction to 270 degrees counter
clockwise from horizontal
<ESC>$b1030CSelect barcode number 1030 (Code 128 /w Auto
select)
<ESC>$b360HSet the barcode height to 360 decipoints (½ inch)
<ESC>$b2AEnable barcode autoprint with checksum
<ESC>$b10W9876543210With the current barcode (1030) print the 10 bytes
of data: 9876543210
<ESC>&0P
Set the writing direction at 0 degrees.
<ESC>&a720HSet the horizontal cursor position to 720 decipoints
<ESC>&a540V
<ESC>$b1061C
<ESC>$b360H
<ESC>$b0A
Set the vertical cursor position to 1440 decipoints
Select barcode number 1061 (Interleave 2 of 5)
Set the barcode height to 180 decipoints (¼ inch)
Disable barcode autoprint for this barcode
<ESC>$b10W0123456789With the current barcode type (1061) print data
<ESC>%-12345XReset the printer and wait for more PJL commands
Comparing the two tables above there is a noticeable difference in the amount of data
saved by compressing the commands. In general, three bytes for each combined
command will be saved. This becomes significant with larger, more complex labels,
especially if the labels will be stored in the printer as macros.
Enable/Disable Barcode Autoprint
The following command will enable or disable human readable autoprint of the barcode
data:
<ESC>$b#A 0x1b 0x24 0x62 <0|1|2> 0x41
The command will affect only those barcodes with a human readable component. The
following arguments are valid:
0 – Disable human readable text
1 – Enable human readable text
2 – Enable human readable with checksum information
Note: The autoprint field is considered part of the barcode object. It is implied that when
the height of the barcode is specified, the height of the autoprint is included in that
barcode height. For example, if a Code 3 of 9 barcode is selected with autoprint in the
normal orientation and has a height of 1 inch, the height is measured from the top of the
barcode to the baseline of the autoprint text.
Select Barcode Type
The following will select the current barcode type:
<ESC>$b#C 0x1b 0x24 0x62 <value> 0x43
Note that all barcode commands below operate on the currently selected barcode. The
table below contains the list of barcodes and their numerical values.
Set Barcode Data Delimiter
The following will select the data delimiter for the currently selected barcode:
<ESC>$b#D 0x1b 0x24 0x62 <value> 0x44
The value parameter is the ASCII value of the character to be used as a delimiter. Refer
to the print barcode data below for a description of the “Print Barcode Data” command
and note how this command extends the capabilities of the “Print Barcode Data”
command. The following combined
1
command will select the Code 39 barcode, set the
Data Delimiter to the tilde character ‘~’ (ASCII 127) and print the barcode with the data
‘0123456789’.
1.See Section on Combined Escape Sequences.
13Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
<ESC>$b1000c126d0W0123456789~
In this example the value of the width command is set to zero. This will instruct the printer
to read data after the ‘W’ command until the data delimiter (~) is found. The delimiter is
discarded and not printed. The default value for the data delimiter is the carriage return
(ASCII 13). The delimiter value must be a value not found in the data set being encoded
in the barcode.
Select Error Correction Capacity
The following will set the ECC for 2D barcodes - Datamatrix, PDF417, QR and Aztec.
<ESC>$b#E 0x1b 0x24 0x62 <value> 0x45
Select Barcode Terminating Current Active Position
The following will place the cursor position at the location depicted in the diagram below.
This escape sequence must be sent prior to sending any data that is to appear in the
barcode.
<ESC>$b#F 0x1b 0x24 0x62 <value> 0x46
Figure: 1 - 2 Terminating Current Active Position (CAP)
Select Barcode Height (Decipoints)
The following will set the barcode height in decipoints with 1 decimal.
<ESC>$b#H 0x1b 0x24 0x62 <value> 0x48
If the barcode auto print is enabled prior to sending the barcode data, the height of the
barcode will include the height of any human readable text if enabled. The number of
pixels used in the barcode height will always be rounded. As an example, if the barcode
height is specified to be 97 decipoints, the number of dots used on a 300 DPI printer is
[(97 x 300)/720 = 40.417] and will round down to 40 dots. If the height is specified to be
98 [(98 x 300)/720 = 40.833] the number of dots will be 41. The default barcode height is
720 decipoints (1 inch) for linear barcodes.
Select Barcode Height (PCL Units)
The following will set the barcode height in decipoints with 1 decimal.
If the barcode auto print is enabled prior to sending the barcode data, the height of the
barcode will include the height of any human readable text if enabled. The number of
pixels used in the barcode height will always be rounded. As an example, if the barcode
height is specified to be 97 decipoints, the number of dots used on a 300 DPI printer is
[(97 x 300)/720 = 40.417] and will round down to 40 dots. If the height is specified to be
98 [(98 x 300)/720 = 40.833] the number of dots will be 41. The default barcode height is
720 decipoints (1 inch) for linear barcodes.
Select Narrow Bar Width (Decipoints)
The following command will set the width of a narrow bar in Decipoints (720/inch) with
one decimal:
<ESC>$b#M 0x1b 0x24 0x62 <value> 0x4d
An example of this command might be:
<ESC>$b9.6M
This will set the width of the narrow bar to 9.6 Decipoints which is equivalent to 4 dots at
300 dpi or 8 dots at 600dpi. This command will round for example (2*300)/720 = 0.833
and will round up to 1 dot. (3*300)/720 = 1.25 and will round down to 1 dot. (4*300)/720=
1.667 and will round up to 2 dots. The printer will not ensure that the narrow element
width is within specification for that barcode type. The default narrow element width will
be defaulted to a reasonable value for each barcode type.
Select Narrow Bar Width (Dots)
The following command, like the one above, will set the width of a narrow bar in PCL
units.
<ESC>$b#N 0x1b 0x24 0x62 <value> 0x4e
The PCL unit defaults to 300 units per inch. This may be modified with the <ESC>&u#D
command. See the PCL Technical Reference Manual for details about this command. If
the user’s environment contains printers with various print densities, refer to the section
titled “Select Barcode Width using Decipoints.”
Select Barcode Anchor
The following will select the point that will serve as the barcode anchor point that
coincides with the beginning cursor position:
<ESC>$b#O 0x1b 0x24 0x62 <value> 0x4F
The diagram below provides the value used to designate where the barcode anchor
point will be. The value may be modified at any time for any subsequent barcodes that
follow.
Many barcodes require quiet zones. A quiet zone is the area immediately surrounding
the barcode and must be free of any text or graphic images. It is the user’s responsibility
15Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
to insure no text, lines, boxes or graphic images of any kind encroach within the quiet
zone. Failure to do so could render the barcode unreadable by some barcode scanners.
Figure: 1 - 3 Barcode Anchor Point
Select Barcode Ratio
The following command will set the wide-to-narrow bar ratio.
<ESC>$b#R 0x1b 0x24 0x62 <value> 0x52
The value of ‘#’ may be one of the following:
1 = 2:1
2 = 7:3
3 = 5:2
4 = 3:1
Any other value will default to the standard ratio of the currently selected barcode. This
command only affects Code 3 of 9 and Interleaved 2 of 5.
Print Barcode Data
The following command will use the provided data in this sequence to print the currently
selected barcode.
<ESC>$b#W 0x1b 0x24 0x62 <value> 0x57
The number of data bytes is specified in the <value> parameter field. As an example:
<ESC>$b1000C <ESC>$b10W1234567890THIS IS A BARCODE
The following condensed command is also valid:
<ESC>$b1000c10W1234567890THIS IS A BARCODE
Either command will select the Code 39 Barcode as the default barcode then send the
10 characters following the barcode selection command to the Code 39 module for
rendering at the current cursor position. It will be followed by the text “This is a Barcode”
using the currently selected font (not the autoprint typeface). A width value of zero will
trigger the data scanning process to read barcode data until the barcode data delimiter is
encountered. Refer to the section titled “Set Barcode Data Delimiter” for details of the
“Barcode Data Delimiter Command”.
The following command will use data described by internal variables such as Date, Time
or Counting fields:
<ESC>$b#Y 0x1b 0x24 0x62 <value> 0x59
Since the length of the data at any given moment is unknown by the host, this provides a
means for internal data fields to be processed into barcodes. Refer to section “PJL GPIO
Write Test” for the details on usage of internal data fields and for a “<value>” parameter
to specify in the command.
Default Barcode Parameters
Several of the barcodes provided by the printer are user configurable including line
width, barcode heights and the bar/space ratio. The table above contains the default
values for the user configurable parameters. Note that every effort has been made to
insure every resident barcode produced by IntelliBar Mi Series Barcode Printers are
within industry specification. Upon deciding to modify these values, be aware that some
barcode scanners may not be able to property decode the barcode. Also note that any
modified values are not stored permanently in the printer. Once the job of labels has
completed, the default values are restored.
Table 6: Linear Bar Codes
Barcode IDBarcode DescriptionNarrow Element
Width
Default
Ratio
Default Height
DotsDecipointsDotsDecipoints
1000
(Default)
1001
1010UPC A49.6N/A300720
1020UPC E49.6N/A300720
1021UPC/EAN Add-On49.6N/A300720
1030Code 128 Auto Select37.2N/A150360
1031Code 128 Set A37.2N/A150360
1032Code 128 Set B37.2N/A150360
1033Code 128 Set C37.2N/A150360
1040EAN 849.6N/A240576
1050EAN 1349.6N/A300720
1060Interleaved 2 of 5 Mod 1037.23:1150360
1061Interleaved 2 of 5 Bearer
Code 3 of 9
Code 3 of 9 Extended
Bars
49.63:1150360
49.63:1150360
37.23:1150360
1070GS1-12849.6N/A4501080
1080Codabar
17Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
Barcode IDBarcode DescriptionNarrow Element
Width
Default
Ratio
Default Height
DotsDecipointsDotsDecipoints
1090Plessey
1091MSI Plessey Mod 10
1100Code 9337.2N/A150360
1110HIBC Code 39
1111HI B C Code 128
1120Telepen
1130GS1 Databar Omnidirectional37.2N/A141338.4
1131GS1 Databar Expanded37.2N/A144345.6
1500Postnet614.4N/A3891.2
1510Planet614.4N/A3891.2
1520FIM921.6N/A187448.8
1530USPS Intelligent Mail512N/A45108
Table 7: 2D Bar Codes
Barcode IDBardoce DescriptionDefault
Default Height
Ratio
DotsDecipointsDotsDecipoints
2000QR Code AutoN/A
2010PDF 417N/A
2020Micro PDFN/A
2030DatamatrixN/A
2040UPS MaxiCodeN/A
2050AztecN/A
PJL (Printer Job Language) Commands
Standard PJL Commands
The following are standard PJL commands supported by IntelliTech’s Mi Series thermal
printers with modifications listed below. Please refer to the HP PCL/PJL Technical
Reference Manual for more information on these commands.
Table 8: PJL Commands
CommandDescriptionModifications
1
FSDOWNLOAD
1
FSMKDIR
Downloads a file to the printer file systemRestrictions added (See below)
Creates the specified directory on the printer
file system
Initializes (formats) the mass storage systemClears user flash file system and
reboots (See below)
COMMENTAdds a line of information as comments
DINQUIREObtain the default value of a specified PJL
environment variable
DEFAULTSets the user default environment value for the
specified environment variable. These values
are shown on front panel equipped printers.
This command should only be used with the
default configuration setting of the printer and
NOT with each print job. See the SET
command below for setting up a specific print
job.
ECHOPrompts the printer to return a specified
message to the host computer
ENTERSelected a printer language for processing the
current job
INITIALIZEResets the PJL current environment and user
default environment variables to the factory
default values
INFORequests a specified category of printer
information
INQUIRERequests the current value for a specified PJL
environment variable
N/A
N/A
N/A
N/A
N/A
N/A
More categories added (See below)
N/A
RESETResets current PJL variables to user default
values
SETSets a current environment variable to a
Also writes flash if changes to user
default values
N/A
specified value for the duration of a PJL job
USTATUSAllows printer to send unsolicited status
N/A
messages
USTATUSOFFTurns off all unsolicited status
N/A
JOBInforms printer of the start of a print jobAdded additional security option (See
below)
EOJTells the printer the print job is completeAlso writes flash if changes to user
default values
Caution: Exercise caution when issuing these PJL Commands. They cannot be undone.
1
Use the PJL DISKLOCK variable to prevent unauthorized file system access. Refer to
the PJL Technical Reference document for more information.
19Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
PJL File System Commands
For the FSDOWNLOAD, FSMKDIR, and FSDELETE commands, the additional
parameter “TYPE” is used to restrict access to the user flash file system. Also, specific
extensions must be used on file names if they are to be accessed via front panel user file
functions. Sub folders will not be accessible from the front panel in these directories
therefore the NAME parameter should not contain directory paths.
The following is a sample command to download a file:
@PJL FSDOWNLOAD FORMAT:BINARY SIZE = nnn TYPE = n NAME = "0:filename.pcl"
<LF>
In the example above, the size is the amount of data starting after the end of line.
Type and filename extension are as follows:
Table 9: Type and File Name Extensions
Type (n) - User File LocationFile Name
0 - User Labelsxxx.pcl
1 - User Setupsxxx.stc
2 - User Mediaxxx.stm
3 - User Languagesxxx.qm
PJL FSINIT Command
To format the user flash file system in case of corruption issue the following command:
<ESC>%-12345X@PJL JOB NAME = “JOB_INIT_USERFS” <LF>
This will erase the user flash system and reboot the printer. Upon restart, the empty file
system will be formatted, necessary default files copied internally, and the printer will be
reset to factory defaults. Note that the following will be deleted permanently from the
printer:
•Wired, wireless and serial communication settings
After reset the touchscreen calibration procedure will appear on the display. In addition,
the services Telnet and SSH will default to on and NTP (Network Time Protocol) will
default to off.
PJL INFO Read-Back Command
A sample command is as follows:
<ESC>%-12345X@PJL INFO xxx <LF>
@PJL EOJ <LF>
<ESC>%-12345X
“xxx” is the desired parameter as noted below:
Table 10: PJL INFO Read-Back Command Parameters
ParameterDescription
DATETIME
SENSORSReturns value of system sensors.
SYSTEMSTATUSReturns system status
SYSTEMINFOReturns system info.
MEDIAFILESReturns list of internal media setup files.
SETUPFILESReturns list of internal user setup files.
LABELFILESReturns list of internal user labels files.
The parameter “SECURITY” is used to allow changes to defaults for printer specific
items such as adjustments and media calibration values. The value of the SECURITY
parameter must match the printer’s security key to take effect.
The custom PJL PERFORM command is used for various functions on the printer. PJL
password security in the JOB command is used to protect against unauthorized use of
this command. Please refer to the HP PCL/PJL Technical Reference Manual for more
information on PJL security.
Ribbon front and back assemblies can be tested using the PERFORM RIBBONFRONT
or RIBBONBACK commands, respectively.
For testing the cutter, insert a value for the number of cuts as seen below.
<ESC>%-12345X@PJL JOB NAME = "JOB_REWIND_TEST" <LF>
@PJL PERFORM CUT = n <LF>
@PJL EOJ <LF>
“n” is the number of cut cycles to perform.
View test results by using the PJL INFO SYSTEMSTATUS read-back command. The
value LASTLBLCNT is the total cycles requested and ERRORCOUNT is the number that
failed.
The PERFORM ABORTALL command is used to cancel ongoing tests. To re-test and
clear counters issue PERFORM SELFTEST = 2
When the self tests are complete the command below can be used to disable the self test
mode:
25Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
To run the GPIO wrap test, either the wrap connector or the GPIO test board with wrap
jumper should be connected to the printer and the following command should be issued:
The PJL INFO SYSTEMSTATUS read back command is used to view test results. The
value LASTLBLCNT refers to the total cycles requested and ERRORCOUNT refers to
the number failed.
PJL GPIO Read Test
Prior to performing the GPIO read test, the GPIO parameters in the database should be
set accordingly using the either front panel, the PJL variables or other means. The signal
function for all pins should be “None”. The signal type for all pins should be set to “High”.
The I/O configuration should be set with an integer representing a bitwise value where
first bit is pin 1, the second bit is pin 2, etc. One is an input pin and zero is an output pin.
Bits 8 – 15 are fixed at 1. For instance if pins 1-4 are input and pins 5-8 are output this
value is 65295 (1111111100001111).
While the test is running, check the ERRORCOUNT value from the PJL INFO
SYSTEMSTATUS read back command to view the GPIO read status. Use bitwise
operand AND of this value against 0x01 for pin1, 0x02 for pin 2, 0x04 for pin 3, etc. If the
result is true then it is considered a high signal. If the result is false, it is considered a low
signal.
Note: This is only for input pins. Output pins are a “do not care”.
PJL GPIO Write Test
Prior to performing the GPIO write test, the GPIO parameters in the database should be
set using either the front panel, PJL variables or by other means. The signal function for
all pins should be “None”. The signal type for all pins should be “High”. For pulse mode,
the “High Pulse” value should be used for output pins. The I/O configuration should be
set with an integer representing a bitwise value where first bit is pin 1, the second bit is
pin 2, etc. One is an input pin and zero is an output pin. Bits 8 – 15 are fixed at 1. For
example, if pins 1-4 are input and pins 5-8 are output, then the resulting value would be
65295 (1111111100001111).
Note: Pins are coupled 1/2, 3/4, 5/6, 7/8.
To start the test, enter the following command:
<ESC>%-12345X@PJL JOB NAME = "JOB_GPIOWRITE_TEST" <LF>
@PJL PERFORM GPIOWRITE = n <LF>
@PJL EOJ <LF>
Where “n” is an integer representing a bitwise value and when the first bit is pin 1, the
second bit will be pin2, etc. One is ON state and zero is OFF state. Only output pins are
used.
For example, if pins 1-4 are output ON and pins 5-8 are input then the resulting value
would be 15 (00001111).
Note: Pins are coupled 1/2, 3/4, 5/6, 7/8.
PJL CONFIG Command
The custom PJL CONFIG command is used with various functions for printer
configurations. PJL password security in the JOB command protects against
unauthorized use of this command. Please refer to the HP PCL/PJL Technical Reference
Manual for more information on PJL security.
Note: The extension, .stc must be used in order to see the file listed under the internal
user setup files on front panel equipped printers. Media setup files are performed as
similarly to the example above but using the SAVEMEDIA and LOADMEDIA CONFIG
parameters with file extension .stm instead.
PJL UPGRADE Command
The custom PJL UPGRADE command is used for printer software upgrades. PJL
password security in the JOB command protects against unauthorized use of this
command. Please refer to the HP PCL/PJL Technical Reference Manual for more
information about PJL security. The software package file with name
“SW[modelname]_SW[revision].bin” should be placed on a TFTP server. Afterward, the
following PJL command should be entered:
The PJL variables supported by the printer include some standard as well as custom
variables. The DEFAULT command allows the user to set a variable permanently,
however this should never appear in a configuration header for a PCL print job. Only a
few select parameters can use the SET command in a PCL print job.
Table 13: PJL Variables
VariableDescriptionRangeDefault
6, 7
HEAT
HEATBALANCE
HEADPRESSURE
PAPERSENSORTYPE
PAPERSENSORSIDE
RIBBON
6
6, 7
6
6
6
RIBBONLOWDIAMETERThe diameter at which a ribbon
RIBBONTENSIONF
RIBBONTENSIONR
REWINDTENSION
PAPERID
RIBBONID
6
6
6
6
6
Controls the heat energy1 – 30 4
Controls the energy of the
1 – 10 7
leading edges of the printed
image
Adjusts the printer head
1 - 107
pressure to enhance the quality
of print
Specifies the type of mark used
to indicate the top of a label.
NONE implies continuous.
NONE, GAP,
MARKTOPSIDE,
MARKUNDERSIDE,
GAP
NOTCH
Specifies which media sensor to
INSIDE, OUTSIDEOUTSIDE
use
Specifies thermal transfer (TT)
NONE, INSIDE, OUTSIDEINSIDE
or direct thermal (DT)
100 - 2000 (1/1000")1380
low warning will be triggered
This sets tension of the front
1 - 3020
ribbon motor
This sets tension of the rear
1 - 2015
ribbon motor
This sets tension of the rewinder
1 - 2011
motor
Paper ID code"XG04"
Ribbon ID code"YI02"
KEYPROMPTInforms the user interface to
prompt the user for the next
label
CUTTER
7
When a cutter is installed, this
controls the cutting action for the
media
REWINDERWhen the rewinder is installed,
this controls the operation and
direction of the powered internal
label rewinder
PRESENTSENSORThis controls the "on-demand"
dispensing of labels
29Thermal Printer Programmer’s Guide
OFF, ONOFF
OFF, PERLABELOFF
OFF, CLOCKWISE,
OFF
COUNTERCLOCKWISE
OFF, ONOFF
1 | Programmer’s GuideIntelliTech International, Inc.
VariableDescriptionRangeDefault
ERRORBUZZERUsed to select the buzzer sound
for an error
WARNINGBUZZERUsed to select the buzzer sound
for a warning
PRINTSPEED
6, 7, 9
Sets the print speed of the
DISABLE, SOUND1,
DISABLE
SOUND2
DISABLE, SOUND1,
DISABLE
SOUND2
20 – 80 (1/10 IPS)60
printer
FEEDSPEED
9
Sets the feed speed of the
0 – 120 (1/10 IPS)0 (auto)
printer
REVERSESPEED
9
Sets the speed at which the
0 – 50 (1/10 IPS)0 (auto)
label will be retracted into the
printer
RETRACTTIMEOUTThe length of time before the
0 – 1000 (sec)0
presented label is retracted to
the next top of label
RETRACTDELAYThe length of time before the
10 – 1000 (ms)70
label is retracted at the next top
of label after
the label has been
removed
LABELPRESENTDISTThe distance, beyond the
0 - 28800 (auto)
bottom edge of the label, that
the label will be presented to the
user for removal. This is
measured in decipoints.
PAPERLOWWARNINGShow paper low warningOFF, ONOFF
PAPEROUTWARNINGShow paper out warningOFF, ONON
COVEROPENWARNINGShow cover open warningOFF, ONON
AUTOLOADSensors will trigger the
OFF, ONON
automatic load process when
paper is detected
AUTOOPTIONDETECTControls the hardware
OFF, ONON
automatic detection
AUTOCALIBRATEAutomatically calibrates the
OFF, ONON
paper out sensors after loading
the paper
AUTOPRESENTDISTEnables the automatic setting of
OFF, ONON
the present distance
AUTOTENSION
6
Enables the automatic setting of
OFF, ONON
tension
AUTOPRESSURE
6
Enables the automatic setting of
OFF, ONON
pressure
AUTOMEDIAGLOBAL
6
Enables the automatic setting of
OFF, ONON
media parameters
PAPERLENGTH
7
Sets the print length of the label
72 - 71280 (1/720")2880
in decipoints (1/720th of an inch)
PAPERWIDTH
7, 8
Sets the print width of the label
72 - 3074 (1/720")2880
in decipoints (1/720th of an inch)
Transmissive sensor current for
the outside sensor
Reflective sensor gain for the
top inside sensor
4
Reflective sensor gain for the
top outside sensor
4
Reflective sensor gain for the
bottom inside sensor
Reflective sensor gain for the
bottom outside sensor
0-3216
0-3216
0-3216
0-3216
0-3216
FRONTPANELUNITSThe units displayed on the
IMPERIAL, METRICIMPERIAL
printer front panel
TIMEONFRONTPANELUsed to display time on the front
OFF, ONOFF
panel, or not
MAINTENANCEALARMDISTThis notifies the user when
0 – 1000 (1000”)0
maintenance is required. It is
specified in thousands of
inches. 0 is no alarm.
ERRORRECOVERYUsed to reprint labels after an
REPRINT, NORERPINTREPRINT
error, or not
PASSWORDDefault password for PJL
0 – 655350
security
TIMEOUTUsed to set the duration of I/O
0-300 (s)1
timeout in seconds. If the printer
waits longer than the timeout
value without receiving any
data, it ends the print job and
begins accepting data from
other I/O ports.
COPIES
7
The number of copies of each
1 – 99991
label for a print job
PORTNUMBERThe TCP port number0 - 655359100
DISKLOCKPrevents writing to user flashOFF, ONOFF
GPIOEnables use of external GPIO
OFF, MODE1OFF
device
GPIOSIGNALTYPE1Selects the type of input/output
signal for pin 1
LOW, HIGH, LOWPULSE,
HIGHPULSE, EDGE
LOW
GPIOSIGNALTYPE2Selects the type of input/output
signal for pin 2
GPIOSIGNALTYPE3Selects the type of input/output
signal for pin 3
GPIOSIGNALTYPE4Selects the type of input/output
signal for pin 4
GPIOSIGNALTYPE5Selects the type of input/output
signal for pin 5
33Thermal Printer Programmer’s Guide
LOW, HIGH, LOWPULSE,
HIGHPULSE, EDGE
LOW, HIGH, LOWPULSE,
HIGHPULSE, EDGE
LOW, HIGH, LOWPULSE,
HIGHPULSE, EDGE
LOW, HIGH, LOWPULSE,
HIGHPULSE, EDGE
LOW
LOW
LOW
LOW
1 | Programmer’s GuideIntelliTech International, Inc.
VariableDescriptionRangeDefault
GPIOSIGNALTYPE6Selects the type of input/output
signal for pin 6
GPIOSIGNALTYPE7Selects the type of input/output
signal for pin 7
GPIOSIGNALTYPE8Selects the type of input/output
signal for pin 8
GPIOSIGNALNAME1Selects the function of pin 1SOP, REPRINT, SLEW,
GPIOSIGNALNAME2Selects the function of pin 2SOP, REPRINT, SLEW,
GPIOSIGNALNAME3Selects the function of pin 3SOP, REPRINT, SLEW,
GPIOSIGNALNAME4Selects the function of pin 4SOP, REPRINT, SLEW,
GPIOSIGNALNAME5Selects the function of pin 5SOP, REPRINT, SLEW,
GPIOSIGNALNAME6Selects the function of pin 6SOP, REPRINT, SLEW,
GPIOSIGNALNAME7Selects the function of pin 7SOP, REPRINT, SLEW,
GPIOSIGNALNAME8Selects the function of pin 8SOP, REPRINT, SLEW,
GPIOPULSEWIDTHWidth of pulse in ms.1 – 2000 (ms)1000
LOW, HIGH, LOWPULSE,
HIGHPULSE, EDGE
LOW, HIGH, LOWPULSE,
HIGHPULSE, EDGE
LOW, HIGH, LOWPULSE,
HIGHPULSE, EDGE
PAUSE, EOP, READY,
MEDIALOW, SERVICE
PAUSE, EOP, READY,
MEDIALOW, SERVICE
PAUSE, EOP, READY,
MEDIALOW, SERVICE
PAUSE, EOP, READY,
MEDIALOW, SERVICE
PAUSE, EOP, READY,
MEDIALOW, SERVICE
PAUSE, EOP, READY,
MEDIALOW, SERVICE
PAUSE, EOP, READY,
MEDIALOW, SERVICE
PAUSE, EOP, READY,
MEDIALOW, SERVICE
LOW
LOW
LOW
SOP
REPRINT
SLEW
PAUSE
EOP
READY
MEDIALOW
SERVICE
GPIOIOCONFIGConfiguration of input/output
pins
SLEWSPEEDControls the rate of paper
movement between printing
areas when using a GPIO
applicator
1
When using PJL commands to query for font number, pitch, point size or symbol set the
0 – 65535565295
20 – 160 (1/10 IPS)80
"LPARM : PCL" entry is needed before the variable name.
2
Refer to the section titled “Resident Scalable Fonts” for a list of fonts by font number.
3
Refer to the section titled “Symbol Sets” for list of symbol sets by PJL name.
4
Refer to the section titled “PJL JOB command” for SECURITY parameter used to
The I/O configuration should be set with an integer representing a bitwise value where
the first bit is pin 1, the second bit is pin 2, etc. One is an input pin and zero is an output
pin. Bits 8 – 15 are fixed at 1. For example, if pins 1-4 are input and pins 5-8 are output
the resulting value is 65295 (1111111100001111).
6
When changing media setup, it is highly recommended that all of the PJL variables are
used. These correspond to all the parameters stored in a media configuration file. Some
of these may actually be ignored if using valid combinations from the paper/ribbon list
and will then use auto settings. As a minimum, PAPERID, RIBBONID,
PAPERSENSORTYPE, PAPERSENSORSIDE and RIBBON should always be set when
configuring media.
7
These parameters can be sent with each job using the SET command.
8
Refer to Appendix 1 for more specific details on the Printer Model Printable Print
Widths.
9
Refer to Appendix 2 for more specific details on the Printer Model Print Speeds.
PJL Internal Variables
The following PCL commands provide access to internal variables:
Table 14: PJL Internal Variables
Command NameST CMDPurpose
DATE/TIME OF PRINT,
INCREMENT FIELD
BARCODE VARIABLE DATA<ESC>$b<#>YSee <> below for values of <var type>.
<ESC>$i<#>ITo embed an internal variable in the
specified format into the data stream.
As mentioned above, the escape sequence <ESC> $b#W is used to process data within
the data stream. This escape sequence requires a byte count ‘#’ which represents the
number of bytes to encode following the character “W”. The second form of the Print
Barcode Data escape sequence is the <ESC>$b#Y command. This command takes an
ID number of the internal print data as the argument ‘#’ and that represents an increment
ID number or a Date/Time ID number.
Defining Internal Variables
Many thermal printers have the ability to generate an internal counting field (increment
field) and a time-date stamp. HP PCL has no internal means of producing or maintaining
these types of fields. In order to provide these features to users familiar with this
capability, Source Technologies has extended PCL and PJL to accommodate the
definition and utilization of these internal variable fields in a two-step process. The first
step is to allocate a variable field through PJL. Then the field is accessed and utilized
within the PCL body of the label.
35Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
PJL Increment Command
The increment field provides counting fields within the label. There can be any number of
references to unique counting fields within the label and each can be referenced any
number of times either as text or barcodes. The following PJL command defines the
format of the INCREMENT field definition:
This PJL command will create or reset the ID variable to the value specified. The ID
value must be a unique number between 1 and 32767. This value is used within the PCL
body as a reference to the internal variable accessed. Multiple formats of the time, date,
or increment fields may be specified as demonstrated in the examples below. The total
number of Increment and Date/Time definitions must not exceed 15.
The variable STEP is the value added to the INCREMENT variable after the label is
imaged and ejected from the printer. The STEP value can be positive or negative. The
default value of STEP is 1. A STEP value of 0 implies that a constant value will be used
as specified by the START value.
The default value of START is 0 if not otherwise specified. The MIN value is the minimum
value the increment can be. If the STEP value is negative then when MIN is reached, the
next value will be the MAX value. The PREFIX and SUFFIX values hold constant strings
used to prepend to the beginning and append to the end of the increment value. The
FILL option accepts either “0” (the number zero) or “ “ (a space character). The default is
an increment field with a zero fill if a LENGTH is specified. If no LENGTH value is
specified, the length of the field will be determined by the current number of digits in the
field. The minimum length of the field is one. Note that the LENGTH field does not
include the length of any PREFIX or SUFFIX string; it only specifies the length of the
actual increment value.
Increment fields used within barcodes must be appropriate for the barcode type selected.
For example, barcodes that are numeric only will fail if increment values that include
alphabetic characters are used.
PJL Date/Time Command
The following PJL command defines the format the DATETIME field definition:
The DATETIME field provides the current date and/or time in various formats. This data
may be used within the label incorporating the currently selected font or within the
currently selected barcode. For text, use the <ESC>$i<ID#> I command. For barcodes,
use the <ESC>$b<ID#>Y command. The “ID#” is the value defined in the PJL header
block and can be any value between 1 and 32767.
The FORMAT string encompasses the following values:
Table 15: Date/Time Template Definitions
TemplateAction
%aAbbreviated weekday name (Sun, Mon, etc.)
%AFull weekday name (Sunday, Monday, etc.)
%bAbbreviated month name (Jan, Feb, etc.)
%BFull month name (January, February, etc.)
%cFull date and time (Thu May 26 16:03:27 2011)
%dDay of the month as two-digit decimal integer (01 – 31)
%DDate as %m/%d/%y
%eDay of the month (1 – 31), single digits are preceded by a space
%hSame as %b (An extension to the ANSI standard)
%HHour as a two-digit 24 hour clock (00 – 23)
%IHour as a two-digit 12 hour clock (01 – 12)
%jJulian day as a three-digit decimal integer (001-366)
%mMonth as a two-digit decimal integer (01 – 12)
%MMinute as a two-digit decimal integer (00 – 59)
%nNew-line character (like \n). Use with care within a barcode.
%pProvides the “AM” or “PM” designator
%rTime expressed as %I:%M:%S %p (this is an extension to the ANSI standard)
%RTime expressed as %H:%M (this is an extension to the ANSI standard)
%SSecond as a two digit integer (00 – 59)
%tHorizontal tab (\t) (this is an extension to the ANSI standard)
%TTime expressed as %H:%M:%S (an extension to the ANSI standard)
%UNumber of week in the year as a two-digit decimal integer (00 – 52) with Sunday
as the first day of the week
%wWeekday as one-digit decimal integer (0 – 6) with Sunday as 0
%WNumber of week in the year as two-digit decimal integer (00 – 52) with Monday
considered as the first day of the week.
%xFull date string (no time); in the locale’s appropriate date representation.
%XFull time string (no date); in the locale’s appropriate date representation.
%yYear without the century as a decimal number [00-99].
%YYear with century as four-digit decimal number
%ZTime zone name (e.g. PST). No string will be provided if it cannot be obtained.
37Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
TemplateAction
%%Prints the percent sign.
The string values may be connected together to form a compound string such as
“%d%m%Y”. This would provide the day, month, and year format with digits only (e.g.
26052011). Note that some values in the table are “short hand” version of a compound
format string (for example %c). The format string may have additional text as well. For
example: FORMAT “TIME: %d%m%Y”.
The following is a hex dump of a test file that uses the increment field and the date/time
stamp. The printed output is included below the example.
Figure: 1 - 4 Increment Field and Date/Time Stamp Examples
The data stream above produces the output below. These examples demonstrate
several different key features when using internal variable fields. When specifying a copy
count within the PCL data stream using the <ESC>&l<val>X command (see line
0000260 above) all variable data will maintain their current values until the last copy is
printed. Only then will the variable fields be updated.
Figure: 1 - 5 Variable Field Examples
Command Pass-Through for Windows Barcode Printing
How it Works
When using the IntelliTech Mi Series Thermal Windows Print Driver, embedding a special
sequence of characters in the source document will result in a barcode command and
other barcode parameters being sent to the printer. This method is often referred to as
command pass-through. In this case specific commands are “passed through” the driver
directly to the printer.
General Pass-Through Format
The general form of this pass through command is as follows:
{ESCbarcode data}
41Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
Example 1Example 2
This sequence always starts with “{ESC” and ends with “}”. In this case ESC is actually
the characters “E”, “S”, and “C” and not to be confused with the escape character
(although that’s what it represents).
barcode data is the is the variable part of the data and is comprised of various
barcode print parameters, the PCL command to print the barcode, and the actual
barcode data to be printed.
Refer to the IntelliTech Mi Series Barcode Command Structure section for more detail
information.
For the following example, assume the paper size within Microsoft Word is a 4” X 4”
label. Within this label all normal things you can do in Word are possible, such as
drawing lines, printing a variety of fonts, and embedding graphics. For label sizes not
listed the label size must be defined in the Printer Drivers’ “Printer Properties” >”Preferences” section. Once saved, your defined size will appear in the media size list.
Example 1 is a label as it would appear on the screen. Three command pass-through
sequences have been embedded in the source document. These sequences will appear
as text and not a barcode. Example 2 shows the label where the command pass-through
data has been printed as a barcode.
Figure: 1 - 6 Label Examples
Below are the 3 embedded command pass-through sequences in Figure 1. Each one
starts with “{ESC” and ends with “}”. Since these are IntelliTech Mi Series barcode
commands, each one is in the $b group of commands and may be combined with other
like commands. Each example has two commands combined as described in Combining
PCL Commands section.
Table 16: Example 1 of a Command Pass Through Sequence
Example 1: {ESC$b2040c21WThis is Maxicode data}
CommandsDescription
{Starting character for command pass-through
ESC$bBeginning of an IntelliBar Mi Series barcode sequence
2040cThis is the first command to select barcode type 2040 which is Maxicode. Notice
the terminator “c” is lower case meaning another $b type command will follow.
21W
}Ending character for command pass-through.
This is the second command to print a barcode with 21 characters following the
“W” which is the print barcode terminator character. Notice “W” is an upper case
meaning this is the last command in the $b sequence.
“This is Maxicode data” = 21 characters to be printed in barcode.
Table 17: Example 2 of a Command Pass Through Sequence
Example 2: {ESC$b1030c8WCode 128}
CommandsDescriptions
{Starting character for command pass-through
ESC$bBeginning of an IntelliBar Mi Series barcode sequence
1030cCommand to select barcode type 1030 which is Code 128
8W
}Ending character for command pass-through.
Command to print a barcode with 8 characters following the “W”.
“Code 128” 8 characters to be printed in barcode
Table 18: Example 3 of a Command Pass Through Sequence
Example 3: {ESC$b1010c11W55555555551}
CommandsDescriptions
{Starting character for command pass-through
ESC$bBeginning of an IntelliBar Mi Series barcode sequence
1010cCommand to select barcode type 1010 which is UPC A.
11W
}Ending character for command pass-through
Command to print a barcode with 11 characters following the “W”
“55555555551” 11 characters to be printed in barcode
43Thermal Printer Programmer’s Guide
1 | Programmer’s GuideIntelliTech International, Inc.
Thermal Printer Programmer’s Guide44
IntelliTech International, Inc.Appendix A | 2
2Appendix A
Printer Model Printable Print Widths
The table below lists the available printable print widths for the different printer models.
Table 1: Printable Print Widths
Printer ModelMinimumDefaultMaximum
Mi46
Mi48E
Mi410
Mi46A
Mi610
.1 inches
2.54 mm
72 decipoints
.1 inches
2.54 mm
72 decipoints
.1 inches
2.54 mm
72 decipoints
.1 inches
2.54 mm
72 decipoints
.1 inches
2.54 mm
72 decipoints
4 inches
108 mm
2880 decipoints
4 inches
108 mm
2880 decipoints
4 inches
108 mm
2880 decipoints
4 inches
152.4 mm
2880 decipoints
6 inches
108 mm
4320 decipoints
4.16 inches
105.7 mm
2995.2 decipoints
4.27 inches
108.4 mm
3074.4 decipoints
4.27 inches
108.4 mm
3074.4 decipoints
4.27 inches
108.4 mm
3074.4 decipoints
6.83 inches
173.5 mm
4917.6 decipoints
45Thermal Printer Programmer’s Guide
2 | Appendix AIntelliTech International, Inc.
Thermal Printer Programmer’s Guide46
IntelliTech International, Inc.Appendix B | 3
3Appendix B
Printer Model Speed
Table 1: Print Speed (Inches Per Second)
Printer ModelMinimumDefaultMaximum
Mi46246
Mi48E268
Mi4102810
Mi46A246
Mi6102810
Table 2: Feed Speed (Inches Per Second)
Printer ModelMinimumDefaultMaximum
Mi46248
Mi48E2610
Mi4102812
Mi46A26
Mi6102812
Table 3: Reverse Speed (Inches Per Second)
Printer ModelMinimumDefaultMaximum
Mi46235
Mi48E245
Mi410255
Mi46A235
Mi610255
47Thermal Printer Programmer’s Guide
3 | Appendix BIntelliTech International, Inc.
Thermal Printer Programmer’s Guide48
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.