PRINTER PROGRAMMING TOOL AND METHOD

Abstract: A printer programming tool (40) that is configured for use by a programmer to generate a program which a printer (20) can use such that the printer can print labels, tags or the like using a data stream (84) which would otherwise be incompatible with the printer. The printer programming tool is configured to provide a visual display of at least a portion (108), of a data stream, and allows a user to specify delimiters which the user identifies in the data stream and/or automatically identifies the delimiters in the data stream. The printer programming tool generates a program (140) based on the delimiters which have been identified, 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 (110) containing variables. Preferably, the printer programming tool displays a data correlator (112) which lists the variables of the label, tag or the like and provides fields in which identified delimiters are displayed. A method for programming an interpreter in a printer is also provided.

Description: 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.

Claims: What is claimed is: 1. A printer programming tool (40) that is configured for use by a programmer to generate a program which a printer (20) can use such that the printer can print labels, tags or the like using a data stream (84, 108) which would otherwise be incompatible with the printer, wherein the printer programming tool is characterized by being configured to provide a visual display (106) of at least a portion (108) of a data stream (84), and is configured to generate a program (140) based on identified delimiters, and wherein the program is configured to be used by the printer to print labels, tags or the like using a data stream which would otherwise be incompatible with the printer. 2. A printer programming tool (40) as recited in claim 1 , characterized in that the printer programming tool is configured to provide a visual comparison of at least a portion of the data stream (108) and at least a portion of a label, tag or the like (110). 3. A printer programming tool (40) as recited in claim 1, characterized in that the printer programming tool is configured to display a data conelator (112) which lists 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 (108). 4. A printer programming tool (40) as recited in claim 1 , characterized in that the printer programming tool is configured to automatically identify delimiters in the data stream (84). 5. A printer programming tool (40) as recited in claim 1 , characterized in that the printer programming tool is configured to interpret and extract variable data from an XML data stream (84). 6. A printer programming tool (40) 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 (84) which would otherwise be incompatible with the printer, wherein the printer programming tool is characterized by being configured to provide a visual display (106) of at least a portion (108) of a data stream (84), and is configured to generate a program based on identified delimiters, and wherein the program is configured to be used by the printer to print labels, tags or the like using a data stream which would otherwise be incompatible with the printer, wherein the printer programming tool is configured to provide a visual comparison of at least a portion of the data stream and at least a portion of a label, tag or the like (110), wherein the printer programming tool is configured to display a data conelator (112) which lists 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. 7. A printer programming tool (40) as recited in claim 6, characterized in that the printer programming tool is configured to automatically identify delimiters in the data stream (84). 8. A printer programming tool (40) as recited in claim 6, characterized in that the printer programming tool is configured to interpret and extract variable data from an XML data stream (84). 9. A method of programming a printer (20) using a printer programming tool (40), said method characterized by importing a data stream (84) into the printer programming tool; having the printer programming tool display at least a portion (108) of the data stream; and having the printer programming tool generate a program (140) 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. 10. A method as recited in claim 9, characterized by displaying at least a portion (108) of the data stream (106) and at least a portion of a label, tag or the like (110). 11. A method as recited in claim 10, characterized by using the printer programming tool (40) to display at least a portion (108) of the data stream (84) and at least a portion of a label, tag or the like (110). 12. A method as recited in claim 9, characterized by displaying a data conelator (112) which lists 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 (108). 13. A method as recited in claim 12, characterized by using the printer programming tool (40) to display a data conelator (112) which lists 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 (108). 14. A method as recited in claim 9, characterized by automatically identifying delimiters in the data stream (84). 15. A method as recited in claim 14, characterized by using the printer programming tool (40) to identify delimiters in the data stream (84). 16. A method as recited in claim 9, characterized by using the printer programming tool (40) to interpret and extract variable data from an XML data stream (84). 17. A method of programming a printer (20) using a printer programming tool (40) , said method characterized by importing a data stream (84) into the printer programming tool; having the printer programming tool display at least a portion (108) of the data stream; and having the printer programming tool generate a program (140) 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, further comprising using the printer programming tool to display at least a portion (108) of the data stream and at least a portion of a label, tag or the like (110) and using the printer programming tool to display a data conelator (112) which lists 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. 18. A method as recited in claim 17, characterized by automatically identifying delimiters in the data stream (84). 19. A method as recited in claim 18, characterized by using the printer programming tool (40) to identify delimiters in the data stream (84). 20. A method as recited in claim 17, characterized in that the printer programming tool (40) is configured to interpret and extract variable data from an XML data stream (84).

Inventors: KAUFMAN JEFFREY R, POOLE DAVID L, KAUFMAN, JEFFREY, R., POOLE, DAVID, L.
Applicants: ZEBRA TECHNOLOGIES CORP, ZEBRA TECHNOLOGIES CORPORATION
Application year: 2000
Main classification: B41J5
IPC codes: B41J3, G06F3, G06F9