日期:2014-05-18  浏览次数:21063 次

c# 如何控制针式打印机走纸
我现在需要打印榜单,采用的是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指令中 进纸 退纸的指令是什么?
恳求高手了,请写出较详细的代码。

------解决方案--------------------
指令我又不过在家里,下班后再给你看看把,你给我留的邮箱我发给你好了
------解决方案--------------------
C#的代码我没有哦,但是我知道控制打印机和串口发数据是一样的,只是控制打印机发的是打印机的指令,如果你会用C#写串口,你也就会控制打印机了,最主要是知道这些指令怎么用就行了,呵呵...