小票打印机指令集封装(支持EPSON指令)
2015-09-08 18:30
477 查看
最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧。
现在市场上的小票机基本都支持EPSON指令。指令集文档
对指令集进行了自己的封装,方便以后调用:
将byte[]转化成了String,方便拼接字符串。
下面是测试方法。
package aheiziUtil;
现在市场上的小票机基本都支持EPSON指令。指令集文档
对指令集进行了自己的封装,方便以后调用:
package aheiziUtil; import java.io.UnsupportedEncodingException; public class PrinterCmdUtils { public static final byte ESC = 27;//换码 public static final byte FS = 28;//文本分隔符 public static final byte GS = 29;//组分隔符 public static final byte DLE = 16;//数据连接换码 public static final byte EOT = 4;//传输结束 public static final byte ENQ = 5;//询问字符 public static final byte SP = 32;//空格 public static final byte HT = 9;//横向列表 public static final byte LF = 10;//打印并换行(水平定位) public static final byte CR = 13;//归位键 public static final byte FF = 12;//走纸控制(打印并回到标准模式(在页模式下) ) public static final byte CAN = 24;//作废(页模式下取消打印数据 ) //------------------------换行----------------------------- /** * 换行 * @param lineNum要换几行 * @return */ public static byte[] nextLine(int lineNum) { byte[] result = new byte[lineNum]; for(int i=0;i<lineNum;i++) { result[i] = LF; } return result; } //------------------------加粗----------------------------- //选择加粗模式 public static String boldOn() { byte[] result = new byte[3]; result[0] = ESC; result[1] = 69; result[2] = 0xF; return new String(result); } //取消加粗模式 public static String boldOff() { byte[] result = new byte[3]; result[0] = ESC; result[1] = 69; result[2] = 0; return new String(result); } //------------------------对齐----------------------------- /** * 左对齐 * @return * @throws UnsupportedEncodingException */ public static String alignLeft() { byte[] result = new byte[3]; result[0] = ESC; result[1] = 97; result[2] = 0; return new String(result); } /** * 居中对齐 * @return * @throws UnsupportedEncodingException */ public static String alignCenter() { byte[] result = new byte[3]; result[0] = ESC; result[1] = 97; result[2] = 1; return new String(result); } /** * 右对齐 * @return */ public static byte[] alignRight() { byte[] result = new byte[3]; result[0] = ESC; result[1] = 97; result[2] = 2; return result; } /** * 水平方向向右移动col列 * @param col * @return */ public static byte[] set_HT_position( byte col ) { byte[] result = new byte[4]; result[0] = ESC; result[1] = 68; result[2] = col; result[3] = 0; return result; } /** * Select Font A * ESC M n * @return bytes for this command * @throws UnsupportedEncodingException */ public static String select_fontA() { byte[] result = new byte[3]; result[0] = ESC; result[1] = 77; result[2] = 0; return new String(result); } /** * Select Font B * ESC M n * @return bytes for this command * @throws UnsupportedEncodingException */ public static String select_fontB() { byte[] result = new byte[3]; result[0] = ESC; result[1] = 77; result[2] = 1; return new String(result); } /** * Select Font C ( some printers don't have font C ) * ESC M n * @return bytes for this command * @throws UnsupportedEncodingException */ public static String select_fontC() { byte[] result = new byte[3]; result[0] = ESC; result[1] = 77; result[2] = 2; return new String(result); } //反显打印 public static String reversePrint(){ byte[] result = new byte[3]; result[0] = GS; result[1] = 66; result[2] = 1; return new String(result); } //取消反显 public static String reverseCancel(){ byte[] result = new byte[3]; result[0] = GS; result[1] = 66; result[2] = 0; return new String(result); } /****************************下划线*******************************/ //下划线一点宽(不支持汉字) public static String underlineOne(){ byte[] result = new byte[3]; result[0] = ESC; result[1] = 45; result[2] = 1; return new String(result); } //下划线两点宽(不支持汉字) public static String underlineTwo(){ byte[] result = new byte[3]; result[0] = ESC; result[1] = 45; result[2] = 2; return new String(result); } //取消下划线(不支持汉字) public static String UnderlineCancle(){ byte[] result = new byte[3]; result[0] = ESC; result[1] = 45; result[2] = 0; return new String(result); } /****************************跳格*******************************/ //设置横向跳格位置 public static String Jump(){ byte[] result = new byte[3]; result[0] = ESC; result[1] = 68; result[2] = 0; return new String(result); } /****************************倍数放大*******************************/ //纵向放大两倍(汉字,英文,数字都支持) public static String longitudinalDouble(){ byte[] result = new byte[3]; result[0] = GS; result[1] = 33; result[2] = 1; return new String(result); } //横向放大两倍(汉字,英文,数字都支持) public static String transverseDouble(){ byte[] result = new byte[3]; result[0] = GS; result[1] = 33; result[2] = 16; return new String(result); } //纵向,横向放大两倍(汉字,英文,数字都支持) public static String bothDouble(){ byte[] result = new byte[3]; result[0] = GS; result[1] = 33; result[2] = 17; return new String(result); } //纵向,横向放大取消(汉字,英文,数字都支持) public static String ZoomCancel(){ byte[] result = new byte[3]; result[0] = GS; result[1] = 33; result[2] = 0; return new String(result); } //倍宽,倍高 public static String doubleFont(){ byte[] result = new byte[3]; result[0] = FS; result[1] = 87; result[2] = 1; return new String(result); } //取消倍宽,倍高 public static String doubleCancel(){ byte[] result = new byte[3]; result[0] = FS; result[1] = 87; result[2] = 0; return new String(result); } //字體 public static String fontA(){ byte[] result = new byte[3]; result[0] = ESC; result[1] = 77; result[2] = 0; return new String(result); } public static String fontB(){ byte[] result = new byte[3]; result[0] = ESC; result[1] = 77; result[2] = 1; return new String(result); } //字符集 public static String fontji(){ byte[] result = new byte[3]; result[0] = ESC; result[1] = 82; result[2] = 15; return new String(result); } //字符 public static String fontzidingyi(){ byte[] result = new byte[5]; result[0] = FS; result[1] = 50; result[2] = 1; result[3] = 1; result[4] = 12; return new String(result); } //设置汉字字符左右边距 public static String margin1(){ byte[] result = new byte[4]; result[0] = FS; result[1] = 83; result[2] = 1; result[3] = 1; return new String(result); } //设置汉字字符左右边距 public static String margin2(){ byte[] result = new byte[4]; result[0] = FS; result[1] = 83; result[2] = 2; result[3] = 2; return new String(result); } //设置汉字字符左右边距 public static String marginCancle(){ byte[] result = new byte[4]; result[0] = FS; result[1] = 83; result[2] = 0; result[3] = 0; return new String(result); } //设置行间距1 public static String rowSpacing1(){ byte[] result = new byte[3]; result[0] = ESC; result[1] = 51; result[2] = 1; return new String(result); } //设置行间距2 public static String rowSpacing2(){ byte[] result = new byte[3]; result[0] = FS; result[1] = 51; result[2] = 2; return new String(result); } //设置行间距 public static String rowSpacingCancel(){ byte[] result = new byte[3]; result[0] = FS; result[1] = 51; result[2] = 0; return new String(result); } }
将byte[]转化成了String,方便拼接字符串。
下面是测试方法。
package aheiziUtil;
import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.Socket; import java.net.UnknownHostException; public class TestMain { private static void print(String ip,String printContent) { Socket socket = null; try { socket = new Socket(); socket.connect(new InetSocketAddress(ip, 9100), 4000); System.out.println("CashierDesk=====小票机连接成功,IP:" + ip); OutputStream os = socket.getOutputStream(); // 切纸命令 String text = printContent + "\n\n\n\n\n\n"; byte[] CMD_INIT = { 27, 64 }; os.write(CMD_INIT); os.write(text.getBytes("GB2312")); final byte[] CMD_CUT = { 0x1D, 0x56, 0x01 }; os.write(CMD_CUT); System.out.println("CashierDesk=====小票机打印完成,IP:" + ip); } catch (UnknownHostException e) { System.out.println("CashierDesk=====小票机连接失败,IP:" + ip); e.printStackTrace(); } catch (IOException e) { System.out.println("CashierDesk=====小票机连接失败,IP:" + ip); e.printStackTrace(); } finally { if (socket != null) { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] args) { String ip = "192.168.80.209"; String printContent = ""; printContent += "********************倍数放大********************\n"; printContent += "纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.longitudinalDouble(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.transverseDouble(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.bothDouble(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "********************加粗加粗********************\n"; printContent += "纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.longitudinalDouble(); printContent += PrinterCmdUtils.boldOn(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.boldOff(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.transverseDouble(); printContent += PrinterCmdUtils.boldOn(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.boldOff(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.bothDouble(); printContent += PrinterCmdUtils.boldOn(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.boldOff(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "********************改变字体********************\n"; printContent += "改变字体(仅支持英文,数字)\n"; printContent += PrinterCmdUtils.fontB(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.fontA(); printContent += "\n"; printContent += "纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.longitudinalDouble(); printContent += PrinterCmdUtils.fontB(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.fontA(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.transverseDouble(); printContent += PrinterCmdUtils.fontB(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.fontA(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.bothDouble(); printContent += PrinterCmdUtils.fontB(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.fontA(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "********************反显打印********************\n"; printContent += "纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.longitudinalDouble(); printContent += PrinterCmdUtils.reversePrint(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.reverseCancel(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.transverseDouble(); printContent += PrinterCmdUtils.reversePrint(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.reverseCancel(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.bothDouble(); printContent += PrinterCmdUtils.reversePrint(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.reverseCancel(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "********************汉字间距1*******************\n"; printContent += "纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.longitudinalDouble(); printContent += PrinterCmdUtils.margin1(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.marginCancle(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.transverseDouble(); printContent += PrinterCmdUtils.margin1(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.marginCancle(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.bothDouble(); printContent += PrinterCmdUtils.margin1(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.marginCancle(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "********************汉字间距2*******************\n"; printContent += "纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.longitudinalDouble(); printContent += PrinterCmdUtils.margin2(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.marginCancle(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.transverseDouble(); printContent += PrinterCmdUtils.margin2(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.marginCancle(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n"; printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)\n"; printContent += PrinterCmdUtils.bothDouble(); printContent += PrinterCmdUtils.margin2(); printContent += "我是中文\nI'm english\n54123456\n"; printContent += PrinterCmdUtils.marginCancle(); printContent += PrinterCmdUtils.ZoomCancel(); printContent += "\n";*/ print(ip, printContent); } }
相关文章推荐
- swift怎么解决错误提示 'required' initializer 'init(coder:)' must be...这个问题
- AsyncTask 错误java.lang.IllegalStateException: Cannot execute task: the task has already been executed
- Servlet新特性:注解
- JavaScript权威设计--JavaScript词法结构(简要学习笔记二)
- Linux下VLAN功能的实现
- typedef and pointer
- MapReduce 二级排序
- viewpager动态添加小圆点
- Android 按钮点击切换背景,同时修改文字颜色
- iOS基础知识:Objective-C 之 网络请求
- python 列表生成式、lower()和upper()的使用
- 对可变参数列表的使用
- PHP表单案例
- MAC OSX在视图port哪个程序占用,杀死进程的方法
- Oracle中substr截取字符串并用INSTR范围匹配字符串位置截取
- C++/Java中继承关系引发的调用关系详解
- 可调用对象与function
- const在函数前与函数后的区别
- Mac OS X上使用Wireshark抓包
- 最近公共祖先