基于这个问题,我已经实现了以下代码,以便向我的Zebra TLP2844发送直接命令。
var
cmm: AnsiString;
i: integer;
begin
commands.saveToFile('path\to\a\file');
Printer.BeginDoc;
cmm := '';
for i := 0 to commands.Count-1 do
cmm := cmm + commands[i] + #10;
Escape(Printer.Canvas.Handle, PASSTHROUGH, Length(cmm), PAnsiChar(cmm), nil);
Printer.EndDoc;
end;
commands是一个TSringList,其中包含我想发送给打印机的所有命令。请注意,我会将所有命令保存到一个文本文件中。
好吧,如果我通过驱动程序首选项将这个文本文件发送到打印机,使用工具 -> 操作 -> 发送文件,它将完美地打印出来。
如果我使用上面的代码,则会在打印后输出一些额外的标签行。
显然,它向我展示了我在这里做错了什么,但我无法找出问题所在。
我尝试过的
- 一个接一个地发送命令,而不像代码中拼接它们。结果:未打印任何内容。
- 将#10更改为#13#10。结果:同样的疯狂行为(实际上Zebra EPL文档说它会忽略它找到的任何#13)
我还应该尝试什么来以与Zebra工具相同的方式向打印机发送命令?
ExtEscape()
API 直接向打印机发送命令,以及常规的 GDI 命令。这对于想要同时编码磁卡和打印卡片布局的斑马打印机非常方便。最新版本的斑马打印机使用 USB,而旧版本使用并行/centronics 连接器。串行技巧在这里行不通。 - Arnaud Bouchez