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;