zoukankan      html  css  js  c++  java
  • 小票打印机指令集封装(支持EPSON指令)

    最近写了一些关于小票打印机的程序,不难,但是记录下来,作为足迹吧。
    现在市场上的小票机基本都支持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 + "
    
    
    
    
    
    ";
    			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 += "********************倍数放大********************
    ";
    		
    		printContent += "纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.longitudinalDouble();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.transverseDouble();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.bothDouble();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "********************加粗加粗********************
    ";
    		
    		printContent += "纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.longitudinalDouble();
    		printContent += PrinterCmdUtils.boldOn();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.boldOff();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.transverseDouble();
    		printContent += PrinterCmdUtils.boldOn();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.boldOff();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.bothDouble();
    		printContent += PrinterCmdUtils.boldOn();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.boldOff();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "********************改变字体********************
    ";
    		
    		printContent += "改变字体(仅支持英文,数字)
    ";
    		printContent += PrinterCmdUtils.fontB();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.fontA();
    		printContent += "
    ";
    		
    		printContent += "纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.longitudinalDouble();
    		printContent += PrinterCmdUtils.fontB();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.fontA();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.transverseDouble();
    		printContent += PrinterCmdUtils.fontB();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.fontA();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.bothDouble();
    		printContent += PrinterCmdUtils.fontB();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.fontA();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "********************反显打印********************
    ";
    		
    		printContent += "纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.longitudinalDouble();
    		printContent += PrinterCmdUtils.reversePrint();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.reverseCancel();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.transverseDouble();
    		printContent += PrinterCmdUtils.reversePrint();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.reverseCancel();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.bothDouble();
    		printContent += PrinterCmdUtils.reversePrint();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.reverseCancel();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "********************汉字间距1*******************
    ";
    		
    		printContent += "纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.longitudinalDouble();
    		printContent += PrinterCmdUtils.margin1();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.marginCancle();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.transverseDouble();
    		printContent += PrinterCmdUtils.margin1();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.marginCancle();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.bothDouble();
    		printContent += PrinterCmdUtils.margin1();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.marginCancle();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "********************汉字间距2*******************
    ";
    		
    		printContent += "纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.longitudinalDouble();
    		printContent += PrinterCmdUtils.margin2();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.marginCancle();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.transverseDouble();
    		printContent += PrinterCmdUtils.margin2();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.marginCancle();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";
    		
    		printContent += "横向,纵向放大两倍(汉字,英文,数字都支持)
    ";
    		printContent += PrinterCmdUtils.bothDouble();
    		printContent += PrinterCmdUtils.margin2();
    		printContent += "我是中文
    I'm english
    54123456
    ";
    		printContent += PrinterCmdUtils.marginCancle();
    		printContent += PrinterCmdUtils.ZoomCancel();
    		printContent += "
    ";*/
    		
    		print(ip, printContent);
    	}
    	
    }
  • 相关阅读:
    java将一个或者多个空格进行分割
    Oracle decode()函数
    javascript 匿名函数和模块化
    javascript Math函数
    javascript 数组Array排序
    jQuery 获取屏幕高度、宽度
    fastJson 转换日期格式
    QNX Development Tools Based on Eclipse IDE
    Eclipse equinox implementation of OSGi
    Eclipse SWT
  • 原文地址:https://www.cnblogs.com/aheizi/p/4792576.html
Copyright © 2011-2022 走看看