# Patent

## Title
Client device using a markup language to control a periphery device via a point-of-sale printer

## Abstract

A device control system has a terminal 3 with an application 31, and a printer 5 that controls a device. The terminal 3 sends a request written in XML generated by the application 31. The printer 5 receives the XML request, the terminal 3 sends an XML response, and if the terminal 3 requested control of the device in the XML request, controls the device.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation of, and claims priority under 35 U.S.C. §120 on, application Ser. No. 14/140,301, filed Dec. 24, 2013, which claims priority under 35 U.S.C. §119(e) on provisional application No. 61/748,232, filed Jan. 2, 2013. The content of each such related application is incorporated by reference herein in its entirety.


TECHNICAL FIELD
The present invention relates to a device control system that controls a device, and a control method of the device control system.
BACKGROUND
A device (such as a computer) used as a controller for controlling devices is conventionally part of a system that controls devices such as a keyboard and barcode scanner by means of a terminal connected to a network.
CITATION LIST
Patent Literature
[PTL 1] JP-A-2004-152256
SUMMARY OF INVENTION
Technical Problem
However, there is also a need to use devices such as above by means of a simple configuration.
The present invention is directed to the foregoing problem, and an object of the invention is to provide a device control system, a terminal, and a control method of a device control system that can control devices by a terminal connected to a network.
Solution to Problem
To achieve the foregoing object, a device control system according to the invention has a device configured to input or output data; a terminal configured to run an application, to send a request in markup language and to receive a response in markup language; and a device control device configured to connect to the device, to control the device based on the markup language request, and to send the markup language response.
The invention enables controlling devices connected to the device control device by a terminal connected to a network. The terminal can be any device that can run an application that generates data written in XML. Because XML is highly versatile, many different devices can be used as the terminal. Developing applications for the terminal is also simple.
In addition, the response includes data denoting the result of controlling the device.
The application also sends to the device control device the request including an establish communication message requesting establishing a communication link to the device control device; and when the request including the establish communication message is received, the device control device sends to the application the response including a response message to the establish communication message contained in the request.
The application also establishes a communication link with the device control device based on a response message to the establish communication message contained in the response sent by the device control device.
After the communication link is established, the application also sends to the device control device the request including an open message to open communication to the device connected to the device control device to the device control device.
When the request containing the open message is received, the device control device sends to the application the response including a response message to the open message contained in the request.
The application also receives the response containing a response message to the open message sent by the device control device, and based on a response message to the open message becomes able to communicate with the device.
After communication with the device is enabled, the application also sends to the device control device the request including a close message to close communication with the device.
The device control device also receives the request containing the close message, and sends to the application the response containing a response message to the close message.
In addition, the application receives the response containing a response message to the close message sent by the device control device, and closes communication with the device based on a response message to the close message.
Another aspect of the invention is a control method of a device control system including a device configured to input or output data, a terminal configured to run an application, and a device control device configured to connect to the device, comprising: sending a markup language request generated by the application to the device control device; and receiving the request by the device control device; generating a response in the markup language; and sending the generated response to the terminal.
The control method of a device control system also includes, sending information contained in the request to the device by the device control device; executing a process based on information contained in the request by the device, and sending a result processed based on information contained in the request to the device control device; and sending to the terminal the response including a result processed based on information contained in the request sent by the device.
The control method of a device control system also includes the application sending to the device control device the request including an establish communication message requesting establishing a communication link to the device control device; and when the request including the establish communication message is received, the device control device sending to the application the response including a response message to the establish communication message contained in the request.
In addition, the application establishes a communication link with the device control device based on a response message to the establish communication message contained in the response sent by the device control device.
In addition, after the communication link is established, the application sends to the device control device the request including an open message to open communication to the device connected to the device control device to the device control device.
In addition, when the request containing the open message is received, the device control device sends to the application the response including a response message to the open message contained in the request.
In addition, the application receives the response containing a response message to the open message sent by the device control device; and based on a response message to the open message becomes able to communicate with the device.
In addition, the application sends to the device control device the request including a close message to close communication with the device when stopping the application after communication between the application and the device is enabled.
In addition, the device control device receives the request containing the close message, and sends to the application the response containing a response message to the close message.
In addition, the application receives the response containing a response message to the close message sent by the device control device, and closes communication with the device based on a response message to the close message.
Objects of the present invention are also met in a printer for a point-of-sale (POS) system. The printer includes: a connector configured to connect to a device responsive to device-control commands; a communication interface configured to communicate with a terminal, to receive a markup language request from the terminal, and to send a markup language response to the terminal; a controller configured to interpret the markup language request received from the terminal, and to control the device using appropriate device-control commands to execute the interpreted markup language request, the printer being further configured to encode any response from the device as a markup language response and to send the markup language response to the terminal; wherein the device-control commands are not a markup language.
Preferably, the markup language response includes data denoting a result of device control.
Additionally, the printer may also receive, from the terminal, an establish communication markup language request to establishment a communication link with the printer. In this case, the printer may send, to the terminal, a markup language response to the establish communication markup language request.
Further preferably, in response to the printer receiving from the terminal an open markup language request to open communication with the device connected to the printer, the printer sends to the terminal a markup language response to the open markup language request indicating whether a communication link with the device is established.
Furthermore, in response to the printer receiving from the terminal a close markup language request to close communication with the device, the printer sends to the terminal a markup language response to the close markup language request indicating whether communication with the device is closed.
In the above, the communication interface is preferably a computer network interface.



