2014-09-22 75 views
0

我試圖代碼用delphi XE 6.爲了打印程序,我發現這個代碼互聯網上SEND逃生命令,收據打印機

type 
    TPassThroughData = record 
     nLen: Word; 
     Data: array[0..255] of Byte; 
    end; 

procedure PrintText(s: string); 
var 
    PTBlock: TPassThroughData; 
begin 
    PTBlock.nLen := Length(s); 
    StrPCopy(@PTBlock.Data, s); 
    Escape(Printer.Handle, PASSTHROUGH, 0, @PTBlock, nil); 
end; 

procedure PrintOut; 
begin 
    Printer.BeginDoc; 
    PrintText(#27'&l12D' + 'Hello, World!'); 
    Printer.EndDoc; 
end; 

和接縫的工作不喜歡我想要的。它打印空行並切紙,紙上沒有任何數據。我正在使用IBM收據打印機type4610-1nr。我想問你們有什麼想法,我怎麼能打印它的數據?

+0

是否在其他打印機工作嗎?它沒有逃生代碼工作嗎?也許還可以添加換行符。 對於特定的打印機類型,轉義碼應該是有效的,您是否在打印機的文檔中檢查過? – Pieter21 2014-09-22 23:04:05

+1

由於您使用的是XE6,「String」類型是Unicode。我希望打印機只能處理ANSI。 – bummi 2014-09-23 04:58:38

+0

另請參見[發送打印機特定命令](http://stackoverflow.com/q/9812264/576719)。你一定需要把'String'改成'AnsiString'; – 2014-09-23 05:46:57

回答

0

在諸如IBM 4610這樣的打印機上打印,稍微複雜一點,就是將字符串放在輸出流上......我不知道這裏的打印機對象是什麼,但是我可以給你的建議是仔細閱讀Programming Guide of the printer

反正打印一行無需切割紙張,發送ASCII數據線後,你應該把這個命令行:

X'0A' 

請記住,正如有人正確地指出:打印機可以處理只有ASCII數據串,所以你需要使用AnsiString在Delphi XE ...