I am trying to send ESC/POS commands on a thermal printer. But whenever i send them thermal printer prints them as a text instead of executing them as commands. I am writing these commands in a .prn file and whenever i executes lp command to print a file these .prn file also get printed but as a text.
I tried following method to write ESC/POS command in .prn file :
1) PRINT #1, CHR$(&H1D);"h";CHR$(80);
PRINT #1, CHR$(&H1D);"k";CHR$(2);
PRINT #1, "48508007";CHR$(0);
PRINT #1, CHR$(&HA);
PRINT #1, CHR$(&H1D);"k";CHR$(67);CHR$(12);
PRINT #1, "48508007";
2) <ESC>(0x1B) <L>(0x4C)
<GS>(0x1D) <k>(0x6B) 73 2 4 5 6 7 8 9 NUL
<FF>(0x0c)
3) <ESC L>
<GS k 73 2 4 5 6 7 8 9 NUL>
4) "ESC L" "GS k 73 2 4 5 6 7 8 9 NUL" "FF" I also tried sending ESC/POS command using C program as:
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
int main() {
int fd,ret;
char buf[] = "HELLO"
fd = open("/dev/bus/usb/003/007",O_WRONLY);
if(fd < 3) {
perror(open failed);
}
ret = write(fd,&buf,sizeof(buf));
if(ret == -1) {
perror("write failed");
}
}
Upon execution the above code gives error as:
write failed: invalid arguments
If you sure about the hex codes, you can use your favourite hex editor to make a proper command prn file. Or you can pick one from here: Need a good hex editor for Linux
Why hex editor? Because all other way including some hidden content (like new line 0x0d) and the printer cannot understand the command sequency. Probably other problem is the program what you use to deliver a command - some program sometimes add other content or make some conversation when sending it to the printer (like extra page down). Be sure - your program cannot do this.
My way of problem solving this time: