Отправка специальных команд принтера

У меня есть проблема, которая заключается в том, что я пытаюсь закодировать данные магнитной полосы на принтер Fargo DTC400, в спецификациях которого указано, что мне нужно отправить следующие строковые команды из примера блокнота, WordPad и т. Д. И т. Д .:

~1%TRACK NUMBER ONE?
~2;123456789?
~3;123456789?

В этом примере кодируется строка на первой дорожке, а номера 123456789 на дорожках 2 и 3 .. это работает из Notepad.exe.

РЕДАКТИРОВАТЬ: Текущий код Delphi, который я использую, работает на другом принтере:

procedure SendQuote(MyCommand : AnsiString);
var
  PTBlock       : TPassThrough;

begin
  PTBlock.nLen := Length(MyCommand);
  StrPCopy(@PTBlock.SData, MyCommand);
  Escape(printer.handle, PASSTHROUGH, 0, @PTBlock, nil);
end;

когда я пытаюсь закодировать эту строку из моего собственного приложения, у меня возникают проблемы, кажется, что принтер полностью игнорирует мои команды, когда я выбираю печать в файл, я могу прочитать двоичные данные и увидеть свою строку в напечатанном файле, когда я попробуйте распечатать в файл из примера notepad.exe Я получаю только бинарные двоичные данные и не могу найти мои строки вообще ...

так что мне интересно, что делает блокнот для отправки этой строковой команды, которую я не делаю?

надеюсь, что кто-то сможет пролить свет на это, потому что я стремился реализовать поддержку фарго в своем приложении в течение более длительного периода времени.

Спасибо

Обновить. следующий код является древним, но он выполняет свою работу, однако есть ли другой способ, которым я могу использовать это с кодом Passthrough выше?

var
  POutput: TextFile;
  k: Integer;
begin
  with TPrintDialog.Create(self) do
  try
    if Execute then
    begin
      AssignPrn(POutput);
      Rewrite(POutput);

      Writeln(POutput,'~1%TESTENCODER?');
      Writeln(POutput,'~2;123456789?');
      Writeln(POutput,'~2;987654321?');
      CloseFile(POutput);
    end;
  finally
    free;
  end
end;