Is this even remotely interesting?
I work in retail point-of-sale. Recently I troubleshot an issue with a
receipt printer, and it required "refamiliarizing" myself with some
concepts I haven't really kept on top of the past few years, and writing
the short doc below:
A receipt printer must have some way to prevent the computer from
sending data faster than the printing device can handle it. The Epson
TM-H6000III employs 2 methods to prevent this from happening:
1.
Either DTR/DSR (hardware) or XON/XOFF (software) flow control which
involves sending special control characters from the computer to the
printer and back to manage what gets printed and when. (Epson default is
DTR/DSR. WinXP default is none.)
2. A print buffer into which the
printer stores incoming data yet to be processed. (Epson default is 4kb)
In
addition to the above, both the computer and the printer also manage
their own baud rates, the speed at which the computer sends it's data
and the speed at which the printer receives it. Baud rate can be loosely
defined as the number of characters per second that a device can send to
or receive from. (Epson default is 19200, WinXP default is 9600)
Because
of the Epson TM-H6000III's large 4kb buffer, there is rarely any need to
invoke flow control, but this may actually confuse configuration and
troubleshooting efforts. This is because flow-control may be set
incorrectly, and (should it be and instead of but here?) because of the
printer's large buffer, flow control only rarely gets invoked - only
rarely enough to cause trouble.
A good example of incorrect
flow-control settings would be the default values for the Epson
TM-H6000III and Windows XP. At their defaults and with a large print
job, the buffer might fill up before Windows is finished sending the
entire job. The Epson TM-H6000III would send a control code to Windows
to "stop sending information for a second", but because Windows' flow
control is set to "off", it would blindly continue to send data to the
printer, overflowing the printer's buffer and causing printer errors.
And
with respect to baud rate, on the surface, setting the printer's
"receive" baud rate to 19200 characters per second vs. the computer's
"send" baud rate of only 9600 characters per second would seem like a
good idea to prevent the printer from getting overwhelmed, but keep in
mind that serial printer communications are bi-directional, and setting
baud rate in this way actually means you may overwhelm the PC!
Generally, both the printer and the PC should be set to the same baud
rate, and the rule of thumb is to use the slowest acceptable baud rate,
because "more slow" equals "more stable".
Note:
Since at 9600 characters per second you could literally deliver more
than 6 feet of store receipt to the printer in only one second...9600
baud is a more than adequate baud rate setting for both the PC and the
printer.
So, as you now can see, stable and reliable receipt printing
can easily be achieved if certain configuration choices are made
beforehand:
1. Turn off the Epson TM-H6000III printer.
2. Open up
the dip switch panel underneath the Epson TM-H6000III:
a. Set DSW 1-7
from ON to OFF and DSW 1-8 from OFF to ON (Baud Rate to be 9600)
3.
Hold down the "Feed" button and turn the printer back on enter Self-Test
mode and to verify your settings.
4. To exit Self-Test mode. Turn the
printer off, and then back on.
5. In Windows Device Manager Settings
for COM1:
a. Verify baud rate is set to 9600
b. Set flow control
to be "Hardware"
Happy printing!
The long and short of it is, I found this pretty interesting. Is it just me?