ESC/POS 打印机在打印缓冲区中的所有内容之前切纸

ESC/POS printer cuts paper before printing all content in buffer

我正在编写代码(在 C# 中)将收据打印到 ESCPOS 打印机,目前使用 EPSON TM20II 进行测试。我直接在 Linux 的 COM 端口上打印,并通过 Windows 上的 USB 模拟 COM 端口打印。虽然我可以正常打印任何类型的评论,但我在裁纸时遇到了问题。

更具体地说,如果我在其余内容之后发送切纸命令 (GS V 0) 并将整个字节流发送到端口,打印机会在打印最后一行之前切纸内容.

一开始我以为是时间问题,所以我尝试发送剩余的内容,然后等待一小段时间再发送剪切命令,但没有成功。

这是我使用的代码示例以及我发送到无法在正确位置裁切纸张的打印机的缓冲区内容。

printer.Reset();
printer.SetTextAlignment(TextAlignment.Center).PrintTextLine(" 1234567890 ");
printer.SetTextSize(TextSize.Quadruple).PrintTextLine(" 1234567890 ");
printer.CutPaper();
printer.Print();

生成以下(十六进制)输出并发送到打印机:

1B-40-1B-74-0F-1B-61-01-20-31-32-33-34-35-36-37-38-39-30-20-0D-0A-1B-21-30-20-31-32-33-34-35-36-37-38-39-30-20-0D-0A-1D-56-00

Kalhspera!

切割机构与热敏打印头之间存在距离。所以在你发送切纸命令之前,你必须把纸送一点。一种解决方案是在发送切纸命令之前发送几个换行符。