M-S Cash Drawer A794 User Manual

Page 116

Advertising
background image

A794 Owner’s Guide

Chapter 6: Programming Information

December 1999

111

Rules for Using Real Time Commands

Three situations must be understood when using real time commands.

First, the printer executes the Real Time command upon receiving it and will transmit
status regardless of the condition of the DSR signal.

Second, the printer transmits status whenever it recognizes a Real Time Status
Transmission command sequence, even if that sequence happens to occur naturally
within the data of another command, such as graphics data.

In this case the sequence will also be handled correctly as the graphics data it is
intended to be when the graphics command is executed from the buffer.

Third, care must be taken not to insert a Real Time command into the data sequence of
another command that consists of two or more bytes.

In this case the printer will use the real time command sequence bytes instead of the
other command’s parameter bytes when finally executing that other command from the
buffer; the other command will NOT be executed correctly.

These three situations generally preclude use of standard DOS drivers for the serial
communication ports when using real time commands.

Moving Data through the Buffer

Applications should not let the buffer fill up with Real Time commands when the
printer is busy at the RS-232C interface. A busy condition at the RS-232C interface can
be determined by bit 3 of the response to 1D 05, or 1D 04 1, or 10 04 1. The reason for a
particular busy condition can be determined by other responses to 1D 04 n or 10 04 n.

Although the printer responds to Real Time commands when it is busy, it will place
them into the buffer behind any other data there, and flush them out in the order in
which they were received. When the printer is busy due simply to buffer full (that is, it
can’t print data as fast as it can receive it), then data continues to be processed out of the
buffer at approximately print speed and the Real Time commands will eventually get
flushed out.

When the printer is busy due to an error condition, then data stops being processed of
the buffer until the condition clears one way or another. In either case, but more quickly
in the case of an error condition, the buffer can fill with Real Time commands.

When the DLE (0x10) sequences are being used, the last byte stored when the buffer fills
up could be the DLE (0x10) code, with no room for the subsequent EOT or ENQ. When
this lone DLE (0x10) byte is finally processed out of the buffer it will be interpreted as a
Clear Printer command.

Similarly, when the GS (1D) sequences are being used, the last byte stored when the
buffer fills up could be the GS (1D) code, with no room for the subsequent EOT or ETX
or ENQ. When this lone GS (1D) byte is finally processed out of the buffer it will use the
next byte, whatever it is, as the second byte in its GS (1D) sequence.

To guard against this situation, the application must determine the cause of a busy
condition and take appropriate action or pace the Real Time commands to avoid filling
the buffer. There is a minimum of 256 bytes available in the printer’s buffer when it goes
busy.

Advertising