打印机:EPSON TM-T88III
c#可正常打印到pos打印机,但不能自动切纸,帮我改一下:
在手册中见到:
Cutting The Paper
printer.fontsize=10 'set up the control font
printer.fontname="control"   
printer.print "F" 
Printer.EndDocUse special -function character to cut the paper. F:Full cut   P:Partial cut直接把要打印的文件当作文件操作,见下:怎么把这个指令加到这个程序中,高人指点:
public  string PrintLine(string str)
{
IntPtr iHandle = CreateFile(prnPort,  0x40000000, 0, 0, OPEN_EXISTING, 0, 0);
if(iHandle.ToInt32() == -1)
{
return "没有连接打印机或者打印机端口不是LPT1";
}
else
{
FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default); //写数据
sw.WriteLine(str);                                                                  //请在这里帮我加上上面的切纸指令 下面还有vb的例子
                                //要是再写个同样功能的c#函数也行呀,感谢! ***********************************************************************
                   //下面的这句是别人vb写的开钱箱,也可参考                                           
                  //sw.WriteLine(Chr(&H1B) & Chr(70) & Chr(0) & Chr(20) & Chr(&HA0));
                                *********************************************************************** sw.Close();
fs.Close();
return "";
}*****************************************************************************************************
下面是:EPSON 技术人员提供的vb切纸例子:Private Sub Command6_Click()
  Dim buf(500) As Byte    ESC = Chr(27)
    GS = Chr(29)
    LF = Chr(10)   
         
    SEND = ESC & "@"
'-----------------------------------------------------------------------------------------
    SEND = SEND & "012345678901234567890123456789012345678901"
    SEND = SEND & LF
'-----------------------------------------------------------------------------------------
    SEND = SEND & GS & "L" & Chr(60) & Chr(0)
    SEND = SEND & ESC & "D" & Chr(25) & Chr(30) & Chr(0)
    
    SEND = SEND & "shop logo" & LF
    SEND = SEND & "shop logo" & LF
    SEND = SEND & "shop logo" & LF
    SEND = SEND & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
    
    SEND = SEND & GS & "V" & Chr(1)    
         
    n = 0
    For i = 1 To Len(SEND)
        buf(i - 1) = AscB(Mid(SEND, i, 1))
    Next i    
    
    r = WriteFile(h, buf(0), i - 1, n, 0)
End Sub

解决方案 »

  1.   

    byte buf[500];
    char ESC = (char)(27);
    char GS = (char)(29);
    char LF = (char)(10);   
             
    StringBuilder SEND =new StringBuilder();
    SEND.Append("@");
    '-----------------------------------------------------------------------------------------
    SEND.Append("012345678901234567890123456789012345678901");
    SEND.Append(LF.ToString());
    '-----------------------------------------------------------------------------------------
    char c1=(char)60;
    char c2=(char)0;
    SEND.Append(GS.ToString()+"L" +c1.ToString();+c2.ToString());
    //下面依次按这种方法弄,太累了
    /*
       SEND = SEND & ESC & "D" & Chr(25) & Chr(30) & Chr(0)
        
        SEND = SEND & "shop logo" & LF
        SEND = SEND & "shop logo" & LF
        SEND = SEND & "shop logo" & LF
        SEND = SEND & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        SEND = SEND & "Apple" & Chr(9) & "2X" & Chr(9) & "10.00" & LF
        
        SEND = SEND & GS & "V" & Chr(1)    
    */
       ///////////////////////////////////////////////      
      for(int i=0;i<SEND.Length;i++)
       {
         buf[i]=(byte)SEEN[i];
       }
    Write buf到端口就行了
      

  2.   

    char ESC = (char)(27);
    char GS = (char)(29);
    char LF = (char)(10);   
    Instruction = Convert.ToChar(27) + Instruction + Convert.ToChar(29) +Instruction + Convert.ToChar(10);
    byte[] buffer = System.Text.Encoding.Default.GetBytes(Instruction);
    直接將buffer送lpt1就可以了
      

  3.   

    其實就是直接將控制碼轉換成byte的送到端口就可以了