BRIEF DESCRIPTION OF DRAWINGS
FIG. 1 illustrates a device control system according to a preferred embodiment of the invention.
FIG. 2 shows the functional configuration of the device control system.
FIG. 3A shows a list of key codes that can be acquired from a keyboard.
FIG. 3B shows a list of key codes that can be acquired from a keyboard.
FIG. 4 shows an example of device connections to an intelligent printer.
FIG. 5 is an external oblique view of an intelligent printer.
FIG. 6 shows a connector panel.
FIG. 7 shows an example of a wireless LAN unit connection.
FIG. 8 shows the work flow of building a system environment.
FIG. 9 shows a method of registering a device control script.
FIG. 10 shows a method of registering a controlled device.
FIG. 11 shows a list of the types of registered devices.
FIG. 12 illustrates registration of a device.
FIG. 13 illustrates registration of a device.
FIG. 14 illustrates registration of a device.
FIG. 15 illustrates registration of a device.
FIG. 16 illustrates registration of a device.
FIG. 17 illustrates the basic programming sequence.
FIG. 18 shows the interface that is used.
FIG. 19A shows the data format.
FIG. 19B shows the data content.
FIG. 20A shows an example of communication data.
FIG. 20B shows an example of communication data.
FIG. 21 shows an example of the array of elements in a message.
FIG. 22 shows messages.
FIG. 23 shows message data for each device.
FIG. 24A illustrates an <admin_info> message.
FIG. 24B illustrates an <admin_info> message.
FIG. 24C illustrates an <admin_info> message.
FIG. 24D illustrates an <admin_info> message.
FIG. 24E illustrates an <admin_info> message.
FIG. 25A illustrates an <open_device> message.
FIG. 25B illustrates an <open_device> message.
FIG. 25C illustrates an <open_device> message.
FIG. 25D illustrates an <open_device> message.
FIG. 25E illustrates an <open_device> message.
FIG. 25F illustrates an <open_device> message.
FIG. 26A illustrates a <close_device> message.
FIG. 26B illustrates a <close_device> message.
FIG. 26C illustrates a <close_device> message.
FIG. 26D illustrates a <close_device> message.
FIG. 26E illustrates a <close_device> message.
FIG. 27A illustrates a <device_data> message.
FIG. 27B illustrates a <device_data> message.
FIG. 27C illustrates a <device_data> message.
FIG. 27D illustrates a <device_data> message.
FIG. 28A illustrates an <error> message.
FIG. 28B illustrates an <error> message.
FIG. 28C illustrates an <error> message.
FIG. 29A illustrates a message for a barcode scanner.
FIG. 29B illustrates a message for a barcode scanner.
FIG. 29C illustrates a message for a barcode scanner.
FIG. 30A illustrates a message for a printer.
FIG. 30B illustrates a message for a printer.
FIG. 31A illustrates a message for a printer.
FIG. 31B illustrates a message for a printer.
FIG. 32A illustrates an XML document for printer control.
FIG. 32B illustrates an XML document for printer control.
FIG. 33A illustrates an XML document for printer control.
FIG. 33B illustrates an XML document for printer control.
FIG. 33C illustrates an XML document for printer control.
FIG. 33D illustrates an XML document for printer control.
FIG. 34A illustrates an XML document for printer control.
FIG. 34B illustrates an XML document for printer control.
FIG. 34C illustrates an XML document for printer control.
FIG. 34D illustrates an XML document for printer control.
FIG. 34E illustrates an XML document for printer control.
FIG. 34F illustrates an XML document for printer control.
FIG. 34G illustrates an XML document for printer control.
FIG. 34H illustrates an XML document for printer control.
FIG. 34I illustrates an XML document for printer control.
FIG. 34J illustrates an XML document for printer control.
FIG. 34K illustrates an XML document for printer control.
FIG. 34L illustrates an XML document for printer control.
FIG. 34M illustrates an XML document for printer control.
FIG. 34N illustrates an XML document for printer control.
FIG. 34P illustrates an XML document for printer control.
FIG. 35 illustrates an XML document for printer control.
FIG. 36A illustrates an XML document for printer control.
FIG. 36B illustrates an XML document for printer control.
FIG. 36C illustrates an XML document for printer control.
FIG. 36D illustrates an XML document for printer control.
FIG. 37A illustrates an XML document for printer control.
FIG. 37B illustrates an XML document for printer control.
FIG. 38A illustrates an XML document for printer control.
FIG. 38B illustrates an XML document for printer control.
FIG. 38C illustrates an XML document for printer control.
FIG. 38D illustrates an XML document for printer control.
FIG. 38E illustrates an XML document for printer control.
FIG. 38F illustrates an XML document for printer control.
FIG. 38G illustrates an XML document for printer control.
FIG. 38H illustrates an XML document for printer control.
FIG. 38I illustrates an XML document for printer control.
FIG. 38J illustrates an XML document for printer control.
FIG. 39A illustrates an XML document for printer control.
FIG. 39B illustrates an XML document for printer control.
FIG. 39C illustrates an XML document for printer control.
FIG. 39D illustrates an XML document for printer control.
FIG. 39E illustrates an XML document for printer control.
FIG. 39F illustrates an XML document for printer control.
FIG. 39G illustrates an XML document for printer control.
FIG. 39H illustrates an XML document for printer control.
FIG. 39I illustrates an XML document for printer control.
FIG. 39J illustrates an XML document for printer control.
FIG. 39K illustrates an XML document for printer control.
FIG. 40A illustrates an XML document for printer control.
FIG. 40B illustrates an XML document for printer control.
FIG. 41A illustrates an XML document for printer control.
FIG. 41B illustrates an XML document for printer control.
FIG. 42A illustrates an XML document for printer control.
FIG. 42B illustrates an XML document for printer control.
FIG. 43A illustrates an XML document for printer control.
FIG. 43B illustrates an XML document for printer control.
FIG. 44A illustrates an XML document for printer control.
FIG. 44B illustrates an XML document for printer control.
FIG. 45A illustrates an XML document for printer control.
FIG. 45B illustrates an XML document for printer control.
FIG. 46 illustrates an XML document for printer control.
FIG. 47A illustrates an XML document for printer control.
FIG. 47B illustrates an XML document for printer control.
FIG. 48A illustrates an XML document for printer control.
FIG. 48B illustrates an XML document for printer control.
FIG. 49A illustrates an XML document for printer control.
FIG. 49B illustrates an XML document for printer control.
FIG. 50A illustrates an XML document for printer control.
FIG. 50B illustrates an XML document for printer control.
FIG. 50C illustrates an XML document for printer control.
FIG. 51A illustrates an XML document for printer control.
FIG. 51B illustrates an XML document for printer control.
FIG. 51C illustrates an XML document for printer control.
FIG. 52A illustrates a message for a customer display.
FIG. 52B illustrates a message for a customer display.
FIG. 53A illustrates a message for a customer display.
FIG. 53B illustrates a message for a customer display.
FIG. 54A illustrates an XML document for customer display control.
FIG. 54B illustrates an XML document for customer display control.
FIG. 55A illustrates an XML document for customer display control.
FIG. 55B illustrates an XML document for customer display control.
FIG. 55C illustrates an XML document for customer display control.
FIG. 56 illustrates an XML document for customer display control.
FIG. 57A illustrates an XML document for customer display control.
FIG. 57B illustrates an XML document for customer display control.
FIG. 57C illustrates an XML document for customer display control.
FIG. 57D illustrates an XML document for customer display control.
FIG. 58A illustrates an XML document for customer display control.
FIG. 58B illustrates an XML document for customer display control.
FIG. 58C illustrates an XML document for customer display control.
FIG. 59A illustrates an XML document for customer display control.
FIG. 59B illustrates an XML document for customer display control.
FIG. 59C illustrates an XML document for customer display control.
FIG. 60A illustrates an XML document for customer display control.
FIG. 60B illustrates an XML document for customer display control.
FIG. 61A illustrates an XML document for customer display control.
FIG. 61B illustrates an XML document for customer display control.
FIG. 62A illustrates an XML document for customer display control.
FIG. 62B illustrates an XML document for customer display control.
FIG. 62C illustrates an XML document for customer display control.
FIG. 62D illustrates an XML document for customer display control.
FIG. 62E illustrates an XML document for customer display control.
FIG. 62F illustrates an XML document for customer display control.
FIG. 63 illustrates an XML document for customer display control.
FIG. 64 illustrates an XML document for customer display control.
FIG. 65 illustrates an XML document for customer display control.
FIG. 66 illustrates an XML document for customer display control.
FIG. 67A illustrates a message for a POS keyboard.
FIG. 67B illustrates a message for a POS keyboard.
FIG. 67C illustrates a message for a POS keyboard.
FIG. 68A illustrates a message for a POS keyboard.
FIG. 68B illustrates a message for a POS keyboard.
FIG. 69A illustrates a message for a POS keyboard.
FIG. 69B illustrates a message for a POS keyboard.
FIG. 69C illustrates a message for a POS keyboard.
FIG. 70A illustrates a message for a serial communication device.
FIG. 70B illustrates a message for a serial communication device.
FIG. 71A illustrates a message for a serial communication device.
FIG. 71B illustrates a message for a serial communication device.
FIG. 71C illustrates a message for a serial communication device.
FIG. 72 illustrates a device control script.
FIG. 73 illustrates a device control script.
FIG. 74 illustrates a device control script.
FIG. 75 illustrates a device control script.
FIG. 76 illustrates a device control script.
FIG. 77 illustrates a device control script.
FIG. 78 illustrates a device control script.
FIG. 79 illustrates a device control script.
FIG. 80 illustrates a device control script.
FIG. 81 illustrates a device control script.
FIG. 82 illustrates a sample program.
FIG. 83 illustrates the flow of constructing the environment of the sample program.
FIG. 84A illustrates the flow of constructing the environment of the sample program.
FIG. 84B illustrates the flow of constructing the environment of the sample program.



