从ASCII到POS、ESC打印指令详解

3,185 阅读2分钟

juejin.cn/post/684490…

对照POS打印机看看:

下面我们详细看看如何打印条形码:

仔细研读如下,客官您看好咯:

格式1和2表示可以使用两种方式打印条码,假设我们打印条码123456

  1. 选择格式1,且使用HEX-16进制打印,则需要输入1D 6B 8[表示CODE128即m]1[d1]2...6[d6]00

注意:[]里面为注释,因为没有输入打印字数长度,需要以最后00表示条码结尾,告诉打印机打印结束。当然你也可以采用格式2,则不要输入00因为已经通过n告知打印机字符长度了。

  1. 或,选择格式2,且使用HEX-16进制打印,则需要输入1D 6B 73[表示CODE128即m]6[表示条码字符数]1[d1]2...6[d6]

  2. 表格里面的合法字符是什么鬼?其实指的是ASCII里面对应的10进制的字符,比如看合法字符【48-57】是什么呢?看图:原来是字符0-9,不是数字哦,而是字符0-9。说明什么呢?肯定是指的是这个CODE11的条码格式只能支持数字字符呀,wiki搜索看看验证。

知道了格式,那么怎么写原生的打印命令呢?看我慢慢道来: 比如我们要打印条形码,只要计算机理解即可,比如打印“CODE 39”使用CODE39如下:

  1. 注意如果需要打印变长的条形码,不能选择EAN8什么的,因为长度限制
  2. 注意CODE39可以是数字和A-Z合法字符

十六进制写法:

\x1b\x40\x1d\x6b\x04\x43\x4f\x44\x45\x20\x33\x39\x00

\x表示HEX,1b=ESC 40=@, 因此=打印机初始化

\x1d\x6b\如表

\x04=04DEC,即CODE39 \x43\x4f\x44\x45\x20\x33\x39\分别是HEX对应的ASCII字符串CODE 39,注意\x20空格也需要哦 \x00表示00

写法1. \x1b\x40\x1d\x6b\x04\x43\x4f\x44\x45\x20\x33\x39\x00

\x表示HEX,1b=ESC 40=@, 因此=打印机初始化

\x1d\x6b\如表

\x04=04DEC,即CODE39 \x43\x4f\x44\x45\x20\x33\x39\分别是HEX对应的ASCII字符串CODE 39,注意\x20空格也需要哦 \x00表示00

ASCII写法:

\x1b@\x1Dk\x04CODE39\x00 \xlb是ESC,@,\x1D是GS,k,\x04十六进制的4,这里要注意!NULL是\x00

十进制写法:不行!

混合写法: \x1b@\x1Dk\x04\x43\x4f\x44\x45\x20\x33\x39\x00

总结:最好的写法还是:

\x1b@\x1Dk\x04CODE39\x00

可读性好!

看到现在基本明白了,如果完全需要把字符串转译成HEX比较麻烦,因此还是用下面的做法。

指令详解

reference.epson-biz.com/modules/ref…