2008-10-16 172 views
5

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

+0

我也是,但现在我意识到他的意思是销售点。 – 2008-10-26 07:16:24

+1

您可以下载TM-T88III系列规格,其中列出了一些ESC/POS命令。 http://www.jarltech.com/ger_new/new/support/cd/TM-T88III_spc_e.pdf – stukelly 2009-04-28 16:52:31

回答

0

如果打印机是在LPT1,掏出到DOS和给CMD.EXE或COMMAND.COM无论C#当量在该BASIC表达的:

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

要么或附加一个CHR(12 )到输出文本。

3

您将需要迟早或全部ESC/POS Application Programming Guide。几年前,我从爱普生经销商那里获得了一份副本。在此期间,我与谷歌找到了一个链接到这里的FAQ for ESC/POShttp://postechgroup.com/updata/support/drivers/EPSON/FAQ_ESCPOS.pdf

在你的情况下,LF控制命令打印在打印缓冲区中的数据和饲料基于当前的行间距一行。

ASCII: LF

Hex: 0A

Decimal: 10

0

由于升压说,你需要得到一个换行/换页/ ASCII 12到打印机端口。在C或C++,如果你打开你的打印机作为一个文件,这将是

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

问题有时出现上直到回车写入输出缓冲区没有实际处理/冲洗这些打印机。您也可以手动刷新流。所以,你会再使用

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

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

(很抱歉,这是C,而不是.NET,我已经没有移动过的C++的老前辈之一)

编辑:阅读在我的岗位alexandruls的意见,我在我的好已经得到了这个错误。这听起来好像您可能会收到不需要的换页,因为您错误地设置了页面长度,或者默认值不正确。检查ESC C n组的Epson命令来克服这一点。

+0

请阅读ESC/POS的常见问题,正确的命令是换行符(十六进制0A,十进制10)。 – alexandrul 2008-10-16 07:27:32

0

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

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