zoukankan      html  css  js  c++  java
  • EPL II 编程打印

    搬运地址: https://www.cnblogs.com/springsnow/p/11394587.html

    一、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);
        }
    }
  • 相关阅读:
    SAP S/4HANA extensibility扩展原理介绍
    SAP CRM系统订单模型的设计与实现
    使用nodejs代码在SAP C4C里创建Individual customer
    SAP Cloud for Customer Account和individual customer的区别
    Let the Balloon Rise map一个数组
    How Many Tables 简单并查集
    Heap Operations 优先队列
    Arpa’s obvious problem and Mehrdad’s terrible solution 思维
    Passing the Message 单调栈两次
    The Suspects 并查集
  • 原文地址:https://www.cnblogs.com/lab-zj/p/14066326.html
Copyright © 2011-2022 走看看