サーマル プリンターで ESC/POS コマンドを送信しようとしています。しかし、それらを送信するたびに、サーマルプリンターはそれらをコマンドとして実行するのではなく、テキストとして印刷します。これらのコマンドを .prn ファイルに書いています。lp コマンドを実行してファイルを印刷すると、これらの .prn ファイルもテキストとして印刷されます。
ESC/POS コマンドを .prn ファイルに書き込むには、次の方法を試しました。
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」 Cプログラムを次のように使用してESC / POSコマンドを送信しようとしました:
#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");
}
}
上記のコードを実行すると、次のようなエラーが発生します。
write failed: invalid arguments