DESCRIPTION OF EMBODIMENTS
A preferred embodiment of the invention is described below with reference to the accompanying figures.
FIG. 1 shows the configuration of a device control system 100 according to the invention. This device control system 100 includes a terminal 3 and a printer 5 (intelligent printer).
The terminal 3 may be any device that connects to a network and is capable of socket communication, and could be a personal computer, a smartphone, or a tablet computer, for example. The terminal 3 has an environment that is capable of socket communication and can handle XML documents, which are markup language, and uses iOS, Android, Windows, Linux, or MacOS, for example, as the OS (operating system).
The terminal 3 and printer 5 are connected over a communication network. In the example shown in FIG. 1, the device control system 100 has a wireless LAN access point 11, and the wireless LAN access point 11 is connected to the printer 5 by a cable. The terminal 3 and printer 5 communicate by a wireless connection between the terminal 3 and the wireless LAN access point 11.
A network printer 7, customer display 8, and barcode scanner 9 are connected to the printer 5 as controlled devices. The network printer 7 is connected to the printer 5 through a network. The network printer 7 is a printer separate from the local printer 55 (FIG. 2) of the printer 5, and has a wired LAN or wireless LAN interface. The customer display 8 is connected through the USB interface described below. The barcode scanner 9 is connected through the USB interface described below. These devices are generally called peripheral devices (peripherals), and are referred to below as devices. Devices that connect to the printer 5 are not limited to the devices shown in FIG. 1. For example, displays, and key input devices such as keyboards are also included. Also included are devices that can be controlled by a HID (human interface device) driver standard to the OS, serial communication devices that can be operated using a serial communication driver standard to the OS, and USB devices that can be controlled in the same way as serial communication devices.
Operation of the device control system 100 is described next.
(1) Place an application on the terminal 3.
(2) The application sends a request message to the printer 5.
(3) The printer 5 sends data to a device that can be controlled from the printer 5.
(4) The network printer and devices connected to the printer 5 are controlled.
(5) The printer 5 returns a response to the terminal 3.
FIG. 2 illustrates the functional configuration of the device control system 100.
The device control system 100 uses Device XML, which is a command system written in XML markup language defining functions for controlling devices (peripheral devices) connected to the printer 5.
The terminal 3 has an application 31. The application 31 is a native application program installed on the terminal 3. The application 31, the device application programming interface (API) 33, sends an XML format request message (Request) by socket communication to the printer 5.
A device service interface 501 and a device control script 502 are built in to the printer 5. The device service interface 501 and device control script 502 interpret the request message, and output a request to the device control script 502. The device control script 502 controls a key input device 18 and serial communication device 19. The device control script 502 outputs key input device 18 and serial communication device 19 events and control result responses to the device service interface 501. The key input device 18 in this example includes the keyboard 14 in FIG. 1, and the serial communication devices 19 include the barcode scanner 9 and cash drawer 13 in FIG. 1.
The device service interface 501 exchanges data with the local printer 55. The local printer 55 is the printer incorporated in the printer 5. The device service interface 501 also exchanges data with the network printer 7 and customer display 8.
The device service interface 501 outputs an XML format response (Response) to the application 31 based on the results of controlling the network printer 7, customer display 8, and local printer 55, and device control script 502 responses.
The printer 5 thus controls devices through the device service interface 501 and device control script 502. Devices controlled in the example shown in FIG. 2 are the network printer 7, customer display 8, key input device 18, serial communication device 19, and local printer 55.
The terminal 3 can control devices connected to the printer 5 using the Device XML command system of the device control system 100 by the above operation.
Device XML has the following features.

    
    
        A separate device (such as a computer) used as a controller is not needed to control devices.
        Devices that operate according to a driver standard to the OS of the printer 5 can be used through the device control script 502 without installing a specific driver.
        When a device is accessed, the device is exclusively locked. Multiple terminals 3 therefore cannot access and control a device at the same time. When the terminal 3 controlling a device releases the device, the device can then be controlled from another terminal 3.
    
    


The device API 33 has the following features.

    
    
        Commands that print lines can be used when the network printer 7 or the local printer 55 of the printer 5 supports a line command.
        Buzzer functions can be used when a buzzer is connected to the printer 5 or network printer 7.
        Key codes that can be acquired from the keyboard 14 are limited. Key codes that can be acquired from the keyboard 14 are shown in FIG. 3A and FIG. 3B.
    
    


The configuration of the printer 5 is described next.
The printer 5 has a CPU, RAM, flash ROM, nonvolatile memory, a video controller, an auxiliary storage device (SSD: solid state drive), interface, and a local printer (print unit). The printer 5 could also have a speaker. The local printer is a thermal printer that can print on 80 mm wide or 58 mm wide roll paper.
The printer 5 can be installed in a POS (point of sale) system. The operating system (OS) of the printer 5 is Windows® based, for example, and is stored in the auxiliary storage device.
A device control program, which is software for the terminal 3 to control devices connected to the printer 5, is installed to the printer 5. As a result, installing a driver program to the terminal 3 is not necessary.
The printer 5 also has a Windows® standard device driver program (APD), UPOS driver, OPOS driver, or other software for controlling devices and the local printer of the printer 5.
A web application can be installed to the printer 5. This enables using the printer 5 as an application server as shown in FIG. 3. The web application could, for example, be a PHP and Perl server-side script or SQLite database access script (server-side script).
FIG. 4 shows an example of device connections to the printer 5.
The foregoing network printer 7, customer display 8, and barcode scanner 9 can be connected to the printer 5. A display 12, cash drawer 13, and keyboard 14 can be connected to the printer 5.
FIG. 5 shows the external appearance of the printer 5.
A roll paper cover 51 is disposed to the top of the printer 5. The roll paper cover opens when the cover open button 52 is pressed, and roll paper can be loaded. A manual cutter 53 for manually cutting the roll paper, and a cutter cover 54, are disposed to the paper exit from which the roll paper is discharged after printing. The cutter cover 54 is opened when a paper jam occurs in the local printer of the printer 5, and when the roll paper cover 51 does not open. The blade of the manual cutter 53 returns to the home position when the cutter cover 54 opens. The printer 5 also has a power switch 56B, reset button 56A, LED display unit 57, and control panel 58. The LED display unit 57 includes a disc access LED indicating accessing the auxiliary storage device, and status LEDs. The status LEDs report the operating state of the OS, the standby mode of the OS, that the power is off, the OS start-up sequence, and a high CPU temperature warning.
The control panel 58 includes a power LED, error LED, roll paper LED, and paper feed button. The power LED lights when power is supplied. The error LED is off during normal operation, and lights when the printer resets and when the end of the roll paper is detected and printing stops. The paper LED is off when sufficient roll paper remains, lights steady when little paper is left, and blinks when the self-diagnostic test is running. Pressing the feed button advances the roll paper one line at a time or continuously.
A connector cover 59 is disposed to the back of the printer 5. Removing the connector cover 59 exposes the connector panel (connection panel) on the back of the printer 5.
FIG. 6 shows the connection panel 60. The connection panel 60 includes a drawer kick-out connector 61, Ethernet connector 62, USB connector 63, VGA connector 64, COM connector 65, line output 66, and DC input 67. The connection panel 60 is the connection unit of the accompanying claims. However, the local printer 55 built into the printer 5 is also one of the devices connected to the printer 5. The connection unit therefore includes the connection panel 60 and an internal interface of the printer 5.
The cash drawer 13 or an optional buzzer is connected to the drawer kick-out connector 61. The Ethernet connector 62 is connected to the network. The USB connector 63 has six USB ports. The customer display 8, barcode scanner 9, keyboard 14, and other devices are connected to the USB connector 63. The display 12 is connected to the VGA connector 64. The serial interface of a serial communication device connects to the COM connector 65. The line output 66 connects to an external speaker.
FIG. 7 illustrates connection of a wireless LAN unit 17. The wireless LAN unit 17 plugs into a USB extension cable 15, and the USB extension cable 15 plugs into the USB connector 63. The printer 5 can thus be connected to a wireless LAN.
Building a device service interface 501 environment is described next.
FIG. 8 shows the flow of work when building the environment.
1. Network Settings
Configure the system and printer 5 network. The network settings of the printer 5 can be configured using any of the following methods.

    
    
        Configuring the Windows® network settings on the printer 5.
        Installing the TMNet WinConfig utility, which is an application for configuring the printer 5, on an external device (a Windows computer).
    
    


