打印机: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
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
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到端口就行了
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就可以了