I need to print receipts on an EPSON TM-T88V (POS printer), connected to USB.
The printer is defined in macOS and has a valid driver.
I can print using classic printing Xojo functions (pinter setup, graphics, drawtext …) but a receipt with 5 text lines takes about 4 sec to print. Looks like it’s printing in graphic mode.
It’s way too long.
With another POS software the receipt is printed sub-second, same system, same printer, same driver…
I’m wondering if using Epson ESC/POS commands would improve that, but how can I do that ?
Sending ESC commands using graphics.drawtext doesn’t seems to work.
Thanks.
But the printer is not a serial printer with a serial to usb adapter, the printer is connected with USB only.
There is a serial port on the printer, but it’s not used.
How do I get the serial port ?
Is there a way to print to the URI ?
This is the printer config (french):
EPSON TM-T88V :
État : Inactif
Serveur d’impression : Local
Version du gestionnaire : 1.2
Par défaut : Non
Partage d’imprimantes système : Oui
Partagé : Non
URI : usb://EPSON/TM-T88V?serial=405139460116160000
PPD : EPSON TM-T88V
Version du fichier PPD : 1.2
Version PostScript : (3010.000) 0
Version CUPS : 2.3.1 (cups-483.8)
Assistance numérisation : Non
Commandes de l’imprimante : none
Thanks. I have other devices using usb/serial adapters (weight scales), and I know it works, but I can’t force my customers to buy adapters as their actual POS software prints easily on this printer.
Shout if you get stuck with that. I used to love messing about with these.
At heart, and ESC command is
chrb(27) followed by one or more other characters
If all you want is text, you will probably get away with
Doing that in ESC commands means essentially creating your own graphics printer driver.
The printer will work in either 9 pin or 24 pin emulation: probably 9 pin
In 9 pin mode,you can print columns of 8 pixels as a stream of bytes.
The pixels are represented as bits in the bytes.
So if you are familiar with bits, a letter A looks like this:
and you print that by sending the bytes that represent the first column, then the next then the next
Your original picture will be in color.
The printer is likely to be black and white only.
The small size means a huge loss of detail too.
So unless you fancy using some library to reduce the image to black and white dithered, at a tiny size, you are really better off going back to using a ‘normal’ printer driver already written for you, and living with the speed.
You did start by suggesting you only needed simple text and wondering why it was slow.
but a receipt with 5 text lines takes about 4 sec to print. Looks like it’s printing in graphic mode. It’s way too long.
A picture isnt ‘5 text lines’
Simple text is fast because the printer uses font shapes already in memory- it doesnt need you to send the bitmaps to it.
Thanks for this long answer.
I understand what you say but I think (hope) there’s an easier way.
My customer has a POS software running on macOS where they can just select any kind of picture (png, jpeg), select scale to fit or real size, and this image is printed on the receipt. Real, I mean real fast, about a sec.
When I print everything (but the picture) using ESC/POS commands, my ticket is printed in less than a second.
I found functions hereand here in C# converting a bitmap file to ESC data, I’ll see if I can convert it to Xojo.