我现在需要打印榜单,采用的是epson lq300k,由于榜单大小问题,所以打印前最好让其进行一次退纸进纸过程,这样打印出来的位置就比较好,可是在程序中如何向打印机发送指令让它操作呢?
我找了一个星期的论坛了 大概发现是采用esc指令方式,于是采用api函数,const int OPEN_EXISTING = 3;
        string prnPort = "LPT1";
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        private static extern IntPtr CreateFile(string lpFileName,
        int dwDesiredAccess,
        int dwShareMode,
        int lpSecurityAttributes,
        int dwCreationDisposition,
        int dwFlagsAndAttributes,
        int hTemplateFile);        public POSPrinter(string prnPort)
        {
            this.prnPort = prnPort;//打印机端口   
        }
        public string PrintLine(string str)
        {            IntPtr iHandle = CreateFile(prnPort, 0x40000000, 0, 0, OPEN_EXISTING, 0, 0);
            if (iHandle.ToInt32() == -1)
            {
                FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite);
                StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);   //写数据   
                  sw.write("ESC @");
                sw.Write("ESC J");
                sw.Close();
                fs.Close();
                return "";
            }
可是打印机没有任何反应,哪怕我是打印普通的问题不是esc指令,打印机也没有反应,请问问题出在哪里?是我发送的问题吗?还是我连接出了问题?
第二个问题:esc指令中 进纸 退纸的指令是什么?
恳求高手了,请写出较详细的代码。

解决方案 »

  1.   

    错了个地方
    if (iHandle.ToInt32() == -1) 
    应该是if (!iHandle.ToInt32() == -1) 
      

  2.   

    加油啊  加油啊 UP UP
      

  3.   

    啊,谢谢收到了,是指令条目,谢谢
    那你有c# 或者其他.net语言的代码范例吗?我想实现通过电脑控制
    我用vb发送指令可以使打印机动作,可是我想在.net语言环境下实现,采用我原先的代码没有办法,你有这方面的代码吗?
    万分感谢
      

  4.   

    可以和epson公司联系一下。他们可以免费提供一本开发手册的,里面有开发指令的。以前VB的可以直接发送指令到串口打印机器上去的。还可以控制字体的大小。C#就不知道了。
      

  5.   

    我也要一份指定啊
    谢谢楼主
    [email protected]
      

  6.   

    楼主给也给我发一份吧,[email protected]   谢谢楼主。
      

  7.   

    楼主给也给我发一份吧,[email protected] 谢谢楼主。