2. Connect a Device to the Printer 5
Connect a device to the printer 5. As described above, connectable devices include the customer display 8, barcode scanner 9, display 12, cash drawer 13, and keyboard 14. Also included are devices that can be controlled by a HID driver standard to the OS, serial communication devices that can be operated using a serial communication driver standard to the OS, and USB devices that can be controlled in the same way as serial communication devices. The connection panel 60 in FIG. 6 has only one COM connector 65, but plural serial communication devices can be connected if a serial-USB conversion cable is used and the driver program is compatible with serial-USB conversions.
3. Register Device Control Script
A device control script prepared by the user is registered in order for the printer 5 to control devices other than the products with which the printer 5 is compatible. Registration is done from the web browser.
4. Register Device
Register the device connected to the printer 5 in the printer 5 software. Registration is done from the web browser.
The web browser used for steps 1 to 5 includes a web browser that runs on the terminal 3.
A method of registering a device control script prepared by the user is described with reference to FIG. 9.
The registration steps are as follow.
(1) Prepare a customized device control script.
(2) Turn the printer 5 power on.
(3) Start the web browser, and input the URL (http://IP address of printer 5/WebConfig/).
(4) Start the TMNetWebConfig utility. Click on [Web service settings]-[Register/delete] in the window shown in FIG. 9.
(5) The Control Script screen is displayed.
Click on [Browse] in the Control script to be registered field, and select the device control script to register.
(6) Click [Registration].
The device control script is registered and listed in the Registered control scripts field in the bottom of the window.
Register a device to be controlled by Device XML. A device is registered by the web browser displaying the TMNetWebConfig utility as shown in FIG. 10.
The registration steps are as follow.
(1) Start the web browser, and input the URL (http://IP address of printer 5/WebConfig/).
(2) TheTMNetWebConfig utility starts. From [Web service settings]-[Device registration] in the window shown in FIG. 10, click on the type of device to register. Devices are displayed under Device registration in the screen shown in FIG. 10. Click on the type of device to register. The type of device in this embodiment can be selected from five types, printer, display, key input device, serial communication device, and other as shown in FIG. 11. Details about the types of devices are as shown in FIG. 11.
(3) A configuration screen is displayed for each device. The connected device is registered in the printer 5.
(3-1) To register a printer
Confirm registration of the local printer incorporated in the printer 5 as follows.
(3-1-1) Check that “printer 5” is registered for the device ID “local printer” in the Registered Printer field in the screen shown in FIG. 10.
(3-1-2) Click on [Test printing]. Check that TEST_PRINT is printed by the local printer 55.
(3-1-3) Register the connected network printer 7.
Register the network printer 7 by the following steps.
(3-1-3-1) Set the items shown in FIG. 12 (device ID, type, model number, IP address, retry interval), and click [Registration].
(3-1-3-2) After confirming the printer is added to the Registered Printer list, click [Test printing]. Confirm that TEST_PRINT is printed by the registered network printer 7.
(3-2) To register a display (customer display 8)
The device ID of the customer display is a constant, “local display”. Register the connected customer display 8 by the following steps.
(3-2-1) Select “Use” in the screen shown in FIG. 10.
(3-2-2) Set the items (communication settings, brightness settings) in FIG. 13, and click [Registration].
(3-2-3) Click [Test display]. Confirm that text is displayed on the customer display 8.
(3-3) To register a key input device 18
Register the connected key input device 18 by the following steps.
(3-3-1) Set the items (device ID, device name, control script) in FIG. 14, and click [Registration].
(3-3-2) After confirming the registered device was added to the Registered Key Input Device field, click [Operating test].
(3-3-3) A screen will be displayed by the web browser. Operate the key input device 18, and confirm that the result is displayed as operated.
(3-4) To register a serial communication device 19
Register the connected serial communication device 19 by the following steps.
(3-4-1) Set the items (device ID, device name, control script, communication speed, data bit, parity, stop bit, free control) shown in FIG. 15 for the connected serial communication device 19, and click [Registration].
(3-4-2) Confirm that the device is added to the Registered Serial Communication Device field.
(3-5) To register another device
Register another connected device by the following steps.
(3-5-1) Set the items (device ID, control script) shown in FIG. 16 for the connected device, and click [Registration].
(3-5-2) Confirm that the device is added to the Registered Other Devices field.
The programming method for developing an application using Device XML is described next.
The basic sequence of programming in Device XML is shown in FIG. 17.
Applications in FIG. 17 corresponds to application 31, Device Control indicates the device control function (device service interface 501), and Device denotes a controlled device.
1: Establish TCP connection. Establish a TCP connection to the socket interface from the application 31.
2: Connect message. Establish a communication path to the device service interface 501.
3: The application 31 sends an open_device message (type_printer).
3.1: Device service interface 501 sends a Cmd( ) command to device.
4: Device returns “Device open”.
4.1: Device service interface 501 returns response.
6: Application 31 sends a device_data_message. Application 31 controls device using the device_data_message.
6.1: Cmd( ) command sent to device.
6.1.1: Device executes.
Device sends response to device_data_message.
7.: Device returns the execution result.
7.1: Device service interface 501 returns a device_data_message or error message.
8: Application 31 sends close_device_nmessage. The connection to the device service interface 501 and socket interface communication is terminated.
8.1: Device service interface 501 sends a Cmd( ) command to device.
9: Device closes.
9.1: Device service interface 501 returns response to application 31.
The interface shown in FIG. 18 is used to control devices using Device XML.
The format of each data item is as shown in FIG. 19A, and FIG. 19B shows a description of each data item.
Examples of communication data between the application 31 and the device service interface 501 are shown in FIG. 20A and FIG. 20B. In FIG. 20A and FIG. 20B, the NULL character is represented by “¥0”. FIG. 20A and FIG. 20B show examples of communication data when establishing a connection, acquiring administrator information, opening a device, controlling a device, and closing a device.
The method of creating an array of <data> elements in a <device_data> message is described next.
The following programming method is used to describe an array in the <data> tag:

    
    
        Set the attribute array=“true” in the first element in the array.
        Then specify the value of each additional array element using the same name for each element.
    
    


FIG. 21 shows sample code to create the array keycodes=[49, 50, 51, 52].
Device XML is described next. An ePOS-Device XML List is shown.
The following are included in ePOS-Device XML.

    
    
        Message (FIG. 22)
    
    


This is XML for request messages from the application 31 to the printer 5, and response messages from the printer 5 to the application 31.

    
    
        Message data for each device (FIG. 23)
    
    


This is XML for storing request and response data for each controlled device. This forms a sub-element of the <data> element of a <device_data> message.
Message data for each device is described next.
Message data for each device specifies the data that controls the device in a sub-element of the <data> element of a <device_data> message.
The component elements of the message data differ according to the device type.
Before specifying the data, declare the type of message data using the <type> element and then specify the data of the sub-element. The <type> elements that can be used for each type of device are shown in FIG. 23.
Messages are described next.
<connect>
This message is contained in a [Response].
This message returns to the application that a connection was established.
The application 31 sends a message described below triggered by receiving this message.
[Example]
<connect></connect>
<admin_info>
Returns the administrator information set in the printer 5. The information is set with the TMNet WebConfig utility.
This message is contained in a [Request].
This message requests administrator information from the printer 5.
[Example]
<admin_info></admin_info>
This message is contained in a [Response].
This message returns the administrator information to the application 31. A description of the sub-elements and data types is shown in FIG. 24A.

    
    
        code
    
    


FIG. 24B shows the code elements.

    
    
        data
    
    


FIG. 24C shows the data elements.
Character strings in the received data are described next. The strings shown in FIG. 24D are escaped.
[Example] FIG. 24E shows examples of normal and error responses.
<open_device>
This message makes the device linked to the device ID usable. Exclusive use of the specified device is given to the requesting application 31.
This message is contained in a [Request].
This message specifies the device to open. A description of the sub-elements and data types is shown in FIG. 25A.

    
    
        data
    
    


FIG. 25B shows the data elements.
[Example] FIG. 25C shows an example of a request.
This message is contained in a [Response].
This message returns the device open result to the application 31. A description of the sub-elements and data types is shown in FIG. 25D.

    
    
        code
    
    


FIG. 25E shows the code elements.
[Example] FIG. 25F shows examples of normal and error responses.
<close_device>
This message closes an opened device.
This message is contained in a [Request].
This message specifies the device to close. A description of the sub-elements and data types is shown in FIG. 26A.
[Example] FIG. 26B shows an example of a request.
This message is contained in a [Response].
This message returns the device close result to the application 31. A description of the sub-elements and data types is shown in FIG. 26C.

    
    
        code
    
    


FIG. 26D shows the code elements.
[Example] FIG. 26E shows examples of normal and error responses.
<device_data>
This message is contained in a [Request].
This message sends data to a device. Device control commands, and print and display data are included. A description of the sub-elements and data types is shown in FIG. 27A.
[Example] FIG. 27B shows an example of a request.
This message is contained in a [Response].
This message returns data from the device. The result of device control, events that occurred in the device, and input data from the device are included. A description of the sub-elements and data types is shown in FIG. 27C.
[Example] FIG. 27D shows an example of a response.
<error>
This message is contained in a [Response].
This message returns device control command and service control command errors, and other common errors. A description of the sub-elements and data types is shown in FIG. 28A.

    
    
        code
    
    


FIG. 28B shows the code elements.
[Example] FIG. 28C shows an example of a response.
Message data for the barcode scanner is described next.
<type>ondata</type>
This message is contained in a [Response].
This message returns scanned data from the barcode scanner to the application. A description of the sub-elements and data types is shown in FIG. 29A.
Character strings in the received data are described next. The strings shown in FIG. 29B are escaped.
[Example] FIG. 29C shows an example of a response.
Message data for the printer is described next.
Print data is described below in Printer Control XML.
<type>print</type>
This message is contained in a [Request].
This message sends print data and settings data to the printer. A description of the sub-elements and data types is shown in FIG. 30A.
[Example] FIG. 30B shows an example of a request.
<type>onxmlresult</type>
This message is contained in a [Response].
This message returns the print result to the application. A description of the sub-elements and data types is shown in FIG. 31A.
[Example] FIG. 31B shows an example of a response.
Printer Control XML, which is an XML document that controls a printer, is described next.
Message data for a printer is described below under Message Data for Printers.
<epos-print>
This is an XML document sent from an application to a printer. This document instructs the printer to execute a specified function. <epos-print> contains the element.
[Attribute]


    
    
        xmlns
    
    


This attribute declares the epos-print name.
[Sub-elements] FIG. 32A shows the sub-elements.
[Example] FIG. 32B shows a sample XML document.
<response>
This is an XML document that is returned from the printer to the application.
[Attribute]


    
    
        success
    
    


This attribute gets the display result. FIG. 33A shows the attribute values.

    
    
        code
    
    


This attribute gets the error code. FIG. 32B shows the attribute values.

    
    
        status
    
    


This attribute gets an OR function as a decimal expression according to the printer status. FIG. 32C shows the attribute values.
[Example] FIG. 33D shows a sample XML document.
<text>
This message specifies the character string to print. This message also configures string-related settings such as style, print position, and line feed space.
To print content other than text after printing text, execute a line feed or paper feed.
In page mode, characters are printed from the current print position referenced to the baseline dot of the characters (printer specifications, page 151).
[Entity Reference]
Horizontal tab, line feed, and other symbols required for printer control are written using the entity references shown in FIG. 34A.
[Attribute]


    
    
        lang
    
    


This attribute specifies the language. FIG. 34B shows the attribute values.
The printable character codes depend upon the specifications of the printer.

    
    
        font
    
    


This attribute specifies the character font. FIG. 34C shows the attribute values.
If Japanese is specified, characters can be printed using Shift JIS codes.

    
    
        smooth
    
    


This attribute specifies smoothing. Text printing quality improves if smoothing is enabled. FIG. 34D shows the attribute values.

    
    
        dw
    
    


This attribute specifies double-sized width. FIG. 34E shows the attribute values.
If the dw attribute and the width attribute are both specified in one element, the horizontal scale specified by the width attribute takes precedence.

    
    
        dh
    
    


This attribute specifies double-sized height. FIG. 34F shows the attribute values.
If the dh attribute and the height attribute are both specified in one element, the vertical scale specified by the height attribute takes precedence.

    
    
        width
    
    


This attribute specifies horizontal scaling. FIG. 34G shows the attribute values.
If the dw attribute and the width attribute are both specified in one element, the horizontal scale specified by the width attribute takes precedence.

    
    
        height
    
    


This attribute specifies vertical scaling. FIG. 34H shows the attribute values.
If the dh attribute and the height attribute are both specified in one element, the vertical scale specified by the height attribute takes precedence.

    
    
        reverse
    
    


This attribute specifies inverting the black and white parts of characters. FIG. 34I shows the attribute values.

    
    
        ul
    
    


This attribute specifies underlining. FIG. 34J shows the attribute values.

    
    
        em
    
    


This attribute specifies emphasized printing. FIG. 34K shows the attribute values.

    
    
        color
    
    


This attribute specifies the character color. FIG. 34L shows the attribute values.

    
    
        x
    
    


(Default: “0”)
This attribute specifies the print start position of the characters in dots.
In page mode this is the same as the horizontal print position specified by the position element, but the print position moves on the horizontal axis.

    
    
        align
    
    


This attribute specifies text alignment. FIG. 34M shows the attribute values.
In the standard mode, the align attribute controls where the line starts.
The align attribute set in this element also applies to the align attribute of image, logo, barcode, and symbol elements.

    
    
        rotate
    
    


This attribute specifies rotated printing of text. FIG. 34N shows the attribute values.
The rotate attribute is ignored in page mode.
In page mode, the print direction is set to right to left (right to left) using the direction element to print text rotated 180 degrees.
The rotate attribute set in this element also applies to the rotate attribute of the barcode and symbol elements.

    
    
        linespc
    
    


(Default: “30”)
This attribute specifies the paper feed distance for one line in dots.
[Example] FIG. 34P shows an example of settings for printing a string.
<feed>
This message specifies the paper feed distance. This message specifies the paper feed distance in dots or in lines. When the paper feed amount is not specified, the paper is fed one line (line feed). This message also sets the paper feed distance per line.
[Attributes]


    
    
        unit
    
    


This attribute specifies the paper feed distance in dots.

    
    
        line
    
    


This attribute specifies the paper feed distance in lines.

    
    
        linespc
    
    


(Default: “30”)
This attribute specifies the paper feed distance per line in dots.
If the paper feed distance per line is 30 dots, a maximum paper feed distance of 240 lines can be specified.
The paper feed distance is stored separately for the standard mode and the page mode. Specifying the linespc attribute also affects the linespc attributes of the <text> and <feed> elements that follow.
[Example] FIG. 35 shows a sample XML document.
<image>
This message specifies raster bit image data. (Data type xs:base64Binary)
Raster graphics refer to data generated by horizontally scanning the pixels of an image starting from an origin at the top left corner of the image.
Data is generated at 1 bit per pixel for two-tone images, and 4 bits per pixel for 16-tone images, starting from the most-significant bit of each byte. Zero padding is added so that scan data is in byte units for each line.
To print a raster image at high speed, specify “left” for the align attribute and specify a multiple of 8 that does not exceed the printer paper width for the width attribute.
In page mode, raster images are printed from the current print position referenced to the bottom left dot of the raster image. The print position does not move.
In page mode, set the print position so that raster images do not extend beyond the print area.

    
    
        Barcodes and two-dimensional symbols are printed as two-tone images because scanning quality is affected when printed as multiple-tone raster images.
        Use the ePOS-Print XML generator tool or other user application to create raster graphic bit-images. Note the following when using a user application.
        Two-tone images: Specify a multiple of 8 for the image width or fill the missing bits with zeros.
        16-tone image: Specify a multiple of 2 for the image width or fill the missing bits with zeros.

[Attribute]

        width
    
    


This attribute specifies the image width in dots.

    
    
        height
    
    


This attribute specifies the image height in dots.

    
    
        color
    
    


This attribute specifies the character color. FIG. 36A shows the attribute values.

    
    
        align
    
    


This attribute specifies the print position. FIG. 36B shows the attribute values.
The align attribute set in this element also applies to the align attribute in the text, logo, barcode, and symbol elements.

    
    
        mode
    
    


(Option (option))
This attribute specifies the color mode. FIG. 36C shows the attribute values.
[Example] FIG. 36D shows a sample XML document.
<logo>
This message specifies a logo registered in the NV memory of the printer.
A logo must first be registered in the printer using a model-specific utility or logo registration utility (TMFLogo).
In page mode, logos are printed from the current print position referenced to the bottom left dot of the logo.
[Attribute]


    
    
        key1
    
    


This attribute specifies the value of key code 1 set at the time of NV logo registration.

    
    
        key2
    
    


This attribute specifies the value of key code 2 set at the time of NV logo registration. This attribute is required.

    
    
        align
    
    


This attribute specifies the print position. FIG. 37A shows the attribute values.
The align attribute set in this element also applies to the align attribute in the text, logo, barcode, and symbol elements.
[Example] FIG. 37B shows a sample XML document.
<barcode>
This message specifies barcode data as a character string.
A barcode will not be printed if the settings are not compliant with the barcode standard, or if the barcode will be larger than the print area of the printer.
In page mode, a barcode is printed from the current print position referenced to the bottom left dot of the barcode (not including the HRI).
[Barcode Types]
FIG. 38A, FIG. 38B, and FIG. 38C show barcode types that can be specified.
FIG. 38D shows the escape sequences used to specify binary data that cannot be represented by a character string.
[Attribute]


    
    
        type
    
    


This attribute specifies the barcode type. FIG. 38E shows the attribute values.

    
    
        hri
    
    


This attribute specifies the HRI position. FIG. 38F shows the attribute values.

    
    
        font
    
    


This attribute specifies the HRI font. FIG. 38G shows the attribute values.

    
    
        width
    
    


(Default: “3”)
This attribute specifies the module width in dots. Specify an integer from 2 to 6.

    
    
        height
    
    


(Default: “162”)
This attribute specifies the module height in dots.

    
    
        align
    
    


This attribute specifies the print position. FIG. 38H shows the attribute values.
The align attribute set in this element also applies to the align attribute in the text, image, logo, and symbol elements.

    
    
        rotate
    
    


This attribute specifies rotated printing. FIG. 38I shows the attribute values.
The rotate attribute set in this element also applies to the rotate attribute in the text and symbol elements.
[Example] FIG. 38J shows a sample XML document.
<symbol>
This message prints a two-dimensional symbol.
This message specifies the two-dimensional symbol as a character string.
A two-dimensional symbol will not be printed if the settings are not compliant with the two-dimensional symbol standard, or if the two-dimensional symbol will be larger than the print area of the printer.
In page mode, a two-dimensional symbol is printed from the current print position referenced to the bottom left dot of the two-dimensional symbol.
[Two-Dimensional Symbol Types]
FIG. 39A and FIG. 39B show two-dimensional symbol types that can be specified.
FIG. 39C shows the escape sequences used to specify binary data that cannot be represented by a character string.
[Attribute]


    
    
        type
    
    


This attribute specifies the type of two-dimensional symbol. FIG. 39D shows the attribute values.

    
    
        level
    
    


This attribute specifies the error correction level. FIG. 39E shows the attribute values.
The error correction level is selected according to the type of two-dimensional symbol.
Select the default for MaxiCode and two-dimensional GS1 DataBar symbols.

    
    
        width
    
    


This attribute specifies the width of one module in dots. FIG. 39F shows a description.

    
    
        height
    
    


This attribute specifies the height of one module in dots. FIG. 39G shows a description.

    
    
        size
    
    


FIG. 39H shows a description.

    
    
        align
    
    


This attribute specifies the print position. FIG. 39I shows the attribute values.
The align attribute set in this element also applies to the align attribute in the text, image, logo, and barcode elements.

    
    
        rotate
    
    


This attribute specifies rotated printing. FIG. 39J shows the attribute values.
The rotate attribute set in this element also applies to the rotate attribute in the text and barcode elements.
[Example] FIG. 39K shows a sample XML document.
<hline>
This message specifies a horizontal line.
[Attribute]


    
    
        x1
    
    


This attribute specifies the start position of the horizontal line (in dots).

    
    
        x2
    
    


This attribute specifies the end position of the horizontal line (in dots).

    
    
        style
    
    


(Option)
This attribute specifies the type of horizontal line. FIG. 40A shows the attribute values.
[Example] FIG. 40B shows a sample XML document.
<vline-begin>
This message starts drawing a vertical line.
This message cannot be used in page mode.
A vertical line is drawn until the end is specified by the <vline-end> message described below. This element is used with vline-end.
[Attribute]


    
    
        x
    
    


This attribute specifies the start position of the vertical line (in dots).

    
    
        style
    
    


(Option)
This attribute specifies the type of vertical line. FIG. 41A shows sample attributes.
[Example] FIG. 41B shows a sample XML document.
<vline-end>
This message stops drawing a vertical line.
This element is used with vline-begin described above.
[Attribute]


    
    
        x
    
    


This attribute specifies the end position of the vertical line (in dots).

    
    
        style
    
    


(Optional)
This attribute specifies the type of vertical line. FIG. 42A shows sample attributes.
[Example] FIG. 42B shows a sample XML document.
<page>
This message changes from the standard mode to the page mode.
[<page> elements]
The elements shown in FIG. 43A can be used in <page>.
[Example] FIG. 43B shows a sample XML document.
<area>
This message specifies the print area in page mode.
The print area is set by specifying the origin, width, and height referenced to the absolute origin. As shown in FIG. 44A, the absolute origin is a dot above the top left corner of the printable area.
Specify the print area according to the print content. If print data extends beyond the print area, the print data will not be completely printed.
This element is used in a page element.
[Attribute]


    
    
        x
    
    


(Default: “0”)
This attribute specifies the origin on the horizontal axis in dots.

    
    
        y
    
    


(Default: “0”)
This attribute specifies the origin on the vertical axis in dots.

    
    
        width
    
    


(Default: Varies according to type.)
This attribute specifies the width of the print area in dots.

    
    
        height
    
    


(Default: Varies according to type.)
This attribute specifies the height of the print area in dots.
Specify the width and height of the print area according to the print direction setting. The print data may not be completely printed.
[Example] FIG. 44B shows a sample XML document.
<direction>
This message specifies the print direction in page mode.
This message specifies the print direction and rotates the print area. The starting point of the print area moves according to the rotation of the print area.
This element is used in a page element.
[Attribute]


    
    
        dir
    
    


This attribute specifies the direction of rotation. FIG. 45A shows the attribute values.
[Example] FIG. 45B shows a sample XML document.
<position>
This message specifies the print position in page mode.
This message specifies the print position referenced to the starting point of the print area. The starting point of the print area moves according to the direction of rotation.
This element is used in a page element.
[Attribute]


    
    
        x
    
    


(Default: “0”)
This attribute specifies the horizontal position in dots.

    
    
        y
    
    


(Default: “21”)
This attribute specifies the vertical position in dots.
This message specifies the print start position (coordinates) according to the content to be printed. Refer to the following.

    
    
        To print a character string: Specify the left end of the baseline of the first character.
    
    


This is optional when for left-aligned printing of standard-sized characters. To print double-sized height characters, specify a value equal to or greater than “42” for y.

    
    
        To print a barcode:
    
    


Specify the bottom left of the symbol. Specify the barcode height for y.

    
    
        To print a graphic/logo:
    
    


Specify the bottom left of the graphic data. Specify the height of the graphic data for y.

    
    
        To print a two-dimensional symbol:
    
    


Specify the top left of the symbol.
[Example] FIG. 46 shows a sample XML document.
<line>
This message draws a straight line in page mode.
Diagonal lines cannot be printed.
This element is used in a page element.
[Attribute]


    
    
        x1
    
    


This attribute specifies the position (in dots) to start printing a horizontal line.

    
    
        y1
    
    


This attribute specifies the position (in dots) to start printing a vertical line.

    
    
        x2
    
    


This attribute specifies the position (in dots) to stop printing a horizontal line.

    
    
        y2
    
    


This attribute specifies the position (in dots) to stop printing a vertical line. Specify the line type.

    
    
        style
    
    


(Optional)
This attribute specifies the line type. FIG. 47A shows the attribute values.
[Example] FIG. 47B shows a sample XML document.
<rectangle>
This message draws a rectangle in page mode.
This element is used in a page element.
In standard mode, Use the hline element, vline-begin element, and vline-end element are used.
[Attribute]


    
    
        x1
    
    


This attribute specifies the position (in dots) to start printing a horizontal line.

    
    
        y1
    
    


This attribute specifies the position (in dots) to start printing a vertical line.

    
    
        x2
    
    


This attribute specifies the position (in dots) to stop printing a horizontal line.

    
    
        y2
    
    


This attribute specifies the position (in dots) to stop printing a vertical line. Specify the line type.

    
    
        style (Optional)
    
    


This attribute specifies the line type. FIG. 48A shows examples of attributes.
[Example] FIG. 48B shows a sample XML document.
<cut>
This message specifies a paper cut.
This message is used in standard mode.
This message executes at the beginning of a line. The paper is at the beginning of a line after the paper is cut.
[Attribute]


    
    
        type
    
    


(Option)
This attribute specifies the type of cut. FIG. 49A shows examples of attributes.
[Example] FIG. 49B shows a sample XML document.
<pulse>
This message specifies outputting a signal to the drawer kick-out connector. A buzzer can be sounded depending upon the model.
[Attribute]


    
    
        drawer
    
    


(Option)
This attribute specifies the drawer kick-out connector. FIG. 50A shows the attribute values.

    
    
        time
    
    


(Option)
This attribute specifies the drawer kick-out signal ON time. FIG. 50B shows the attribute values.
[Example] FIG. shows a sample XML document.
<sound>
This message sounds a buzzer.
[Attribute]


    
    
        pattern
    
    


(Option)
This attribute specifies the buzzer pattern. FIG. 51A shows the attribute values.

    
    
        repeat
    
    


(Optional, default: “1”)
This attribute specifies the number of times the buzzer sounds.
FIG. 51B shows the attribute values.
[Example] FIG. shows a sample XML document.
Message data for a customer display is described below.
Display data is described below in Customer Display Control XML.
<type>display</type>
[Request]
This message sends display data and setting data to the customer display. FIG. 52A shows sub-elements.
[Example] FIG. 52B shows an example of a request.
<type>onxmlresult</type>
[Response]
This message returns the result of sending to the customer display to the application. FIG. 53A shows the sub-element.
[Example] FIG. 53B shows an example of a response.
Customer Display Control XML, which is an XML document that controls a customer display, is described next.
Message data for a customer display is described above under Message Data for the Customer Display.
<epos-display>
This is an XML document sent from the application to the customer display. This document requests the customer display to execute the specified function. An <epos-display> message contains sub-elements required to control the customer display.
[Attribute]


    
    
        xmlns
    
    


This attribute declares the name of the epos-display. FIG. 54A shows sub-elements.
[Example] FIG. 54B shows a sample XML document.
<response>
This is an XML document returned from the customer display to the application.
[Attribute]


    
    
        success
    
    


This attribute gets the display result. FIG. 55A shows the attribute values.

    
    
        code
    
    


This attribute gets the error code. FIG. 55B shows the attribute values.

    
    
        status
    
    


This attribute is always set to 0.
[Example] FIG. 55C shows a sample XML document.
<window>
This message controls creating and deleting windows and moving the current window.

    
    
        This message creates the defined window when the number, x, y, width, and height attributes are specified. Windows are defined to not overlap with an already defined window. The window size must be defined to fit in the customer display size (20 columns×2 rows).
        The specifiedwindow is deleted if the number attribute is defined and the destroy attribute is set to true.
        If the number attribute is defined when the attributes to create or delete a window are not defined, the current window moves to the specified window position.

[Attribute]

        number
    
    


This attribute specifies the number of the target window. FIG. 56 shows the attribute values.

    
    
        x
    
    


This attribute specifies the x-coordinate (1 to 20) as an integer to create a window.

    
    
        y
    
    


This attribute specifies the y-coordinate (1 or 2) as an integer to create a window.

    
    
        Width
    
    


This attribute specifies the width (1 to 20) as an integer to create a window.

    
    
        height
    
    


This attribute specifies the height (1 or 2) as an integer to create a window.

    
    
        scrollmode
    
    


This attribute specifies the scrolling method of the window when a window is created. FIG. 57A shows the attribute values.

    
    
        destroy
    
    


This attribute specifies whether or not to delete the window specified by the number attribute. FIG. 57B shows the attribute values.
[Error conditions]
When an error occurs, a value shown in FIG. 57C is returned.
[Example] FIG. 57D shows a sample XML document.
<text>
This message controls displaying a character string.

    
    
        If x and y attributes are defined, text is displayed from the specified cursor position.
        If x and y attributes are not defined, text is displayed from the current cursor position.

[Attribute]

        x
    
    


This attribute specifies the x-coordinate (1 to 20) of the text display as an integer.

    
    
        y
    
    


This attribute specifies the y-coordinate (1 or 2) of the text display as an integer.

    
    
        reverse
    
    


This attribute specifies shading for the displayed characters. FIG. 58A shows the attribute values.

    
    
        lang
    
    


This attribute specifies the language of the text display. If omitted, the current setting is used. FIG. 58B shows the attribute values.
[Example] FIG. 58C shows a sample XML document.
<cursor>
This message controls the cursor position and display settings.
This message specifies the cursor coordinates in the display using the x and y attributes.
This message specifies the cursor position in the current window using the moveto attribute.
This message is ignored if x, y, and moveto attributes are all defined at the same time.
[Attribute]


    
    
        x
    
    


This attribute specifies the x-coordinate (1 to 20) of the cursor as an integer.

    
    
        y
    
    


This attribute specifies the y-coordinate (1 or 2) of the cursor as an integer.

    
    
        moveto
    
    


This attribute specifies the cursor position in the current window. FIG. 59A shows the attribute values.

    
    
        type
    
    


This attribute specifies the display method of the cursor. If omitted, the current setting is used. FIG. 59B shows the attribute values.
[Example] FIG. 59C shows a sample XML document.
<blink>
This message controls screen blinking. Blinking continues at the interval specified in the interval attribute.
The actual blinking interval is rounded up in 50 ms increments.
For example, if interval is 1 to 50, the actual interval is 50 ms; if the interval is 51 to 100, the actual interval is 100 ms.
[Attribute]


    
    
        interval
    
    


This attribute specifies the blinking interval as an integer. FIG. 60A shows the attribute values.
[Example] FIG. 60B shows a sample XML document.
<brightness>
This message controls the display brightness.
[Attribute]


    
    
        value
    
    


This attribute specifies brightness as a percentage. FIG. 61A shows the attribute values.
[Example] FIG. 61B shows a sample XML document.
<marquee>
This message controls the marquee display of a character string.
The specified string is displayed 1 character at a time at the interval specified in uwait. After the string is displayed to the end, display pauses for the time specified by rwait, and the string is then displayed again from the beginning.
[Attribute]


    
    
        format
    
    


This attribute specifies the display pattern for the marquee. FIG. 62A shows the attribute values.

    
    
        repeat
    
    


This attribute specifies how many times the marquee is displayed. FIG. 62B shows the attribute values.

    
    
        uwait
    
    


This attribute specifies the interval waited to display each character in milliseconds. FIG. 62C shows the attribute values.

    
    
        rwait
    
    


This attribute specifies how long to wait after the end of the string is displayed in milliseconds. FIG. 62D shows the attribute values.

    
    
        lang
    
    


This attribute specifies display language. If omitted, the current setting is used. FIG. 62E shows the attribute values.
[Example] FIG. 62F shows a sample XML document.
<clock>
This message displays the time in the bottom right corner of the display.
The displayed time is the local time managed by the OS of the printer 5.
[Example] FIG. 63 shows a sample XML document.
<clear>
This message clears the display of the current window.
If a window does not exist, the whole display is cleared.
[Example] FIG. 64 shows a sample XML document.
<reset>
This message resets the display. Resetting the display results in the following.

    
    
        All character strings are cleared, and all registered windows are discarded.
        The cursor returns to the default state and moves to the origin of the display.
        Display blinking and display brightness return to the default settings.
    
    


[Example] FIG. 65 shows a sample XML document.
<command>
This message executes a desired ESC/POS command.
The desired command is specified by a hexadecimal string.
[Example] FIG. 66 shows a sample XML document.
Message Data for a POS Keyboard is described next.
<type>onkeypress</type>
[Response]
This message returns input data from a POS keyboard to the application. FIG. 67A shows sub-elements.
(Character strings in received data)
The character strings shown in FIG. 67B are escaped.
[Example] FIG. 67C shows an example of a response.
<type>setprefix</type>
This message specifies the key code used to determine the start of a character string to detect input from the POS keyboard. If a key code specified by this message is input, the character string from then until the Enter key is pressed is returned in the onstring message.
This is used, for example, to substitute input from the POS keyboard for barcode input. To stop the onstring message, send a setprefix message without a keycode.
[Request]
This message specifies the key code used to determine the start of a character string to detect input from the POS keyboard. FIG. 68A shows sub-elements.
[Example] FIG. 68B shows an example of a request.
<type>onstring</type>
[Response]
This message returns input data from the POS keyboard to the application.
This message reports detection of input from any one of the key codes specified with setprefix to Enter. The detected key code information is acquired in the argument in addition to the input sequence of characters. FIG. 69A shows sub-elements.
(Character Strings in the Received Data)
The strings shown in FIG. 69B are escaped.
[Example] FIG. 69C shows an example of a response.
Message Data for a Serial Device is described next.
<type>sendcommand</type>
[Request]
This message sends commands to the serial device. FIG. 70A shows sub-elements.
[Example] FIG. 70B shows an example of a request.
<type>oncommandreply</type>
[Response]
This message returns data from the serial device to the application. FIG. 71A shows sub-elements.

    
    
        status
    
    


FIG. 71B shows the attribute values.
[Example] FIG. 71C shows an example of a response.
The device control script 502 is described next.
Programming is described first.
FIG. 72 describes using a device control script.
By using the device control script API provided by the device control function of the invention, data processing by a device can be customized and new devices can be used from the application 31.
As shown in FIG. 72, a device control script 502 has a DeviceConnection object 503 and a ClientConnection object 504. In FIG. 81, devices of the highly functional printer 5 are collectively represented by device 20.
When XML data (Request) containing the open_device message described above is sent, the socket interface 500 of the printer 5 receives the XML data. The socket interface 500 then passes the received data to the device service interface 501. The device service interface 501 then instantiates an object so that the device control script corresponding to the device requested by the open_device message can be used. The device 20 can then be controlled through the instantiated object.
[Device Control Script Object]
The objects shown in FIG. 73 are then passed to the device control script 502 from the device service interface 501. By using the device connection (DeviceConnection) object 503 and client connection (ClientConnection) object 504, the device control script 502 can communicate with the application 31 and device 20.
Functions that use device control script objects are described next.
The following functions can be used using device control script APIs.

    
    
        Desired events of application 31 side device objects can be called.
        Data can be sent to a device.
        Generated data can be received from the device.
    
    


The configuration of a device control script is described next.
A device control script is coded to include the following conditions.

    
    
        The code required for device control must be contained in a single file.
    
    


(Only one file can be registered when configuring a device using the TMNetWebConfig utility.)

    
    
        The part of the file name up to the first dot “.” and the constructor name must be the same.
    
    


(Example) file name: Keyboard_Generic.ver1.0.js→constructor name: Keyboard_Generic

    
    
        Declare exports to externally reference a constructor.
    
    


(Example) exports. Keyboard_Generic=Keyboard_Generic

    
    
        The device control script must have the properties shown in FIG. 74 and FIG. 75. An appropriate name is set using constructor.
    
    


DEVICE_TYPE property (object type: String)
A list of settings is shown in FIG. 74.
DEVICE_GROUP property (object type: String)
A list of settings is shown in FIG. 75.

    
    
        Create an “onDeviceData” method to receive data generated by the device. For details, see the device control script Name object described below.
        Create a method corresponding to the device object method that runs on the application 31. For details, refer to the Any event described below.
    
    


FIG. 76 shows an example of the configuration of a sample device control script 502.
A list of device control script APIs is shown.
The following objects are provided in the device control script API.

    
    
        ClientConnection object (The API list is shown in FIG. 77.)
        DeviceConnection object (The API list is shown in FIG. 78.)
        Device control script Name object (The API list is shown in FIG. 79.)
    
    


The ClientConnection object is described next.
This object is an object passed to the first parameter of the constructor of the device control script 502.

    
    
        send
    
    


This method sends data to a device object that runs on a browser.
[Syntax]
send (event, data);
[Parameters]

    
    
        event: object type: (String)
    
    


This parameter specifies the event name of the device object.

    
    
        data: object type: (Object)
    
    


This parameter specifies the data passed to the device object event.
An example is shown in FIG. 80. In this example, the onkeypress event of the device object is called, and 49 is received from data.keycode and 1 is received from data.ascii using the data parameter of the onkeypress event.
The DeviceConnection object is described next.
This object is an object passed in the second parameter of the constructor of the device control script 502.

    
    
        send
    
    


This method sends data to a serial communication device.
[Syntax]
send (data);
[Parameters]
data: object type: (Buffer)
This parameter specifies the data to send to the device.
The device control script Name object is described next.

    
    
        onDeviceData event (input device that can operate with an HID driver)
    
    


This event receives detected data from a key input device.
Events are described in this format in a device control script 502 for a key input device.
[Syntax]
onDeviceData (event, keycode, ascii);
[Parameters]
event: object type: (Number)
This parameter receives the direction of key operation. For a list of values, see FIG. 81.
keycode: object type: (Number)
This parameter receives the key code. For a list of key codes, see FIG. 3A and FIG. 3B.
ascii: object type: (String)
This parameter receives the character corresponding to the operated key.
If no character corresponds to the key code (such as with the F1 key), undefined is returned.

    
    
        onDeviceData event (serial communication device)
    
    


This event receives data detected from a serial communication device.
Events are described in this format in a device control script 502 for serial communication.
[Syntax]
onDeviceData (data);
[Parameters]

    
    
        data: object type: (Buffer)
    
    


This parameter receives data received from a serial communication device.

    
    
        Any event
    
    


This event receives the results of API execution by a device object that runs on a browser.
[Syntax]
Name specified by callEvent (data);
[Parameters]

    
    
        data: object type: (Object)
    
    


This parameter receives the object specified by the callEvent parameter of the device object.
A program is described next.
[Summary]
As shown in FIG. 82, this program provides the ability to read data with the barcode scanner and print.
[Environment]
Devices

    
    
        printer 5
        barcode scanner 9
    
    


Execution Environment
The following environment is described here.
The work flow for building the program environment is shown in FIG. 83A.
1. Configure the network settings of the printer 5.
Configure the system and printer 5 network settings. The network settings of the printer 5 can be configured using either of the following methods.

    
    
        Configure the Windows network settings on the printer 5.
        Install the TMNet WinConfig utility on an external device (Windows computer) to configure the settings.
    
    


2. Connect the barcode scanner 9 to the printer 5.
Connect the barcode scanner 9 to the printer 5.
3. Configure the barcode scanner
Register the barcode scanner 9 in the printer 5. Registration is done from a web browser.
[Configuring a Barcode Scanner]
Register a barcode scanner 9 to be controlled by Device XML in the printer 5. The barcode scanner 9 is registered and configured using the TMNet WebConfig utility.
FIG. 94A shows an example of the TMNet WebConfig screen.
1. Confirm that the barcode scanner 9 is connected to the printer 5, and turn the printer 5 on.
2. Start the web browser on the computer used for configuring, and input the URL (http://IP address of printer 5/webconfig/).
3. The TMNetWebConfig utility starts. Click on [Web service settings]-[Device registration]-[Key input device] shown in (3) in FIG. 94A.
4. The “Key input device” screen is displayed. Set the items shown in FIG. 94B in the input fields shown in (4) in FIG. 94A, and click [Registration].
5. The registered barcode scanner is displayed in the [Registered key input devices] field in (5) in FIG. 94A.
As described above, a device control system 100 according to this embodiment of the invention has a terminal 3 that executes an application 31, and a printer 5 with a connection panel 60 to which a device connects, connected over a network. The terminal 3 sends XML data generated by the application 31 to the printer 5. The printer 5 receives the XML data sent from the terminal 3 through a socket interface 500. When the terminal 3 sends data requesting administrator information, the printer 5 sends the administrator information of the printer 5 to the terminal 3 using functions of a device service interface 501 and device control script 502. When the terminal 3 sends data requesting device control, the printer 5 controls the device. As a result, devices connected to the printer 5 can be controlled by a terminal 3 connected to the network. The terminal 3 can be any device that can run an application that generates data written in XML. Because XML is highly versatile, many different devices can be used as the terminal 3. Developing applications for the terminal 3 is also simple.
When the terminal 3 requests administrator information by sending data containing an <admin_info> message, the printer 5 returns XML data including the administrator name and/or location stored by the printer 5 to the terminal 3.
When the terminal 3 sends data including a device open request, the printer 5 enables controlling the device, and when the terminal 3 sends data including a device close request, the printer 5 disables control of the controlled device.
The data generated by the application 31 also includes message data that differs for each device connected to the printer 5, or message data common to devices.
When controlling a device requested by data, the printer 5 also instantiates a DeviceConnection object that sends data to the device, and a ClientConnection object that sends data to the terminal 3.
The foregoing embodiment obviously describes one example of the invention, and can be modified and adapted as desired within the scope of the accompanying claims.

## Claims

1. A point-of-sale printer for a point-of-sale (POS) system, the point-of-sale printer comprising:
a first connector configured to connect the point-of-sale printer to a device responsive to device-control commands, the device being external to the point-of-sale printer;
a second connector configured to communicate with a terminal, to receive a markup language request from the terminal, and to send a markup language response to the terminal, the terminal being external to the point-of-sale printer;
a controller configured to interpret the markup language request received from the terminal, and to control the device using appropriate device-control commands to execute the interpreted markup language request, the point-of-sale printer being further configured to encode any response from the device as a markup language response and to send the markup language response to the terminal;
wherein the device-control commands are not a markup language.

2. The point-of-sale printer described in claim 1, wherein
the markup language response includes data denoting a result of device control.

3. The point-of-sale printer described in claim 1, wherein
when the point-of-sale printer receives from the terminal an establish communication markup language request to establishment a communication link with the point-of-sale printer, the point-of-sale printer sends to the terminal a markup language response to the establish communication markup language request.

4. The point-of-sale printer described in claim 1, wherein
in response to the point-of-sale printer receiving from the terminal an open markup language request to open communication with the device connected to the point-of-sale printer, the point-of-sale printer sends to the terminal a markup language response to the open markup language request indicating whether a communication link with the device is established.

5. The point-of-sale printer described in claim 1, wherein
in response to the point-of-sale printer receiving from the terminal a close markup language request to close communication with the device, the point-of-sale printer sends to the terminal a markup language response to the close markup language request indicating whether communication with the device is closed.

6. The point-of-sale printer described in claim 1, wherein the second connector is part of a computer network interface to connect with the terminal over a computer network.