ePOS printing
10089560 ยท 2018-10-02
Assignee
Inventors
Cpc classification
G06F3/1229
PHYSICS
H04N1/001
ELECTRICITY
H04N1/405
ELECTRICITY
H04L67/02
ELECTRICITY
H04N1/00103
ELECTRICITY
H04N1/00464
ELECTRICITY
G06F3/1289
PHYSICS
G06F3/1298
PHYSICS
G06F3/1231
PHYSICS
International classification
H04N1/00
ELECTRICITY
H04N1/405
ELECTRICITY
Abstract
A script language compatible with HTML is used to define methods or objects capable of communicating directly with an intelligent module for printing operations without going through a web browser's print selection option. A print API library provides the needed methods/objects for creating an HTML print document, and converting it to raster image data using a user-selected conversion method. The intelligent module may function to provide a communication bridge for conveying communication between a web page on a user terminal and a target printer. The print API knows the IP address of the intelligent module, and sends a created print document directly to the intelligent module by means of the known IP address. The API may be part of an application that provides tools for visually creating or editing an HTML document without the user knowing how to program in HTML.
Claims
1. A method for sending an image rendered in a hypertext markup language (HTML rendered image), to a printer, and printing the image by use of the printer, the method comprising steps of: providing an intelligent module adapted to connect to the printer, the intelligent module configured to be set a network address; providing a user terminal having network access to the intelligent module, and configured to execute a web application; embedding an application program interface (API) in the web application, the API providing: (i) a first property element user-input displayed on the user terminal and configured to designate a conversion method for converting the HTML rendered image into raster image data, (ii) a second property element user-input displayed on the user terminal and configured to set the network address of the intelligent module, and (iii) a method element configured to convert the HTML rendered image into the raster image data and send the converted raster image data to the intelligent module; converting, at the user terminal, the HTML rendered image into the raster image data by use of the method element, according to the conversion method designated by the first property element user-input; sending the converted raster image data from the user terminal to the intelligent module by use of the method element, according to the address designated by the second property element user-input; and sending the converted raster image data from the intelligent module to the printer.
2. The method of claim 1, wherein the printer lacks direct access to the network.
3. The method according to claim 2, wherein: the API further provides a third property element user-input displayed on the user terminal to designate the printer; and the API resolves designation of the printer based on the network address of the intelligent module adapted to connect to the printer.
4. The method according to claim 1, wherein the HTML rendered image is rendered in HTML5 Canvas.
5. A method for creating or editing a document in an application, the document adapted to be sent to a printer through a network, the application adapted to be executed by a web browser, the method comprising: providing a user terminal having network access to the printer, the user terminal having a web browser and configured to execute the application, wherein execution of the application in the user terminal includes: providing an object at the user terminal for creating or editing the document, the object including a command buffer configured to receive commands for controlling the printer; displaying on the user terminal a setting screen having a first user-input to set a network address of the printer into an address property element; displaying on the user terminal an edit screen enabled to edit or create the document, the edit screen including icons, each of the icons corresponding to one of the commands for controlling the printer; in response to user selection of one of the icons, displaying, on the edit screen, an input box enabled to input a parameter of the command corresponding to the selected icon; and adding the command corresponding to the selected icon and its parameter, if inputted in the edit screen, to the command buffer of the object provided at the user terminal.
6. The method according to claim 5, further comprising a step of converting the document edited or created on the edit screen to code written in an extensible markup language, and displaying the code on the user terminal.
7. The method of claim 6, wherein: the extensible markup language is a hypertext markup language (HTML); the document edited or created is converted to an HTML rendered document; and execution of the application in the user terminal further includes providing: a second user-input configured to designate a conversion method for converting the HTML rendered document into raster image data, and a method element configured to convert the HTML rendered document into the raster image data and send the converted raster image data to the printer; converting, at the user terminal, the HTML rendered document into the raster image data by use of the method element, according to the conversion method designated by the second user-input.
8. The method according to claim 5, further comprising a step of converting a first portion of the document edited or created on the edit screen to a print preview, and displaying the print preview on the user terminal.
9. The method according to claim 5, further comprising a step of displaying a button for sending the document to the printer having the address designated by the address property element.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) In the drawings wherein like reference symbols refer to like parts.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
(26)
(27)
(28)
(29)
(30)
(31)
(32)
(33)
(34)
(35)
(36)
(37)
(38)
(39)
(40)
(41)
(42)
(43)
(44)
(45)
(46)
(47)
(48)
(49)
(50)
(51)
(52)
(53)
(54)
(55)
(56)
(57)
(58)
(59)
(60)
(61)
(62)
(63)
(64)
(65)
(66)
(67)
(68)
(69)
(70)
(71)
(72)
(73)
(74)
(75)
(76)
(77)
(78)
(79)
(80)
(81)
(82)
(83)
(84)
(85)
(86)
(87)
(88)
(89)
(90)
(91)
(92)
(93)
(94)
(95)
(96)
(97)
(98)
(99)
(100)
(101)
(102)
(103)
(104)
(105)
(106)
(107)
(108)
(109)
(110)
(111)
(112)
(113)
(114)
(115)
(116)
(117)
(118)
(119)
(120)
(121)
(122)
(123)
(124)
(125)
(126)
(127)
(128)
(129)
(130)
(131)
(132)
(133)
(134)
(135)
(136)
(137)
(138)
(139)
(140)
(141)
(142)
(143)
(144)
(145)
(146)
(147)
(148)
(149)
(150)
(151) The default value is 1.0.
(152)
(153)
(154)
(155)
(156)
(157)
(158)
(159)
(160)
(161)
(162)
(163)
(164)
(165)
(166)
(167)
(168)
(169)
(170)
(171)
(172)
(173)
(174)
(175)
(176)
(177)
(178)
DESCRIPTION OF THE PREFERRED EMBODIMENTS
(179) Previously, in order to print from a web page on the Internet, a user typically had to go through a web browser's print-select button on the web browser's interface or go through a third-party printing service on the Internet. The web browser controls access to local resources, such as printers. Basically, the web browser functions as an interface to the local operating system, which in turn controls access to any installed printer drivers. If one wishes to print through a third-party printing service on the Internet, then the document to be printed needs to also exist on the Internet, and not just on the user's local device. In either case, the user is required to go through a printer dialogue box to select from among available, registered printers and printing options, none of which are known to the web page from which one wishes to print.
(180) To improve the capabilities of network printing, the present invention endeavors to increase the capabilities of web applications, i.e., web pages, and in particular to increase the capabilities of script applications (i.e., widgets, methods, etc.) executed within a web page to directly control network printers and non-network printers without having to go through the web browser's print-select button or relying on a third-party Internet printing service.
(181) The printers in the preferred embodiments may be local printers and/or remote printers. That is, the present invention permits web page script applications to create a print document and communicate with, and control, a printer without requiring explicit printing permission or printing assistance from the web browser. In addition to the print document being directly created by the script application, the print document may does not need to exist on the Internet in order to be printed. As a preferred implementation, whenever a script application is mentioned in the following discussion, it is discussed as implemented in the JavaScript language, which is a Java-based script language. It is to be understood however, that the present invention may be implemented using other script languages known in the art.
(182) Since the present invention adds printing capabilities to a web page, and the web page is typically accessed via a web browser, the preferred embodiment of the present invention includes a local computing device capable of running a web browser. To facilitate the use of the present invention with existing network and non-network printers, it is further preferred that the web page communicate via an interface box (i.e., device, apparatus, or module) capable of receiving printing instructions from the web page and translating them to an appropriate communication format/language for the connected printers. Preferably, the interface box provides translation services for communication between the web page and the printers, and further provides any needed help for creating a print document appropriate for a given printer. Since the interface box has computing and decision-making capabilities, it is an intelligent device. So for ease of discussion, the interface box is hereinafter termed, an intelligent module.
(183) If a printer is not a non-network printer, the local printers is connected to local computing device (on which the web browser is installed) via the intelligent module (which is preferably a physical computing apparatus/device). Alternatively, if the printer is a network printer, it is preferred that the intelligent module still function as a communications interface with the local printer. Furthermore, in a network environment, the intelligent module may function as a communication interface for multiple (network and non-network) printers.
(184) Although the present invention may be implemented in any computing environment having a web browser and printer(s), for ease of explanation and as an example of a preferred embodiment, the present invention is herein described as implemented within a retail environment. In particular, the present invention is described as implemented in a point-of-sale (i.e., POS) system, or POS network. It is to be understood however, that the present invention may be implemented other networked and non-networked computing/printing environments.
(185) In POS systems, a point-of-sale device is located at each checkout station to implement a commercial transaction and maintain a record of the transaction. The checkout station is thus the location within a retail environment (or retail establishment) where a physical customer pays a merchant for goods and/or services. A POS system may include multiple POS devices, which may be thought of as electronic cash registers that incorporate computing and/or networking capabilities. POS devices typically have an adjacent (or integrated) receipt printer on which a receipt (or summary of a transaction) is printed for the customer's records. In order to accommodate transaction summaries of indefinite length, the receipt printer is typically a roll-paper printer (i.e., a printer that prints on a roll of paper, or paper roll) and cuts the printed portion from the roll of paper at the end of the printed transaction summary). It is to be understood, however, that the present invention is compatible with sheet printer, and other non-roll-paper printers.
(186) POS devices are typically networked within a POS system and communicate with a central server that keeps track of transactions for bookkeeping and inventory purposes, and may additionally provide information to the POS device, such as product prices (or updates to produce prices), coupons, promotional advertisements, product information (such as product description and/or availability), and other data. The central server may be part of a local area network and/or a wide area network, and may optionally be distributed across multiple servers. Conceivably, the central server may also be accessible via the Internet.
(187) Since POS system networks are comprised of specialized and computerized POS devices, they can be complicated and costly to purchase, setup, maintain, and upgrade. The cost and difficulty of implementing and maintaining POS systems is further increased by the use of different model POS devices (from different manufactures) and different model printers (from different manufactures) within the same POS system network. As it would be understood, the different POS devices may have different operating platforms (i.e., run on different operating systems, OS) with different capabilities, and the different model printers may have different driver requirements/capabilities for the different operating platforms.
(188) The following discussion illustrates how the present invention may reduce the cost and complexity of setting up, maintaining, and upgrading a POS system network; particularly one that combines different model POS devices and different model printers.
(189) In a preferred embodiment, a POS system is implemented over a network, and commercial transactions are managed via a web page application (i.e., a web page) maintained within a network server and accessible by remote web terminals functioning as POS devices to implement and record sales transactions. Alternatively, the web page may be maintained in the intelligent module, and the POS devices may access the web page from the intelligent module. In either case, each POS device accesses the web page via a web browser, and uses the web page to print to a printer. Preferably, commercial transactions are also entered and recorded via the web page.
(190) A printer, which is typically adjacent to a POS device, may be controlled by the network server or controlled by the POS device. In both cases, it is preferred that communication with the printer be conducted via the intelligent module, as is explained more fully below.
(191) Alternatively, the present invention may also be implemented without the use of any network server. In this case, the intelligent module may provide the web page to the POS device(s), and convey communication between the POS device(s) and the printer(s). This implementation does not preclude the POS device from being part of a computer network.
(192) In this manner, the operating platform of the POS device is not a limiting factor; all that is needed is that the POS device be capable of running a web browser, irrespective of its operating platform. Indeed, the POS device may be implemented using a simplified computing device having minimal computing power. For example, the POS device may be implemented as a budget computer tablet having basic computing and communications capabilities.
(193) With reference to
(194) In the present embodiment, web browser 33 is in communication with one or more printers, PrinterID_1 and PrinterID_2, via intelligent module device 37. Optionally, these printers may be POS printers (i.e., receipt printers) and may optionally print onto respective rolls of paper 39a and 39b.
(195) Preferably, intelligent module 37 communicates with web page 31 via at least one print application program interfaces, i.e., print API, labeled API_1 through API_3. For illustration purposes, print application program interfaces API_1 through API_3 are shown embedded within web page 31, and they provide an interface to respective print script applications, such as Print_Script_App_1 through Print_Script_App_3. If desired, the functionality of all print script applications may be combined and accessed via a single print API. Further preferably, the print script applications are Java script applications that provide various printer functions, as described below, and are accessible via at least one print API. API_1 through API_3 (and their respective print script applications Print_Script_App_1 through Print_Script_App_3) may be provided as part of a library of print APIs to web page developers to incorporate the present printing capabilities.
(196) API_1 through API_3 provide a print interface for web page 31, and print script applications Print_Script_App_1 through Print_Script_App_3 are designed to provide printing capabilities and/or to communicate with intelligent module 37. The print APIs and print script applications may be embedded together as a unit within web page 31, such as illustrated by API_1+Print_Script_App_1 and by API_2+Print_Script_App_2. In this case, both may be addressed under the common term of API or print API, and this API would thus handle both the interfacing with web page 31, the creation of a print document, and the sending of the print document to the intelligent module 37.
(197) As it may be understood by one versed in the art, print APIs may be instances of a specific software class (as defined in object oriented languages), and they may be created by means of a constructor (as defined in OOP languages). In one embodiment, a print API may include a constructor for initializing the API.
(198) In another embodiment, the print API and its corresponding print script application may be split such that the print API is embedded the within the web page 31, but its corresponding print script application is maintained separate within intelligent module 37. This is illustrated by API_3 being embedded within web page 31 while its corresponding printer script application, Print_Script_App_3, is maintained within intelligent module 37. In this manner, some of the computing resources needed by Print_Script_App3 may be offloaded from the device on which web browser 33 resides and transferred to intelligent module 37. In this case, API_3 would send all data necessary for defining a printed document to Print_Script_App3, which would then create a corresponding print document within intelligent module 37 and send the resultant print document to a specified printer. The separating of the print API from its corresponding print script application also permits the updating of the script application within the intelligent module 37 without altering the print API within the web browser. In this case, web developers may be provided with a library of print API for incorporation into their web pages, but the details of the implementation of the corresponding print script applications may be maintained in intelligent module 37 or in a network server and thus be kept hidden from the web developers.
(199) In a preferred embodiment, each print API communicates directly with intelligent module 37. Therefore, intelligent module 37 is configured to receive (i.e., be assigned) a network address, illustrated as IP_ADD_1. This network address may be a static address or a dynamically assigned address.
(200) Each print API is preferably provided with an address property element (i.e., address data field) configured to receive the network address of intelligent module 37, by which each print API may address its communication to intelligent module 37. If the network address of intelligent module 37 is static (i.e., fixed), the address property element within each API may be manually set. Alternatively if the network address of is dynamic, a network address resolution service may be used to determine the network address of intelligent module 37 and enter the resolved address in each print API's address property element. Further preferably, the address property element is configured to set a timeout period. This timeout period may indicate a maximum amount of time allotted for receiving an acknowledgement, or other response, from the intelligent module. Preferably, the print API includes a step, or process, for canceling a print job (or a submitted print request) in response to the timeout period elapsing.
(201) Further preferably, each printer is identifiable by name, or identification code (ID) or (network) address. For ease of discussion, both printer ID and/or printer network address are designated by reference characters PrinterID_1 and printerID_2. Further for ease of discussion, whenever printer ID is used, it is to be understood that printer network address may be substituted since the present invention envisions using a printer network address in place of printer IDs. Further preferably, the name, printer ID and/or printer address is provided to the print API's. The print API's may therefore designate a target printer by name, printer ID and/or printer network address to receive a printing request, or print document.
(202) In one embodiment, the print API's address property element is expanded to also receive the ID (or network address) of the target printer. For example, the address property element may be configured to set the device identification (the ID or network address) of the target printer, which designates it as the printer to which the document to be printed should be sent. The print API may further have a receive event element configured to obtain a response message from the printer. The response message may include a print result, an error code and/or a printer status. The error code or the printer status may indicate one of an automatically recoverable error or an unrecoverable error occurred. Thus, the print API may receive a response message from the printer via the intelligent module designated by the address property element. In this manner, communications between a target printer and a print API are conducted via the intelligent module specified in the address property element. Additionally, the address property element may be configured to set a timeout period. This timeout period may indicate the maximum amount of time allotted for receiving an acknowledgement, or other response, from the intelligent module or from the printer. Preferably, the print API includes a step, or process, for canceling a print job (or a submitted print request) for printing a document in the printer designated by the address property element in response to the timeout period elapsing.
(203) Alternatively, the print APIs may send a printing request to intelligent module 37 without designating a specific printer, and intelligent module 37 may select a printer based on proximity information to the device that issued to the printing request or by determining which printer is available (i.e., not busy). In this case, intelligent module 37 is preferably aware of the locations of the devices on which the web pages are running and the locations of the printers in order to select the printer closest to the device that issued the printing request. Further alternatively, once intelligent module 37 has selected a printer for a specific device that issues a print request, the selected printer preferably becomes assigned to that device and all future print requests from the same device are sent to the same selected printer.
(204) Since each print API embedded within web page 31 can directly communicate with intelligent module 37 by means of its address property element (which holds the network address of intelligent module 37), each print API may submit printing requests at any time without user intervention or without submitting a print request to the web browser 33 on which it resides. For example at a checkout station, a print API may submit for printing a description of each product item being summed for purchase, as the product item is identified (i.e., scanned) by the web browser and added to the overall transaction summary. Thus, web page 31 may generate a print document of any data (including newly generated data and/or portion(s) of a display screen), and submit the print document for printing at any desired time. For example, the API may generate parts of a print document in segments (i.e., at different times) and then combine and/or arrange the segments into a composite print document to be sent to the printers. Alternatively, since in the present embodiment the preferred printers are roll printers, the print API may send multiple segments to the printers for printing, and send an instruction for cutting the printed portion of the paper roll at the end of a printing session (i.e., at the end of a commercial transaction at a checkout station).
(205) In operation, a print script application (or the API itself if it is combined with its corresponding print script application as a single unit) includes a first method element (i.e., a first executable routine, or executable method) to define a print document by accumulating (i.e., adding) printer control instructions into a command buffer and then executing the accumulated printer control instructions. Preferably, the print script application (or API) further include a second method element (i.e., a second executable routine) configured to send the defined print document to intelligent module 37. A printed document may thus be created by executing the first and second method elements, in turn.
(206) In the present discussion, all or some of the recited software methods may be replaced by software objects, as defined in object oriented languages.
(207) Intelligent module 37 is preferably implemented as a data processing device (including, but not limited to: a control unit circuit and/or central processing unit; and/or volatile/non-volatile electronic memory; and/or data/control registers; and/or signal busses; and/or electronic communication interfaces; and/or lookup table(s)). Intelligent module 37 may be implemented as a stand-alone unit in its own physical encasement, or may alternately be incorporated into (or physically attached to) a printer, server, or other electronic device. In operation, Intelligent module 37 receives a print document from a print API embedded within web page 31, converts it (if necessary) into a suitable print document for a specified (or otherwise designated) printer, and sends it for printing to the designated printer. Optionally, intelligent module 37 may include printer drivers for each of the printers, and utilize the printer drivers to define the suitable print document. Alternatively, intelligent module 37 may receive a record of the command buffer from a print API, create a print document by executing the printer commands in the command buffer, and send the created print document to the appropriate printer. Still alternatively, the commands received from a print API may be general printing descriptions, such as formatting information and print content data, and the intelligent module may then determine the necessary printer commands to generate a print document that best resembles the general printing descriptions based on the capabilities of the designated printer, and then send generated print document to the designated printer.
(208) In the above discussion, the created print document may be an XML print document or a bitmap print document or other document description format known in the art.
(209) As illustrated, printers PrintID_1 and PrintID_2 may be POS printers that prints on paper rolls 39a and 39b, respectively. The printers may further have accessories such as a (fully or partially removable) cover 41, a drawer 43, a buzzer 45, and a paper cutter (or auto cutter) 47. These accessories are preferably controllable via the printer commands mentioned above, and relayed to the printers by intelligent module 37. Among the error codes or printer statuses that a target printer may send to a print API, as discussed above, may be an indication that the cover is open. Similarly, an error code or printer status may indicate that an error occurred in the auto cutter. The printer may also have a sensor that detects if paper is in the printer, and an error code or printer status may indicate if no paper is detected by the sensor. Alternatively, an error code or printer status may indicate if the document sent to intelligent module 37 contains a syntax error. Alternatively, an error code or printer status may indicate if a print API's target printer, as designated by the submitted printer ID, does not exist.
(210) As it would be understood PrintID_1 and PrintID_2 have communication ports for communicating with intelligent module 37. The error code or the printer status may indicate if an error is detected on the communication port. An error code or printer status may further indicate if the timeout period, mentioned above, elapses. Alternatively, the error code or printer status may indicate that printing operation is successfully completed. As mentioned above, the printer may be connected to a drawer by a connector, which may have at least one pin. In this case, the error code or the printer status may indicate the status of a predetermined pin of the connector.
(211) Alternatively, the error code or printer status may indicate that the printer is offline or waiting to be brought back online, or that no response was received from the printer.
(212) PrintID_1 and PrintID_2 may further have a switch for feeding paper 39a and 39b, and the error code or the printer status may indicate when paper is being fed by operation of the switch. The error code or printer status may further indicate when buzzer 45 is turned on (i.e., actuated). The printers or intelligent module 37 may have a spooler configured to spool a print job for printing a document, and the error code or the printer status may indicate if the spooler has stopped.
(213) In the embodiment of
(214)
(215) Optionally, printer PrinterID_2 may include non-volatile memory 59. In one embodiment, multiple predefined images, such as logos, may be stored in memory 59 and identified/addressed by ID code, such as LOGO_1 through LOGO_3.
(216) As is explained above, the print API defines a command buffer in which printer control commands are accumulated. Various types of control commands may be accumulated in the command buffer.
(217) For example with reference to
(218) Another command may be a paper feed command for adding to the command buffer one or more instructions for feeding the paper in the printer.
(219) Still another command may be an image command for adding a raster image for printing. As it is known in the art, a raster image is typically a rectangular area that defines an image as viewed on a display medium one point at a time, such as bitmap, and defines an image file. Preferably, the print API includes a half tone property element, and a color image rendered in the web application, is converted into the raster image data for printing, by the image command, according to a setting of the halftone property element. Preferably, the halftone property element specifies at least one of a dithering, error diffusion, and/or threshold for converting the color image into the raster image data. The print API may also include a brightness property element, which may specify a gamma value in the range 0.1-10.0 for correcting the brightness of the raster image data. In this case, the image command may convert the color image into the raster image data for printing according to a setting of the brightness property element.
(220) As is illustrated in
(221) Another command may be a barcode command for adding an instruction of printing a barcode, to the command buffer. Preferably, multiple barcode types are supported, and the barcode command includes a barcode parameter that specifies at least the barcode type desired, the width and height of the barcode, and/or data to be converted (i.e., encoded) into the selected barcode type.
(222) Another command may be a symbol command for adding an instruction of printing a two-dimensional symbol, to the command buffer. The symbol command may include a symbol parameter that specifies at least one of a type of the two-dimensional symbol, an error correction level of the two-dimensional symbol, or data to be converted to the two-dimensional symbol.
(223) Preferably, another command is a first line command for adding an instruction of drawing a first line to the command buffer. The first line command may include a first line parameter that specifies a start position and an end position of the first line. The present invention may also include a second line command for adding to the command buffer an instruction of starting the drawing of a second line of indefinite length, and providing a second line parameter that specifies a start position of the second line but provides no line parameter for specifying any end position of the second line. In this case, it is preferred that the present invention include a third line command for adding an instruction of finishing (i.e., stopping) the drawing of the second line started by the second line command. The third line command may include a third line parameter that specifies an end position for the second line.
(224) Still another command may be a page mode command for adding to the command buffer an instruction of switching to a page mode, and adding a print area in the page mode. That is, the page mode may be a print mode wherein the print area is defined, data is laid out in the print area, and the print area is printed in a batch operation. The page mode may further include at least one coordinate specifying a desired placement location for the print area. A second page mode command may add instruction(s) for ending the page mode initiated by the first page mode command. A still third page mode command may at least one setting (i.e., setting parameter) to the page mode defined by the first page mode command. The third page mode command may include a third page parameter that specifies a direction for the printing in the page mode, or coordinate(s) specifying a starting position for the printing in the page mode. A fourth page mode command may further add instruction(s) for drawing a predefined shape, such as a line or a rectangle, in the page mode defined by the first page mode command. The forth page command may include coordinates specifying a start position and an end position of the predefined shape, i.e., the line or the rectangle, within the page mode. The forth page command may further include a forth page parameter that specifies a type choice for the shape. For example, the forth page parameter may specify a line type or a rectangle type.
(225) Another command maybe a paper cut command for adding to the command buffer an instruction for cutting the paper, i.e., the printing medium, such as by means of paper cutter 47. The paper cut command may include a paper cut parameter specifying either one of cutting the paper without first feeding the paper or cutting the paper after feeding the paper.
(226) As is shown
(227) As shown in
(228) A specific example of the present invention as implemented in a POS system is as follows.
(229)
(230) ePOS-Print provides functionality to control POS printers in a multi-platform environment. Using ePOS-Print, data can be directly printed from Web browsers on personal computers, smart phones, or tablet computers to TM intelligent printers (i.e., the combination of one or more intelligent modules and one or more printers).
(231) In addition, print images rendered in HTML5 Canvas can be printed. As it is known in the art, HTML5 Canvas is a container for graphics, and provides a way to draw graphics via scripting. ePOS-Print provides the API (equivalent to print API in the present discussion) for print commands. When a print document (Request) is sent via HTTP from the host (i.e., the device or terminal on which web browser 73 is running) to an ePOS-Print Service of a TM intelligent printer 75, ePOS-Print processes the printing of that document and returns a response document (i.e., a response).
(232) The present implementation includes many features. For example, as long as the present system is in a network environment, a terminal with an HTML5-supported web browser can perform printing from anywhere. Installation of printer drivers and plug-ins are not required. No PCs or servers are required for printing. The present system allows printing from public and private network clouds. The present invention further allows printing in any languages supported by web browsers, in general. The present invention automatically checks the status of the TM printer before printing. There is no need for checking the status of the TM printer in advance. The present system does not respond to a printer's function to automatically send its status (such as an AutoStatusBack function). Instead, the present system is capable of sending an empty print command and checking (i.e., determining) the status of the TM printer based on the result of the command transmission. Nonetheless, to change the printer settings, utility programs dedicated to each printer, or other utility programs, may be used. Thus, the present invention allows printing by TM printers via TM intelligent printers. The present invention thus may provide both an ePOS-Print API and an ePOS-Print-Canvas API. As is discussed above, the present invention further allows device fonts to be used for printing, allows barcode printing, allows printing of images rendered in HTML5 Canvas and allows TrueType fonts to be used for printing. Preferably, the present invention allows device fonts to be used for printing and allows barcode printing. Further preferably, the ePOS-Print-Canvas API allows printing of images rendered in HTML5 Canvas and allows TrueType fonts to be used for printing.
(233)
(234)
(235)
(236) The ePOS-Print API may provide multiple functions. For example, it can provide print setting functions, such as alignment (for example text alignment), line feed space, text rotation, and page mode. It can also provide multiple character data settings (for example, text characters), such as language, font (device font), double-sizing, scale, smoothing, and print position. It can also provide character style settings, such as inversion of black and white, underline, and bold. It may further include printer operation controls such as paper feed setting (in dots count or in line count). The ePOS-Print API preferably also provides image printing (i.e., raster image and NV graphics), barcode printing, and two dimensional symbol printing. It may further provide a ruled line setting, drawer kick function, buzzer function, ESC/POS command transmission, response document acquisition (print result, printer status and/or system error status).
(237) The ePOS-Print-Canvas API may also provide multiple functions. For example, it may provide printing of images (raster images) rendered in HTML5 Canvas, feed and cut functions, and response document acquisition (such as print result, printer status, and/or system error status).
(238) The preferred web browser is therefore a browser that supports HTML5. Examples of web browsers that support HTML5 are Windows Internet Explorer 9 or later, Mozilla Firefox 3.6 or later, Google Chrome 7 or later, Safari in iOS4.0 or later, and the standard browser in Android 2.2 or later.
(239) A system construction example in accord with the present invention is shown in
(240)
(241) In a preferred embodiment of the present invention, some restrictions may be imposed. For example, a printer's drawer and buzzer may not be used together. Naturally, the buzzer function cannot be used if the printer does not have a buzzer.
(242) The present invention may also respect restrictions provided by specific web browsers. For example, Internet Explorer 9 does not allow printing to the printer to be performed from security-protected Web pages (which are typically identified by the address header HTTPS).
(243)
(244)
(245)
(246)
(247)
(248)
(249)
(250)
(251)
(252) Execution of the above configuration and registration sequence will result in the sample program screen of
(253) Next is discussed a guide for programming using ePOS print, i.e., using print APIs in accord with the present invention.
(254) Preferably, there are two types of print modes: standard mode and page mode. In standard mode, characters are printed line by line. The line feed space is adjusted based on the font size and the height of images, i.e., barcodes, etc. The standard mode is suitable for printing receipts, or other types of printing that require the paper length to change according to the print space.
(255) In page mode, a print area is set (i.e., defined), data is laid out in it, and the data is printed in a batch operation. For example, characters, images, and barcodes may be laid out in the print area by position coordinates, the resultant print area is then printed in a batch operation.
(256)
(257) The next step 143 is to create the document that is to be printed. A print document may be created using an ePOS-Print Builder object. For example, an ePOS-Print Builder object is created using the constructor for it, and the print document is created using the object's methods. The print document may be acquired using a toString method, or other print API methods/functions, as listed below.
(258) To create a text print document, one stores the font settings into the command buffer using text methods and then creates the print document.
(259)
(260) Another method for creating a print document, as illustrated in step 143 of
(261) Returning to
(262) As shown in
(263)
(264) The next step 153 in
(265) The TM intelligent printer (i.e., the intelligent module) receives the transmission, as indicated by step 157.
(266) As is mentioned above, the ePOS-Print API provides many methods for creating a print document.
(267) As it would be understood by one versed in the art, a new ePOS-Print Builder object is created and initialized by means of a contractor, an the object can then be used to create a print document for printing control commands that specify strings or graphics to be printed, paper cut, etc. Preferably, this constructor follows the following syntax: ePOSBuilder( ).
(268) The syntax for adding text alignment settings to the command buffer may follow syntax: addTextAlign(align), where align specifies the type of alignment.
(269) The method to add a line feed space setting to the command buffer preferably follows the syntax: addTextLineSpace(linespc). Parameter linespc specifies the line feed space (in dots), and preferably an integer in the range from 0 to 255.
(270) The method to add a text rotation setting to the command buffer preferably follows the following syntax: addTextRotate(rotate), where rotate is a Boolean that specifies whether to rotate text.
(271) The method to add the printing of text to the command buffer preferably follows the syntax: addText(data), where the parameter data is the character string to be printed. Nonprintable characters, such as horizontal tab and line feed may use escape sequences, as illustrated in
(272) The method to add the language setting to the command buffer preferably follows the syntax: addTextLang(lang), where parameter lang is a string that specifies the target language.
(273) The method to add the text font setting to the command buffer preferably follows syntax: addTextFont(font), wherein parameter font is a string that specifies a desired font.
(274) The method to add the smoothing setting to the command buffer preferably follows syntax: addTextSmooth(smooth), where parameter smooth is a Boolean that specifies whether to enable smoothing.
(275) The method to add the double-sized text setting to the command buffer preferably follows syntax: addTextDouble(dw, dh), where dw is an optional Boolean parameter that specifies the double-sized width and dh is an optional Boolean parameter that specifies the double-sized height.
(276) The method to add the text scale setting to the command buffer preferably follows syntax: addTextSize(width, height), where parameter width is an optional number parameter that specifies the horizontal scale of text and parameter height is an optional number parameter specifies the vertical scale of text.
(277) The method to add the text style setting to the command buffer preferably follows syntax: addTextStyle(reverse, ul, em, color), where reverse is an optional Boolean parameter that specifies whether to inversion the black and white for text, ul is an optional Boolean parameter that specifies an underline style, em is an optional Boolean parameter that specifies a bold style, and color is an optional string parameter that specifies the color.
(278) The method to add the horizontal print start position of text to the command buffer preferably follows syntax: addTextPosition(x), where x is a number parameter that specifies the horizontal print start position (in dots) and is an integer in the range from 0 to 65535.
(279) The method to add paper feeding in dots to the command buffer preferably follows syntax: addFeedUnit(unit), where unit is a number parameter that specifies the paper feed space (in dots) and is an integer in the range from 0 to 255.
(280) The method to add paper feeding in lines to the command buffer preferably follows syntax: addFeedLine(line), where line is an integer number parameter that specifies the paper feed space (in lines) and in the range from 0 to 255.
(281) The method to add a line feed to the command buffer preferably follows syntax: addFeed( ).
(282) The addImage method adds raster image printing to the command buffer, and prints graphics rendered in HTML5-Canvas. The method further converts the specified range in a RGBA full-color image of HTML5-Canvas into raster image data according to the settings of the halftone and brightness properties. It is assumed that one pixel in an image equals to one printer dot, and when an image contains any transparent color, the background color of the image is assumed to be white. Preferably it follows syntax: addImage(context, x, y, width, height, color, mode), where context is context parameter that specifies the 2D context of HTML5-Canvas, x is an integer number in the range from 0 to 65535 and specifies the horizontal start position in the print area, y is an integer number in the range from 0 to 65535 and specifies the vertical start position in the print area, width is an integer number in the range from 0 to 65535 and specifies the width of the print area, height is an integer number in the range from 0 to 65535 and specifies height of the print area, color is an optional string parameter that specifies color (
(283) The method to add NV logo printing to the command buffer preferably follows syntax addLogo(key1, key2). This method prints a logo that is already registered in the NV memory of a printer. Parameter key1 is a number that specifies a first key code 1 of an NV logo and is preferably an integer in the range from 0 to 255. Parameter key2 is a number that specifies a second key code 2 of an NV logo and is preferably an integer in the range from 0 to 255.
(284) The method to add barcode printing to the command buffer preferably follows syntax: addBarcode(data, type, hri, font, width, height). Parameter data is string that specifies the barcode data as a string. Parameter type is a string that specifies the barcode type.
(285) The method to add two-dimensional symbol printing to the command buffer preferably follows syntax: addSymbol(data, type, level, width, height, size). Parameter data is preferably a string that specifies two-dimensional (2D) symbol data as a character string.
(286) The method to add horizontal line printing to the command buffer to draw horizontal lines preferably follows syntax addHLine(x1, x2, style), where parameter x1 is an integer number in the range from 0 to 65535 and specifies the start position of the horizontal line (in dots), parameter x2 is an integer number in the range from 0 to 65535 and specifies the end position of the horizontal line (in dots), and parameter style is a string that specifies the line type.
(287) The method to add the beginning of a vertical line to the command buffer (i.e., to starts the drawing of vertical lines) follows syntax addVLineBegin(x, style), where parameter x is an integer number in the range from 0 to 65535 and specifies the start position of the vertical line (in dots), and parameter style is an optional string that specifies the line type.
(288) The method to add the end of a vertical line to the command buffer (i.e., to finish drawing vertical lines) follows syntax addVLineEnd(x, style), where parameter x is an integer number in the range from 0 to 65535 and specifies the end position of the vertical line (in dots), and parameter style is an optional string that specifies the type of line one wants to finish drawing.
(289) The method to add the switching to page mode to the command buffer (i.e., to start the page mode process) follows syntax addPageBegin( ). The method to add the end of page mode to the command buffer (i.e., to end the page mode process) follows syntax addPageEnd( ).
(290) Method addPageArea(x, y, width, height) adds the print area in page mode to the command buffer to specify the print area in page mode (coordinates). After this API function, a print data API function (such as the addText method) should be specified. Parameter x is an integer in the range from 0 to 65535 and specifies the origin of the horizontal axis (in dots), where 0 is the left end of the printer's printable area. Parameter y is an integer in the range from 0 to 65535 and specifies the origin of the vertical axis (in dots), where 0 is the position in which no paper feed has been performed. Parameter width is an integer number from 0 to 65535 that specifies the width of the print area (in dots).
(291) The method to add the page mode print direction setting to the command buffer (i.e., to specify the print direction in page mode) follows syntax addPageDirection(dir). This function may be omitted if rotation is not required. Parameter dir is a string that specifies the print direction in page mode.
(292) The method to add the page mode print-position-set area to the command buffer (i.e., to specify the print start position (coordinates) in the area specified by the addPageArea method) has syntax addPagePosition(x, y). Parameter x is an integer number from 0 to 65535 that specifies the horizontal print position (in dots). Parameter y is an integer number from 0 to 65535 that specifies the vertical print position (in dots).
(293) The method to add line drawing in page mode to the command buffer (i.e., draws a line in page mode) follows syntax addPageLine(x1, y1, x2, y2, style). Parameter x1 is an integer number from 0 to 65535 that specifies the horizontal start position of the line (in dots). Parameter y1 is an integer number from 0 to 65535 that specifies the vertical start position of the line (in dots). Parameter x2 is an integer number from 0 to 65535 that specifies the horizontal end position of the line (in dots). Parameter y2 is an integer number from 0 to 65535 that specifies the vertical end position of the line (in dots). Parameter style is a string that specifies the line type.
(294) The method to add a rectangle drawing in page mode to the command buffer (i.e., to draw a rectangle in page mode) follows syntax addPageRectangle(x1, y1, x2, y2, style). Parameter x1 is an integer number from 0 to 65535 and specifies the horizontal start position of the line (in dots). Parameter y1 is an integer number from 0 to 65535 and specifies the vertical start position of the line (in dots). Parameter x2 is an integer number from 0 to 65535 and specifies the horizontal end position of the line (in dots). Parameter y2 is an integer number from 0 to 65535 and specifies the vertical end position of the line (in dots). Parameter style is a string that specifies the line type.
(295) The method to add paper cut to the command buffer (i.e., to set/actuate) paper cut) follows syntax addCut(type), where parameter type is a string that specifies the paper cut type.
(296) The method to add a drawer kick to the command buffer has syntax addPulse(drawer, time). Parameter drawer is a string that specifies the drawer kick connector.
(297) The method to add the turning ON of the buzzer to the command buffer (i.e., to set the buzzer) follows syntax addSound(pattern, repeat). Parameter pattern is an optional string that specifies the buzzer pattern.
(298) The method to add commands to the command buffer (i.e., to send ESC/POS commands) has syntax addCommand(data), where data is an optional string that specifies ESC/POS command as a character string.
(299) The method to obtain a print document generated by an ePOS-Print Builder object has syntax toString( ).
(300) A halftone property is implemented by means of a halftone processing method, whose object type is string.
(301) Brightness correction may be set by setting a gamma value. A gamma value in the range 0.1 to 10.0 is specified (i.e., available) for the brightness correction value.
(302) Commands, which are usually added by methods of the ePOS-Print Builder object, can be operated directly from this property for addition or deletion.
(303) The constructor for an ePOS-Print object creates a new ePOS-Print object and initializes it. The method to send a print document created using an ePOS-Print Builder object to control the printer and monitor the transmission result or the communication status has syntax ePOSPrint(address), where address is a optional string that specifies the URL (i.e., network address) of the printer to which a print document is sent.
(304) The send method sends a print document created using an ePOS-Print Builder object. It has syntax send(request), where request is a string that specifies print document.
(305) The open method enables status event operation. It sends the status of the printer specified by the address property using an event, and updates the status at the interval specified by an interval property. It has the syntax open( ).
(306) The close( ) method disables status event operation.
(307) The address property is used to specify URL of the printer to be used for printing.
(308) The enabled property is a Boolean value that retains the enabled/disabled setting for status event operation. The enabled/disabled setting for status event operation is retained using a logical value. This is read-only. The default value is false.
(309) The interval property specifies the interval of upgrading the status. The interval of upgrading the status is specified in milliseconds. It has a default value of 3000 ms (three seconds), and a minimum value of 1000 ms (one second or longer). When an invalid value is specified, it is assumed to be 3000 ms.
(310) The status property provides the status of a printer. This is the status last obtained from the printer, and is read-only.
(311) An onreceive event is a property that registers the callback function and obtains a response message receipt event. It has syntax: Function(response). The parameter of the callback function include: a response as a parameter, response message as name and object as object type.
(312) The onerror event property registers the callback function and obtains a communication error event. It has syntax: Function (error).
(313) The onstatuschange event registers a callback function to obtain a status change event. It has syntax: Function (status).
(314) The ononline event registers a callback function to obtain an online event. It has syntax: Function ( )
(315) The onoffline event registers a callback function to obtain an offline event. Its syntax is also Function ( )
(316) The onpoweroff event registers a callback function to obtain a non-response event. Its syntax is also Function ( )
(317) The oncoverok event registers a callback function to obtain a cover close event. Its syntax is also Function ( )
(318) The oncoveropen event registers a callback function to obtain a cover open event. Its syntax is also Function ( ).
(319) The onpaperok event registers a callback function to obtain a paper remaining event. Its syntax is also Function ( )
(320) The onpapernearend event registers a callback function to obtain a paper near end event. Its syntax is also Function ( )
(321) The onpaperend event registers a callback function to obtain a paper end event. Its syntax is also Function ( ).
(322) The ondrawerclosed event registers a callback function to obtain a drawer close event. Its syntax is also Function ( )
(323) The ondraweropen event registers a callback function to obtain a drawer open event. Its syntax is also Function ( ).
(324) The following a discussion of some ePOS-Print-Canvas API functions.
(325) The ePOS-Print-Canvas API object prints a print image rendered in HTML5-Canvas and monitors the print result or the communication status. A constructor for an ePOS-Print Canvas API object is used to create a new ePOS-Print Canvas API object and initializes it. The syntax is CanvasPrint(address), where address is an optional string that specifies an address property (URL of printer to be used for printing).
(326) The print method prints an image rendered in HTML5-Canvas. It converts a specified range in an RGBA full-color image of HTML5-Canvas into a raster image data according to the settings of the halftone and brightness properties. One pixel in an image equals to one printer dot. When an image contains any transparent color, the background color of the image is assumed to be white. The print method has syntax: print(canvas, cut, mode). Parameter canvas specifies the HTML5-Canvas object to be printed. Parameter cut is an optional Boolean that sets whether to cut paper.
(327) The open method Enables status event operation. It sends the status of the printer specified by the address property using an event, and updates the status at an interval specified by an interval property. It has syntax open( ).
(328) The close method disables status event operation. It has syntax: close( ).
(329) The address property specifies the URL of the printer to be used for printing.
(330) The enabled property retains the enabled/disabled setting for status event operation. It is a Boolean type, and the enabled/disabled setting for status event operation is retained using the logical Boolean value. This is read-only, and the default value is false.
(331) The interval property specifies the interval of upgrading the status. The interval of upgrading the status is specified in milliseconds. The default value is 3000 ms (three seconds), and it has a minimum value of 1000 ms (one second or longer). When an invalid value is specified, it is assumed to be 3000 ms, by default.
(332) The status property provides the status of the printer. This is the status last obtained from the printer. It is read-only, and has a default value of 0.
(333) The halftone processing method specifies the halftone property applied to monochrome (two-tone) printing. The default value is HALFTONE_DITHER.
(334) The brightness property is set using a gamma value. More specifically, a gamma value in the range 0.1 to 10.0 is specified as a brightness correction value. The default value is 1.0.
(335) The onreceive event is a property that registers the callback function and obtains a response message receipt event. It has syntax: Function(response). The parameter of the callback function include: a response as a parameter, response message as name and object as object type.
(336) The onerror event property registers the callback function and obtains a communication error event. It has syntax: Function (error).
(337) The onstatuschange event registers a callback function to obtain a status change event. It has syntax: Function (status).
(338) The ononline event registers a callback function to obtain an online event. It has syntax: Function ( ).
(339) The onoffline event registers a callback function to obtain an offline event. Its syntax is also Function ( )
(340) The onpoweroff event registers a callback function to obtain a non-response event. Its syntax is also Function ( )
(341) The oncoverok event registers a callback function to obtain a cover close event. Its syntax is also Function ( )
(342) The oncoveropen event registers a callback function to obtain a cover open event. Its syntax is also Function ( ).
(343) The onpaperok event registers a callback function to obtain a paper remaining event. Its syntax is also Function ( )
(344) The onpapernearend event registers a callback function to obtain a paper near end event. Its syntax is also Function ( )
(345) The onpaperend event registers a callback function to obtain a paper end event. Its syntax is also Function ( ).
(346) The ondrawerclosed event registers a callback function to obtain a drawer close event. Its syntax is also Function ( ).
(347) The ondraweropen event registers a callback function to obtain a drawer open event. Its syntax is also Function ( )
(348) Preferably, the present invention further incorporates an ePOS-Print editor. The following discussion describes how to use an ePOS-Print editor in accord with the present invention. This tool allows one to create an ePOS-Print API, and sample code at will. The following ePOS-print editor may be used to develop web applications in accord with the present invention.
(349) Preferably, the present ePOS Print editor operates within a web browser environment. It is preferred that the web browser support HTML5-Canvas in order to make use of all available print API method/objects. It is therefore preferred that the web browser is selected from among the following (or similar) web browsers: Windows Internet Explorer 9 or later, Mozilla Firefox 13 or later, Google Chrome 19 or later, Apple Safari 5.1.7 or later, and iPad Safari in iOS 5.1 or later.
(350) If desired, the ePOS Print editor is maintained in (i.e., stored and accessed from) a server, or an intelligent module (as described above), or a TM intelligent printer. For example to access the main page (i.e., index.html, or home page) of present ePOS Print editor on an IP network, one may enter in a web browser the editor's network address such as: http://[(Web Server IP address), or (Intelligent module IP address), or (TM intelligent printer IP address)]/editor/index.html. Thus, if one has access to an intelligent module or TM intelligent printer, either can function to provide text editing (more specifically ePOS print editing) to create a web page application with embedded print API, as described above.
(351) Using the ePOS Print editor, one can describe the functionality desired for a customized ePOS-Print API or customized ePOS-Print-Canvas by using a graphics user interface, i.e., GUI, to select the functions desired, and let the editor generate the necessary script code automatically. The editor may also be used by using the GUI to draw or depict in graphical form a stencil or layout of how a printout should look, and again the editor may generate the necessary script code to achieve the look and function of the desired result.
(352)
(353) Main Edit area 167 provides a selection of different edit function choices (i.e., selectable via function icons or software buttons) that may be programmed into a print API in accord with the present invention. These functions are further sub-categorized.
(354) For example, a first sub-category 169 provides the most common operations that most print document may use. This first sub-category is labeled Common, and includes functions such as Align, Linespc and Rotate. The Align function specifies a desired alignment for text and/or graphics (such as left-align, center-align, right-align, and customized-align). The Linespc function permits one to specify desired line spacing in dots or in units of measure, such as inches and/or centimeters. The Rotate function specifies a desired rotation orientation for text and/or graphics. The Rotate functions may be divided into fixed choices, such as 90, 180 or 270 or may be user specified within a range from 0 to 360.
(355) A second sub-category 171 provides text-related functions and is labeled Text. The Text sub-category includes functions such as Lang, Font, Position, Smooth, Size, Double, Style and Text. The Lang function serves to specify a specific language for printouts. For example one may select from among Japanese, English, Spanish, German, etc. The Font function specifies a specific font from a library of installed font options. The Position function specifies how far from the left border (or right border or top border or bottom border [if printing on fixed-sized sheets of paper]) text printing should start. As it is known, text may take on a pixilated look depending on the size of a specific font choice. The Smooth function removes this jagged pixilated look and provides smooth edges to text. The Size function specifies a size for specific text. The Double function provides a quick way of specifying that specific text that should be printed in double size. The Style function specifies a specific text style, i.e., underline, bold, italics, color-invert, etc. The Text function specifies regions for printing specified text and/or specifies the text to be printed.
(356) The third sub-category 173 provides paper-feed-related functions and is labeled Paper Feed. The Paper-Feed sub-category includes functions such as By Unit, By Line, and LF. The By Unit function specifies an amount of paper feeding by unit of measure, such as dots, inches, and/or centimeters. The By Line function specifies an amount of paper feeding by number of lines (i.e., in per line increments). The LF function provides a new line (i.e., increments by one line in a manner similar to the carriage-return function typing).
(357) The fourth sub-category 175 provides image related functions and is labeled Image. The Image sub-category includes functions such as Image and NV Logo. The Image function provides for the insertion of user-provided images, and may also provide functions for a user to create (i.e., define) a new image using drawing software tools including basic shapes, such a lines, circles, rectangles, etc. The NV Logo function relies on addressable images already stored in a printer, and calls up a selected one of those images by address, or local ID. That is, the address of NV Logo images may be an ID code that identifies a specific stored image within a local (i.e., internal) memory space of (preferably) non-volatile memory within a printer. Typically, NV Logo images are images of company logos, but they are not restricted to logos alone.
(358) The fifth sub-category 177 provides bar code related functions and is labeled Bar Code. The Bar Code sub-category includes functions such as Barcode and Symbol. The Barcode function encodes linear barcodes (of user-specified type). That is, a user may provide information to be encoded, and select the Barcode function to generate a linear barcode that encodes the provided information. The Barcode function may further include options such as size and position of a defined linear barcode. The Symbol function encodes matrix (i.e., 2-dimensional) barcodes of a specific type, such as a QR Code. Again, the user may provide information (text and/or graphic) to be encoded, and select the Symbol function to generate a matrix barcode that encodes the provided information. The Symbol function may further include options such as size and position of a defined matrix barcode.
(359) The sixth sub-category 179 provides page-mode related functions and is labeled Page Mode. The Page Mode sub-category includes functions such as Start, Area, Direction, Position, and End. The Start function may specify the beginning position of a page mode area, and the End function may specify the ending position of the page mode area. The Position function may specify a position within a printing area where the page mode printing area should be located. The Area function may specify a specify area (i.e., 2-dimensional size) for the page mode area. Finally, the Direction function may specify an orientation for the depicted contents of the page mode area. For example, if the page mode contains text arranged horizontally, the Direction function may be used to print the same text along a vertical direction.
(360) A seventh sub-category 181 may group together all remaining functions not included in the first through sixth sub-categories, and is labeled Other. In the present example, the Other sub-category includes functions such as Cut, Drawer, Buzzer, and Cmd. The Cmd function specifies commands to be sent to a printer. Assuming that the printer is a POS printer having a paper cutter, drawer and buzzer, the Cut command issues a command to cut the print medium (i.e., paper) on which the printer prints, the drawer option inserts a command to kick open the printer's drawer (may individually identify specific drawer latch connectors to be actuated), and the buzzer defines a command for the printer to actuate its buzzer in a specific buzzer pattern for a specified duration and a specified number of repeated buzzing operations.
(361)
(362)
(363) Selecting Preview tab 165b, as shown in
(364) If a printer is connected, then an actual printing may be made to test the code by selecting Print tab 165e.
(365)
(366) In a preferred embodiment of present invention, selecting API tab 165c, as shown in
(367) While the invention has been described in conjunction with several specific embodiments, it is evident to those skilled in the art that many further alternatives, modifications and variations will be apparent in light of the foregoing description. Thus, the invention described herein is intended to embrace all such alternatives, modifications, applications and variations as may fall within the spirit and scope of the appended claims.