今天有时间,就整理一下关于java控制热敏POS打印机的一些注意事项,不然怕以后会忘记。
所谓热敏POS打印机,就是小超市的小票打印机。对于此打印机,我也只是半懂而已,如以下说的不对的地方,还请指正。
POS打印机的指令集好像来自于日本的标准。 因为我使用的几款POS打印机,都是能识别日本标准的指令的。
看打印机指令集的时候,相信很多人看不懂。但其实很容易理解的,举以下例子:
ESC c 4 n 选择打印纸传感器以停止打印
[格式] ASCII码 ESC c 4 n
十六进制码 1B 63 34 n
十进制码 27 99 52 n
[范围] 0 ≤ n ≤255
如上指令可以用来停止打印。这个指令怎么理解呢? ESC这个指令如果用十六进制码表示,那么指令为1B(或者C的表式方法0x什么),十进制表示就是27. 后在依次推下去,n是可变的变量,例如n在十进制中,如果值为0表示禁止打印,1表示允许。 具体n的指令为下图:
看懂了吗?
那么我这里写一个java 切纸指令的方法,十进制表示:
/**切纸命令*/
public static byte[] getCutPaperByte(){
byte [] buffer = new byte[5];
buffer[0]='\n';//命令必须是单行
buffer[1]=29;
buffer[2]=86;
buffer[3]=66;
buffer[4]=1;
return buffer;
}
这里说明一下: 传给打印机的指令必须在一行的开头,否则将不能识别为指令。指令可加入到要打印文本的末尾,能小票机自动切纸,是不是很人性化呢? 还有更多好玩的指令,如警告声、没纸的时候提示等等。
另外android手机、平板控制POS打印机的的指令也是一样的哦。 呵呵
更加详细的已放入自己网盘