Enviar comandos específicos de la impresora

Tengo un problema aquí, que estoy tratando de codificar datos de banda magnética en una impresora Fargo DTC400, en las especificaciones dice que necesito enviar los siguientes comandos de cadena desde el bloc de notas de ejemplo, el wordpad, etc., et

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

este ejemplo codifica la cadena en la pista uno, y los números 123456789 en las pistas 2 y 3 ... esto funciona desde Notepad.exe.

EDITAR El código actual de Delphi que uso funciona en otra impresora:

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

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

Cuando estoy tratando de codificar esta cadena desde mi propia aplicación, tengo problemas, parece que la impresora está ignorando totalmente mis comandos, cuando elijo imprimir en archivo, puedo leer los datos binarios y ver mi cadena en el archivo impreso, cuando Intento imprimir en un archivo desde notepad.exe de ejemplo. Solo obtengo datos binarios y no puedo encontrar mis cadenas en absoluto ...

Entonces, ¿qué hace el bloc de notas para enviar este comando de cadena que no hago?

espero que alguien pueda arrojar luz sobre esto porque he estado ansioso por implementar el soporte de fargo en mi aplicación durante un período de tiempo más largo.

Gracia

Actualizar el siguiente código es antiguo pero hace el trabajo, sin embargo, ¿hay otra forma de usar esto con el código Passthrough anterior?

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;

Respuestas a la pregunta(2)

Su respuesta a la pregunta