2008-10-16 212 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命令可以在正確的位置進紙和裁切紙張。