• EPL II 编程打印


    一、EPL II 格式及打印测试

    注意N命令前的换行和最后P1后的换行。将此段代码复制到windows记事本里另存为Print.ext,文件名随便,后缀为ext。然后通过cmd控制命令行输入"copy c:print.ext COM1”。然后就可以看到打印机开始打印了,效果不错。


    N
    B300,5,0,1,2,3,40,N,"1234567891123"
    A160,55,0,8,1,1,N,"ALP-122244444444"
    b420,100,Q,"DATAdfdgdfgdf"
    P1

    1. 说明书上说N命令开始前要先输入一行空白行,
          原文:Always send a Line Feed (LF) prior to the N command to ensure that previous data in the command buffer has cleared and the printer is in i tial ized and ready to ac cept com mands.
    2. P命令之后也要加一个空白行,即回车,不然最后的P命令要打印的东西是不打印的,之前的P命令由于有后面的命令,间接等于换行了,所以会照打不误。
    3. 说明书上写P命令是Pp1, [p2],其参数p1是Number of label sets,而参数p2是Number of copies of each label (used in combination with counters to print multiple copies of the same label).
          但我试验下来p1就是要打印的条码的重复次数,而p2无论我怎么改写都没有变换,始终打印最后一个条码。应该是我哪里写错了。但是多用几次P1,每次打一条还是可以起到同样的打印多条条码的效果的。

    下面,给出我打印的条码的例子:


    N
    B60,5,0,1,2,3,40,N,"1234567891123"
    A60,55,0,8,1,1,N,"ALP-1"
    P1
    B60,5,0,1,2,3,40,N,"1234567890123"
    A60,55,0,8,1,1,N,"ALP-2"
    P1
    B60,5,0,1,2,3,40,N,"1234567890123"
    A60,55,0,8,1,1,N,"ALP-3"
    P1

    发送到打印机测试:

    NET USE LPT1 /DELETE
    NET USE LPT1 \192.168.2.166zetl /persistent:yes
    copy c:1.txt lpt1
    copy c:1.txt \192.168.2.167zetl

    二、使用API发送内容进行打印:

    private void button1_Click_1(object sender, EventArgs e)
    {
        string txt = textBox1.Text;
        LPTControl lpt = new LPTControl();
        //string cmd = System.IO.File.ReadAllText("zplII.txt");//zplII.txt里写了条码机的命令
    
        string cmd = Environment.NewLine + "N" + Environment.NewLine
        + "B60,5,0,1,2,3,40,N,"1234567891123"" + Environment.NewLine + "A60,55,0,8,1,1,N,"ALP-5"" + Environment.NewLine + "P1" + Environment.NewLine
        + "B60,5,0,1,2,3,40,N,"1234567891123"" + Environment.NewLine + "A60,55,0,8,1,1,N,"ALP-6"" + Environment.NewLine + "P1" + Environment.NewLine
        + "B60,5,0,1,2,3,40,N,"1234567891123"" + Environment.NewLine + "A60,55,0,8,1,1,N,"ALP-7"" + Environment.NewLine + "P1" + Environment.NewLine;
        
        if (!lpt.Open())
        {
            throw new Exception("未能连接打印机,请确认打印机是否安装正确并接通电源。");
        }
        lpt.Write(cmd);
        if (!lpt.Close())
        {
            if (!lpt.Open())
            {
                throw new Exception("未能连接打印机,请确认打印机是否安装正确并接通电源。");
            }
        }
    }
    
    public class LPTControl
    {
        [StructLayout(LayoutKind.Sequential)]
        private struct OVERLAPPED
        {
            int Internal;
            int InternalHigh;
            int Offset;
            int OffSetHigh;
            int hEvent;
        }
        [DllImport("kernel32.dll")]
        private static extern int CreateFile(
        string lpFileName,
        uint dwDesiredAccess,
        int dwShareMode,
        int lpSecurityAttributes,
        int dwCreationDisposition,
        int dwFlagsAndAttributes,
        int hTemplateFile
        );
    
        [DllImport("kernel32.dll")]
        private static extern bool WriteFile(
        int hFile,
        byte[] lpBuffer,
        int nNumberOfBytesToWrite,
        out int lpNumberOfBytesWritten,
        out OVERLAPPED lpOverlapped
        );
    
        [DllImport("kernel32.dll")]
        private static extern bool CloseHandle(
        int hObject
        );
    
        private int iHandle;
        
        public bool Open()
        {
            iHandle = CreateFile("lpt1:", 0x40000000, 0, 0, 3, 0, 0);
            if (iHandle != -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        
        public bool Write(String Mystring)
        {
    
            if (iHandle != -1)
            {
                int i;
                OVERLAPPED x;
                byte[] mybyte = System.Text.Encoding.Default.GetBytes(Mystring);
                return WriteFile(iHandle, mybyte, mybyte.Length, out i, out x);
            }
            else
            {
                throw new Exception("端口未打开!");
            }
        }
        
        public bool Close()
        {
            return CloseHandle(iHandle);
        }
    }
  • 相关阅读:
    apache的httpclient进行http的交互处理
    Java 基础篇之反射
    死磕 java线程系列之创建线程的8种方式
    Spring Boot(三) 使用Lombok
    Spring Boot (七): Mybatis极简配置
    Spring Boot Thymeleaf 实现国际化
    微项目:一步一步带你使用SpringBoot入门(二)
    SSM框架手动实现分页逻辑(非PageHelper)
    Java 基础篇之集合
    一起来学Java注解(Annotation)
  • 原文地址:https://www.cnblogs.com/springsnow/p/11394587.html
Copyright © 2020-2023  润新知