How do I send Printer Control Codes to the printer without having them
translated into unprintable characters?
Not sure if it is Windows API or Delphi is the culprit.
When I write the printer control codes, they are just printed as
unprintable characters rather than being interpreted by the printer.
You need to use the Passthrough printer Escape function to send data directly to the printer. If you're using WriteLn, then it won't work. Here's some code to get you started:
--------------------------------------------------------------------------------
unit Passthru;
interface
uses printers, WinProcs, WinTypes, SysUtils;
Procedure PrintTest;
implementation
Type
TPassThroughData = Record
nLen : Integer;
Data : Array[0..255] of byte;
end;
Procedure DirectPrint(s : String);
var
PTBlock : TPassThroughData;
Begin
PTBlock.nLen := Length(s);
StrPCopy(@PTBlock.Data,s);
Escape(printer.handle, PASSTHROUGH,0,@PTBlock,nil);
End;
Procedure PrintTest;
Begin
Printer.BeginDoc;
DirectPrint(CHR(27)+'&l1O'+'Hello, World!');
Printer.EndDoc;
End;
end.