PRINTER PROGRAMMING TOOL AND METHOD
Related Application
This application claims the benefit of United States Provisional
Application Serial No. 60/162,789, filed October 29, 1999.
Background
The present invention relates generally to bar code printers adapted
to print labels, tags or the like. The present invention relates more specifically
to a data extraction tool or printer programming tool which is used to generate a
program which can be executed by a printer to cause it to accept a legacy data
stream that would otherwise be unacceptable to it, and to cause printing of one or
more labels, tags or the like. The present invention also specifically relates to a
method of programming a bar code printer using a printer programming tool.
A typical bar code printer according to the prior art is connected to a host
system which sends a data stream in a proprietary protocol which the bar code
printer uses to print labels, tags or the like. The data stream contains information
defining the design and layout of the label, tag, etc. to be printed. This
information typically includes descriptions of lines, boxes, logos and other
graphics, bar code symbologies, and text fields together with their dimensions and
their intended locations on the label. The same data stream may optionally
specify variable data to be rendered or encoded by one or more of those objects, or
it may name the data in such a way that it can be accepted in a further, proprietary
data stream. By way of example, one such proprietary protocol is the Zebra
Programming Language (ZPL) which is described in detail in the ZPL II®
Programming Guide, Rev. 1, available from Zebra Technologies Corporation,
located in Vernon Hills, Illinois.
Bar code printers typically use microprocessors to perform imaging and
printing functions. According to prior art, the protocol received is taken as data
by a firmware program stored in Read Only Memory (ROM) or light-Erasable
Programmable Read Only Memory (EPROM.) The program performs the
operations necessary to render data as printed fonts or encode data into printed bar
code symbols. More recently, bar code printers are equipped with Electrically
Erasable Read-Only-Memory (FLASH Memory) which can be electrically erased
and reprogrammed in the printer. This provides a means to upgrade or replace all
or part of the printer's firmware program with a new program created by the
printer manufacturer. The upgraded or replacement program is supplied over the
Internet, floppy diskette, or CD-ROM containing a memory image and optionally
a program to download it from a personal computer and store it into the printer's
FLASH memory via a serial, parallel, network, or other interface.
The use of proprietary protocols has limited the usefulness of prior art bar
code printers to applications having software specifically written for them or to
use with "middleware" applications designed to translate "legacy" data from other
sources or intended for other uses into the bar code printer's proprietary protocols.
Among such middleware systems are "label prep" applications such as BarOne
and JetForm, which allow a designer to design a label using a "wysiwyg"
graphical interface, and which then incorporate legacy data from other sources,
and assemble the proprietary protocol stream required by the bar code printer.
These systems run on a computer which is dedicated to the bar code printer, or as
a process or driver on a multitasked computer, either of which must be running
when ever the bar code printer is in use.
A basic printer 10 is illustrated schematically in FIGURE 1. As shown,
the printer 10 receives a data stream through a port 12, and a formatter 14 in the
printer 10 uses the data stream to generate a bit map 16. The printer 10 then prints
a label, tag, etc. according to the bit map 16. For the printer 10 to operate
normally, the data stream and formatter 14 must be compatible. In other words,
the data stream must be in a format that the formatter 14 can use to generate an
appropriate bit map 16. If the data stream is in a format which is incompatible
with the formatter 14 in the printer 10, the formatter 14 will not be able to
generate an appropriate bit map 16, and the printer 10 will not print acceptable
labels, tags, etc.
A more advanced printer 20 is illustrated schematically in FIGURE 2. As
shown, the printer 20 receives a data stream through a port 22, and an interpreter
24 in the printer receives the data stream. The interpreter 24 interprets the data
stream and effectively converts the data stream from one format into another,
where the new format is compatible with a formatter 26 in the printer 20. The
formatter 26 uses the newly-formatted data to generate a bit map 28, and the
printer 20 prints a label, tag, etc. according to the bit map 28. Therefore, the
printer 20 illustrated in FIGURE 2 provides an advantage which the printer 10
shown in FIGURE 1 does not provide. Specifically, the printer 20 shown in
FIGURE 2 provides that the printer 20 can receive a data stream which would
otherwise be incompatible with the printer 20, can convert the data stream into a
format which is compatible with the printer 20, and can print labels, tags, etc.
using the newly-formatted data.
While the printer 20 illustrated in FIGURE 2 does provide a distinct
advantage, the interpreter 24 of the printer 20 must be configured such that the
interpreter 24 can properly convert the data stream which is received through the
port 22. To configure the interpreter 24 as such, typically a program must be
provided for the interpreter 24 to use. Unfortunately, drafting such a program
typically requires that one have a fair amount of programming skill.
Objects and Summary
From the foregoing, it may be appreciated that a need has arisen for a
system and method which adapts the bar code printer to accept the available data
stream directly from a non-barcoding application, thereby eliminating the
middleware.
An object of an embodiment of the present invention is to provide a printer
programming tool which can be used to generate an executable program for a bar
code printer which will print labels, tags or the like using a data stream which
would otherwise be incompatible with the printer.
A further object of an embodiment of the present invention is to provide
executable code which is directly executable by the microprocessor in the printer
so as to print the label, ticket, or tag from the arbitrary data stream as quickly as
possible.
A still further object of an embodiment of the present invention is to
provide a printer programming tool as an easy-to-use graphical tool which can be
used to create the executable program by a person having limited programming
skill.
Briefly, and in accordance with at least one of the foregoing objects, an
embodiment of the present invention provides a printer programming tool that is
configured for use by a programmer to generate a program which a printer can use
such that the printer can print labels, tags or the like using a data stream which
would otherwise be incompatible with the printer. The printer programming tool
is configured to provide a visual display of at least a portion of a data stream, and
generates a program based on identified delimiters, where the program is
configured to be used by a printer.
Preferably, the printer programming tool provides a visual comparison of
at least a portion of the data stream and at least a portion of a label, tag or the like
containing variables. Preferably, the printer programming tool displays a data
conelator which lists the variables of the label, tag or the like, and provides fields
in which a user can specify delimiters which have been identified in the displayed
data stream. The printer programming tool may also be configured to
automatically identify delimiters in a given data stream.
Another embodiment of the present invention provides a method of
programming a printer using a printer programming tool. The method includes
importing a data stream into the printer programming tool, having the printer
programming tool display at least a portion of the data stream, and having the
printer programming tool generate a program based on delimiters which have been
identified, where the program is configured for use by a printer such that the
printer can print labels, tags or the like using a data stream which would otherwise
be incompatible with the printer.
Preferably, the printer programming tool displays at least a portion of the
data stream and at least a portion of a label, tag or the like, where the label, tag,
etc. includes variables. Preferably, the printer programming tool displays a data
conelator, and the data conelator lists the variables of the label, tag or the like,
and provides fields in which a user can specify delimiters which have been
identified in the data stream. The printer programming tool may also be
configured to automatically identify delimiters in a given data stream.
Brief Description of the Drawings
The organization and manner of the structure and function of the
invention, together with further objects and advantages thereof, may be
understood by reference to the following description taken in connection with the
accompanying drawings, wherein:
FIGURE 1 is a simplified schematic diagram of a basic printer, showing
the printer receiving a data stream and printing a label, tag or the like;
FIGURE 2 is a simplified schematic diagram of a printer which is more
advanced than the printer illustrated in FIGURE 1 , showing the printer receiving a
data stream in one format ("Format A"), converting the data stream into another
format ("Format B"), and printing a label, tag or the like;
FIGURE 3 is a block diagram of an anangement which can be used to
program an interpreter of a printer, wherein the anangement includes a printer
programming tool which is in accordance with an embodiment of the present
invention;
FIGURE 4 is a block diagram of an exemplary computer network which
includes a printer programming tool that is in accordance with an embodiment of
the present invention;
FIGURE 5 is a block diagram of a method which can be used in
connection with the arrangement shown in FIGURES 3 and 4;
FIGURE 6 is a screen shot of the printer programming tool illustrated in
FIGURES 3 and 4, depicting a portion of a data stream, a label containing
variables, and a data conelator that lists variables of the label and includes fields
in which delimiters which are identified in the data stream are listed; and
FIGURE 7 is another screen shot of the printer programming tool
illustrated in FIGURES 3 and 4, depicting a program which has been generated by
the printer programming tool, where the program is configured for use in
programming a printer as shown in FIGURES 3 and 4.
Description of the Preferred Embodiment
While the present invention may be susceptible to embodiment in different
forms, there is shown in the drawings, and herein will be described in detail, an
embodiment of the invention with the understanding that the present description is
to be considered an exemplification of the principles of the invention and is not
intended to limit the invention to that as illustrated and described herein.
FIGURE 3 depicts an anangement 30 which can be used to program an
interpreter 24 of a printer 20. The anangement 30 includes a printer programming
tool or data extraction tool 40 which is in accordance with an embodiment of the
present invention. The printer programming tool 40 receives data in a given
format ("Format A"), and generates a program which converts the given format
("Format A") into another format ("Format B"). The program is then downloaded
to the printer 20, and an interpreter 24 (as shown in FIGURE 2) uses the program
to interpret a data stream that is received in one format ("Format A"), and converts
the data stream to a different format ("Format B"), where the new format is
compatible with a formatter 26 in the printer. The formatter 26 uses the newly-
formatted data to generate a bit map 28, and the printer 20 prints a label, tag, etc.
according to the bit map 28. Hence, the program which is used by the interpreter
24 allows the printer 20 to use a data stream which otherwise would be
incompatible with the printer 20.
In the past, one had to have a fair amount of programming skill to write an
appropriate program for converting the format of a given data stream. The
program typically depends on what data format is compatible with the formatter
26 of the printer 20 and what data format is expected to be received through the
port 22 of the printer 20. Typically, each company has its own data format. Some
of the existing data stream formats are: BASIC, IPL (Intermec Printer Language),
Datamax Printer Language, Sato Printer Language, ZPL (Zebra Programming
Language), EPL (Eltron Programming Language), QMS and EPOS (Epson Point
of Sale).
For example, if a printer which is configured to print label, tags or like
based on ZPL is expected to receive a data stream which is formatted in EPOS, a
given program must be written for use by the interpreter in the printer so that the
interpreter can convert EPOS to ZPL. On the other hand, if the printer which is
configured to print based on ZPL is expected to receive a data stream which is
formatted in QMS, a different program must be written for use by the interpreter
in the printer so that the interpreter can convert QMS to ZPL. A printer
programming tool 40 in accordance with the present invention provides a
relatively easy-to-use graphical tool which can be used by a programmer to
generate a program that can be used by a printer 20 so that the printer 20 can
receive a data stream in one format or language (i.e. BASIC, IPL, EPL, etc.) and
convert the data stream into another format (i.e. ZPL, etc.) which the printer 20
can use to print labels, tags or the like.
FIGURE 4 illustrates an exemplary computer network which includes a
printer programming tool in accordance with an embodiment of the present
invention. As shown in FIGURE 4, server 42 runs operating system 44 having a
print queue 46 and a connection 48 to a network 50. Operating system 44 need
not be graphically oriented and may be of any type, such as Unix, Linux,
Windows NT Server, or an earlier "legacy" operating system. Server 42 further
has connection 48 to a network 50, allowing it to communicate with a line printer
52 similarly connected to network 50. Server 42 runs a prior art "legacy"
application 54 such as an ERP application which is adapted to print human-
readable documents such as purchase orders and packing lists on line printer 52.
As such, the print job transmitted from application 54 through operating system
44 and print queue 46, over connection 42 and network 48 to line printer 52
typically consists of the variable data to be printed intermingled with formatting
codes appropriate to the type of line printer to specify the text fonts and character
positionings appropriate to the form to be printed.
With continued reference to FIGURE 4, client system 56 (generally
conesponding to printer 20 in FIGURE 3) is shown having operating system 58
further having print queue 60 and a connection 62 to the network 50. Client
system 56 further has a graphics display 64 and a user input system 66, preferably
consisting of a keyboard 68 and mouse 70. Operating system 58 is preferably a
graphically oriented operating system such as Windows 95 or Windows NT for
reasons that will become apparent below. Client 56 further has its own connection
62 to network 50, allowing it to communicate with bar code printer 72 similarly
connected to network 50. As shown, preferably client 56 is running the printer
programming tool 40 that is in accordance with an embodiment of the present
invention.
Bar code printer 72 preferably includes a microprocessor, FLASH
Memory, Random Access Memory (RAM) for storing bitmap images of labels to
be printed, and a port for connection to a network (see FIGURE 4). The printer 72
further preferably includes a motor driver and a print head interface which is
connected to a print mechanism, all of which is generally known in the prior art.
Preferably, the print mechanism is of the thermal printing type, but may instead be
ink jet, laser, or some other type adapted to print bar codes.
Preferably, bar code printer 72, client 56 and server 42 (see FIGURE 4) are
continuously connected by network 50; however, each may be equipped with
serial, or parallel ports of the ordinary type through which the bar code printer 72
is connected.
The printer programming tool 40 and a method using same will now be
described in further detail. With reference to FIGURES 4 and 5, preferably the
user selects a new project from the file menu at step 80. The legacy data stream
from non bar-code application 54 is then imported at step 82, containing both
variable data and formatting codes appropriate to line printer 52 as described
previously. Also at step 82, printer programming tool 40 optionally displays
legacy data 108 intact in a window 106 (see FIGURE 6), which will be described
more fully later herein. Printer programming tool 40 may be configured to
perform the functions of line printer 52 with respect to formatting codes and to
display the image thereby printed in an on-screen window, generally interpret the
formatting codes and create a label that looks similar to the legacy label (steps 86
and 88), and then automatically conelate the data 84 from the data stream to
variable fields (step 90) on the label which has been created.
In addition, or in the alternative, printer programming tool 40 may be
configured to allow a user to draw, or otherwise create, a label that looks similar
to the legacy label, where user identifies the fixed information that is on the label
(step 86 and 88). At step 90, the user then identifies the variable data in the
legacy data stream and indicates where on the label of step 86 the variable
information should be printed (step 90).
Regardless of whether the printer programming tool 40 is configured to
automatically interpret the data stream to create a label that looks like the legacy
label or is configured to have a user create the label manually, after the variable
data in the data stream has been conelated with variable fields on the label,
preferably the printer programming tool generates a program (step 92), executable
by the microprocessor of the printer which later separates the designated
information from the legacy data stream 84. This program is downloaded to the
printer (step 94) which stores it in its Flash ROM in the prior art manner.
Thereafter, when the printer receives legacy label data (boxes 86 and 88), the
printer, using the program (step 98) which has been downloaded, separates the
required data and printer an appropriate label, tag or the like (boxes 100 and 102).
Preferably the printer programming tool 40 is a computer program which
operates under Windows® as shown in the screen shots 104 and 140 illustrated in
FIGURES 6 and 7, respectively. As shown in FIGURE 6, preferably after the
legacy label data has been imported, the printer programming tool 40 displays a
window 106 that contains at least a portion of the legacy data 108 that has been
imported. Additionally, preferably the printer programming tool 40 also displays
the label 110 which has been generated (either automatically or by a user) which
looks generally like the legacy label. As shown, the displayed label 110
preferably contains names of variables which will be printed on the label and
which are contained in the data stream which is displayed.
As shown, preferably the printer programming tool 40 also displays a data
conelator 112. The data conelator 112 is preferably in a spread sheet format and
contains a plurality of fields ananged in columns and rows. Preferably, one
column 114 (i.e. "Column A") displays the names of the variables which will be
printed on the label and which are contained in the displayed data stream (i.e.
"Company Name," "Company Address," "Company Phone," Vendor ID" and
"Container ID") as well as displays "Start-of-Format" and "End-of-Format."
Preferably, another column 116 (i.e. "Column B") contains fields in which
a user can insert data which is identified in the data stream. Preferably, each row
initially lists the data as being "Delimited." However, if a user detects that
particular type of data (i.e. "Start-of-Format," "Company Name," "Company
Address," "Company Phone," Vendor ID," "Container ID" and "End-of-Format")
is constant in the data stream, the user can insert the data entry which is identified.
For example, in the data stream which is shown in FIGURE 6 (in window 106), it
can be discerned that the "Start-of-Format" (i.e. the beginning of a new label, tag
or the like) is always indicated with "S50-C-" and the "End-of-Format" (i.e. the
end of a new label, tag or the like) is always indicated with "E5-5-", therefore a
user enters "S50-C-" and "E5-5-"in the appropriate fields.
Preferably, other columns (i.e. "Columns C and D") 118 and 120 contain
fields in which a user can insert delimiters which are identified in the data stream.
For example, one column 118 (i.e. "Column C") may contain fields for inserting
left delimiters, or data which is to the left of variable data (i.e. a company's name,
address, phone, vendor ID and container ID), and another column 120 (i.e.
"Column D") may contain fields for inserting right delimiters, or data which is to
the right of variable data. For example, "Sears" appears in the data stream
displayed in FIGURE 6. Obviously, "Sears" is a company's name. Therefore, a
user inserts the left delimiter, i.e. "HO;041,45;FOC20,7,1 l;d3," in the appropriate
column and row, and does the same for the right delimiter. After imputing all the
identified delimiters in the appropriate positions in the data conelator 112, the
user directs the printer programming tool 40 to generate a program based thereon
which can be used by a printer to operate with a data stream which would
otherwise be incompatible. Such a program is shown in the screen shot 140
illustrated in FIGURE 7.
Alternatively, or in addition to, that which has been described, the printer
programming tool may 40 be configured to automatically detect the delimiters in a
given data stream and generate a program, such as the program shown in FIGURE
7, which can be used by a printer to operate with a data stream which would
otherwise be incompatible.
The printer programming tool 40 may be configured to allow the user to
draw a label design in window 110 by dragging and dropping objects from an
associated tool bar and filling in the dialogs in a manner customary to Windows
applications.
While FIGURE 6 depicts a prefened screen shot 104, it is possible to
provide a different screen shot which would effectively provide the same
advantages. For example, the printer programming tool 40 may merely provide a
visual display of a portion of the legacy data stream 108 and have the user indicate
the delimiters of each of the variables, etc. contained therein and/or the printer
programming tool 40 may automatically identify the delimiters in a given data
stream. The printer programming tool 40 may provide still other features and
advantages which will become evident from reviewing the appendix which is
attached to United States Provisional Application Serial No. 60/162,789, filed
October 29, 1999, from which this application claims benefit. United States
Provisional Application Serial No. 60/162,789 is hereby incorporated in its
entirety by reference.
Preferably, the printer programming tool 40 is configured such that it
automatically recognizes certain, known printer label languages, and can quickly
generate the program for downloading to a printer. Preferably, the printer
programming tool identifies the delimiters in the data stream, and displays a list of
variables identified in the data stream. The user can then identify which variables
are desired from the list of variables.
Preferably, the program which has been generated by the printer
programming tool 40 is downloaded to the printer over a network, via a telephone
line, where the printer is connected to the telephone line via a modem. Preferably,
the printer can be directed, either offsite through the telephone line or on site, to
run a print test, where the results of the test are communicated back over the
telephone line and/or onto a label. Preferably, the delimiters of the data stream are
identified or any other information which would be helpful to determine why the
printer may not be printing labels conectly.
Providing a printer programming tool and method in accordance with the
present invention preferably provides that a programmer can effectively write a
program which a printer can use to convert a data stream in one format into a
different format which the printer can use to print labels, tags or the like.
Preferably, the printer programming tool and method provide that the programmer
need not have a high level of programming skill.
Preferably, the printer programming tool 40 is configured to interpret and
extract variable data from XML data streams. As one having ordinary skill in the
art would recognize, XML is a text/ ASCII based data format that comprises a
series of hierarchical tags that label variable data.
While an embodiment of the present invention is shown and described, it
is envisioned that those skilled in the art may devise various modifications
without departing from the spirit and scope of the foregoing description.