POS打印机C#上的送纸

时间:2008-10-16 04:30:30

标签: .net printing point-of-sale

我一直试图用pos打印机(Epson TM-U220D)以编程方式提供纸张。我遇到的问题是文档的最后一行没有打印,而是打印为下一个打印文档的第一行。我尝试使用POS for .NET发送“ESC | flF”命令,也尝试使用串口发送原始esc / pos命令,但它不起作用。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

您需要提前或完整ESC/POS Application Programming Guide。几年前我确实从我的EPSON经销商处获得了一份副本。与此同时,我在Google上找到了FAQ for ESC/POS的链接: http://postechgroup.com/updata/support/drivers/EPSON/FAQ_ESCPOS.pdf

在您的情况下,LF控制命令打印打印缓冲区中的数据,并根据当前行间距提供一行。

ASCII: LF

Hex: 0A

Decimal: 10

答案 1 :(得分:0)

如果打印机在LPT1上,请shell到DOS并提供给CMD.EXE或COMMAND.COM,无论这个BASIC表达式的C#等价物是什么:

"ECHO " & Chr(12) & ">LPT1"

或者将Chr(12)附加到输出文本。

答案 2 :(得分:0)

正如提升所说,你需要将一个换页/ FF / ascii 12送到打印机端口。在C或C ++中,如果您将打印机作为文件打开,那么这将是

fprintf(printerfile,"%c",12);

在这些打印机上有时会出现这样的问题:在写入回车符之前,实际上不会处理/刷新输出缓冲区。您也可以手动刷新流。那么你就可以使用

fprintf(printerfile,"%c%c",12,13);
fflush(printerfile);

输出到串行打印机等设备时,容易犯的错误是通信和打印与主应用程序异步发生。因此,重要的是不要在完成打印后立即关闭打印机端口,因为这可能导致最终输出缓冲区丢失或损坏。

(对不起,这是C而不是.NET,我是那些没有搬过来的C ++老人之一)

编辑:阅读alexandruls对我帖子的评论,我的确错了。听起来好像您可能会收到不需要的表单,因为您已经错误地设置了页面长度,或者默认值不正确。检查 ESC C n 组的Epson命令,以解决此问题。

答案 3 :(得分:0)

你正在剪纸吗? 如果要切割纸张,刀具的位置要高于打印头。 因此,您需要在发送剪切命令之前提供多行。 您应该能够使用5个换行符(LF - > Chr(10))格式化一个字符串,发送它们,然后发送剪切命令。

在Epson EScPOS dcoumentation中,有GS V命令可以在正确的位置进纸和切纸。