我正在尝试通过向打印机发送剪纸命令(带USB端口的Epson TM U220)实际剪切纸张。 我使用的打印机使用Generic / Text Only Driver和Epson打印机端口,我在安装后找到了该端口 Epson高级打印机驱动程序。 打印机命令代码是(GS V m),其中m = 0,1,48或49,我在设备手册中找到了它。 我想知道如何通过StringWriter将这些命令发送到打印机。 我使用Generic / Text Only打印机,因为它比使用Epson驱动程序快得多。
我是C#windows的新手,请任何人为我提供一些代码来实现这一目标。我已经在网上冲浪了几天,但仍然没有找到答案。我想我需要将打印机命令作为字节发送,但我不知道该怎么做:(
答案 0 :(得分:21)
非常感谢汉斯。现在我可以使用Microsoft RawPrinterHelper类发送Paper cut命令。我一直在寻找这个解决方案六天。这就是我所做的。
string GS = Convert.ToString((char)29);
string ESC = Convert.ToString((char)27);
string COMMAND = "";
COMMAND = ESC + "@";
COMMAND += GS + "V" + (char)1;
PrintDialog pd = new PrintDialog();
pd.PrinterSettings = new PrinterSettings();
if (DialogResult.OK == pd.ShowDialog(this))
{
RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, COMMAND);
}
答案 1 :(得分:1)
对于那些使用netcat
进行打印(非常简单的方法来打印某些内容而不安装任何驱动程序),剪纸:
echo -e "\x1B@\x1DV1" | nc printer.ip 9100
与c#版本相同的字符串,但映射到十六进制:\x1B = ESC
和\x1D = GS
。
答案 2 :(得分:0)
s = Replace(s, "<KESME>", Chr(27) + Chr(105), 1) ' Termal Printer
Chr() +chr()