【发布时间】:2013-06-05 20:54:18
【问题描述】:
如何使用 Delphi 向 USB 端口连接的打印机发送文本命令?
我有一台 Zebra TLP2844 打印机,并希望对其进行直接通信。
【问题讨论】:
标签: delphi usb vcl zebra-printers
如何使用 Delphi 向 USB 端口连接的打印机发送文本命令?
我有一台 Zebra TLP2844 打印机,并希望对其进行直接通信。
【问题讨论】:
标签: delphi usb vcl zebra-printers
您使用 WinAPI 函数 Escape,将 Printer.Canvas.Handle 作为第一个参数传递给它,并将 PASSTHROUGH 作为 nEscape 参数传递给它。
var
YourCommand: String;
begin
YourComamnd := 'Your command here';
if Escape(Printer.Canvas.Handle,
PASSTHROUGH,
Length(YourCommand),
PChar(YourCommand),
nil) <> 0 then
// Handle return value (listed in docs link above)
else
// send next command
Escape 在Windows 单元中定义。请注意,您必须在使用此功能之前调用Printer.StartPage,以便准备打印机驱动程序以接收内容。
【讨论】:
Printer.Canvas.Handle,也就是打印机的HDC。我在任何地方的文档中都没有看到Canvas.BufferHandle。如果您不使用 VCL,您应该这样说并在您的问题中添加适当的 FireMonkey 标签。 :-) 刚刚找到BufferHandle,没有;那是THandle,Escape 正在寻找设备上下文的句柄 (HDC)。
FMX.Printer.Win.pas 的源代码,为TPrinter 定义了一个Canvas。我不知道它是否有可用的与 Windows 兼容的 HDC(我对此表示怀疑),但您也许可以使用 Printer.Handle,它说它是一个 HDC。我不知道它是否适用于Escape,因为我还没有尝试过。