我正在尝试通过向打印机发送剪纸命令(带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的新手,请任何人为我提供一些代码来实现这一目标.我已经在网上冲浪了几天,但仍然没有找到答案.我想我需要发送打印机命令作为字节,但我不知道该怎么做:(
tsl*_*lin 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);
}
Run Code Online (Sandbox Code Playgroud)
对于那些使用netcat(无需安装任何驱动程序即可打印内容的非常简单的方法)进行打印的人来说,要裁切纸张:
echo -e "\x1B@\x1DV1" | nc printer.ip 9100
Run Code Online (Sandbox Code Playgroud)
与 C# 版本中的字符串相同,但映射到十六进制:\x1B = ESC和\x1D = GS。