Отправка специальных команд принтера
У меня есть проблема, которая заключается в том, что я пытаюсь закодировать данные магнитной полосы на принтер 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;