Epson Receipt Printer Escape Codes

We are using a software product for Utility Billing called Springbrook (   They sold the product as it was compatible with Epson printers.  They recommend Ithaca, but also have problems with those.

The software allows you to customize the receipts and endorsements.  The receipts work fine, but do not require any control code programming of the Epson TM-H6000III Receipt printer.   The endorsement does not work.   It prints on the receipt correctly and requires control code programming to switch to the endorse / MICR section of the printer.  

Per the Epson TM-6000III Specification Manual, the following commands are appropriate:

Transmit FS a 0 <n>
(Mechanically switches to MICR mode and waits for a personal check to be loaded.  The SLIP LED blinks.
I programmed: [Control Code <28>] [Control Code <97>] [Control Code <48>]

Transmit GS ( G 2 0 48 68
(Select the back side of the check)
I programmed: [Control Code <29>] [Control Code <40>] [Control Code <71>] [Control Code <50>] [Control Code <48>] [Control Code <52>][Control Code <56>] [Control Code <54>][Control Code <56>]

Transmit GS ( G 2 0 84 1
(Select the print starting position on the back side of the check)
I programmed: [Control Code <29>] [Control Code <40>] [Control Code <71>] [Control Code <50>] [Control Code <48>] [Control Code <56>][Control Code <52>] [Control Code <49>]

Some background on "[Control Code <#>]"
- This is entered in to a configuration window provided in the software (see below)
- The "[Control Code <#>]" is the method to pass ASCII through the configuration window
- I tested [Control Code <10>] and a line feed occurred
- I tested [Control Code <27>][Control Code <33>][Control Code <128>]
-- This should have turned on underline mode ESC ! 128.   It turned on emphasized.
- I tested other ESC code sequences.  Some worked.  Most did not.

The full set of coding I entered (without client info) is

[Control Code <28>] [Control Code <97>] [Control Code <48>]

[Control Code <29>] [Control Code <40>] [Control Code <71>] [Control Code <50>] [Control Code <48>] [Control Code <52>][Control Code <56>] [Control Code <54>][Control Code <56>]

[Control Code <29>] [Control Code <40>] [Control Code <71>] [Control Code <50>] [Control Code <48>] [Control Code <56>][Control Code <52>] [Control Code <49>]

[Full UB Account No]  [Simple Check Amt]
[Receipt Date]  [Receipt Time]

[Control Code <FF>]

I think I have the right sequence of commands for the TM-H6000III.  My conclusion is that the steps from the coding through the Springbrook software to the printer is not as expected.

I contacted the Springbrook support and they would not provide support for Epson and had little knowledge on their recommended Ithaca.

I contacted Epson POS support and they said to contact a programmer.  

Can anyone verify the command sequence?

Can anyone share any experience with Springbrook?

Screen Capture of Endorse Config
Stephen HopkinsLead Cybersecurity EngineerAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I don't have knowledge or experience of using Epson printers, and (as Epson appears to require a non-disclosure agreement in order to access recent technical documents regarding their ESC/P and ESC/P2 programming languages, I probably won't add much to my knowledge.

So just a few comments:

It may be that your software product only allows certain 'raw' control sequences to be inserted, in order to avoid clashes with the controls generated by the application, and rejects or modifies others?
I have an old copy of an ESC/P2 reference, and it doesn't make any mention of control sequences which start with <FS> or <GS> control codes (decimal 28 and 29 respectively).
Your description of the "switches to MICR mode ..." sequence shows it as FS a 0 <n>, but your interpretation only shows the decimal codes for the <FS>, a and 0 characters; what is the <n> supposed to be?
I have not used this printer, I only have programmed the TM-T85, TM-T88 and the TM-L60 series. In ALL cases the command ESC ! 128 (or 1B 21 80) turns on underline mode. Emphasis is 1B 21 08, which is very similar. When I print these from Windows I don't use an Epson Driver but use a simple universal driver and print them raw.

I would suggest trying out a small amount of text in underline mode and using a serial port monitor to record exactly what is being sent to the device.

I don't remember seeing this device being drivern in IBM Emulation mode (that would make underlined into 1B 5F 01 for example), so I suspect it is not that. It is probably that the sequences are wrong, or being interferred with, or indeed that the device is broken (which would not be the first time that I have had that!)

I have used the monitor from Eltima Software which has a 14 day trial.
Gary PattersonVP Technology / Senior Consultant Commented:
When you send [Control Code <28>] [Control Code <97>] [Control Code <48>], does the "SLIP" LED blink as expected?
IT Pros Agree: AI and Machine Learning Key

We’d all like to think our company’s data is well protected, but when you ask IT professionals they admit the data probably is not as safe as it could be.

Stephen HopkinsLead Cybersecurity EngineerAuthor Commented:
The "SLIP" LED does not blink as expected.  

I have no details on what the <n> is for switching to MICR mode.  I have not found reference to it in the specifications yet.   I did try some numbers to see what would happen.  No changes in performance.  I tried 0, 1, 128 and 256.   My thinking the n parameter is probably a 0 or 1 indicating on or off, front or back, etc.

The specifications do say the printer should respond with an under line for ESC ! 128.

I will get a monitor on the printer and check.   Maybe a bad printer, but was endorsing with a different vendor's software.   Unless the printer broke from one software to the next, I think the printer should be ok.
Gary PattersonVP Technology / Senior Consultant Commented:
Looking at the ESC/POS  Application Programming Guid 10.04, the FS a 0 command is obsolete, and may not be supported in newer hardware.  

GS ( G is the recommended command.
Stephen HopkinsLead Cybersecurity EngineerAuthor Commented:
I did try a GS ( G 2 0 48 68 with no success.  I can go back in and try just a GS ( G
Gary PattersonVP Technology / Senior Consultant Commented:
Did you look at the programming example for GS ( G on p169 of the manual (my version at least)?  It shows an example that executes Function 80 and 81, and then a comment to wait for insertion notification before executing function 82, and then function 48.

PRINT #1, CHR$(&H1D);”(G”;CHR$(2);CHR$(0);CHR$(80);CHR$(4); ← Select slip for active sheet [function 80]
PRINT #1, CHR$(&H1D);”(G”;CHR$(2);CHR$(0);CHR$(81);CHR$(48); ← Starts pre-process for cut sheet insertion
[function 81]
<Do confirmation for cut sheet inserting: (example: "Waiting process" for the ASB which indicates "TOF/BOF sensor : Paper
PRINT #1, CHR$(&H1D);”(G”;CHR$(2);CHR$(0);CHR$(82);CHR$(48); ← Pre-process for cut sheet insertion ends
[function 82]
PRINT #1, CHR$(&H1D);”(G”;CHR$(2);CHR$(0);CHR$(48);CHR$(4); ← Specifies slip as the paper type and the
face to be printed. [function 48]
PRINT #1, CHR$(&H1D);”(G”;CHR$(2);CHR$(0);CHR$(84);CHR$(1); ← Move to a print starting position
[function 48]
PRINT #1, ”AAAAA”;CHR$(&HA); ← Print on the front side of the slip
PRINT #1, CHR$(&H1D);”(G”;CHR$(2);CHR$(0);CHR$(48);CHR$(68); ← Select the back of the slip [function 48]
PRINT #1, CHR$(&H1D);”(G”;CHR$(2);CHR$(0);CHR$(84);CHR$(1); ← Move to a print starting position
[function 84]
PRINT #1, ”BBBBB”;CHR$(&HA); ← Print on the back of the slip
PRINT #1, CHR$(&H1D);”(G”;CHR$(2);CHR$(0);CHR$(85);CHR$(48); ← Eject the slip
[function 85]

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Stephen HopkinsLead Cybersecurity EngineerAuthor Commented:
The problem is that the software vendor did not directly program for Epson and the GUI interface for sending control codes is ONLY designed for Ithaca printers.   I checked the printer self tests and all passed.  I checked the printer with other applications and it works.  I think the solution is programming the codes in the software as suggested.   However, the vendor is not going to allow that.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Printers and Scanners

From novice to tech pro — start learning today.