У меня возникла проблема: я пытаюсь закодировать данные магнитной полосы на принтер Fargo DTC400, в спецификациях которого указано, что мне нужно отправить следующие строковые команды из примера блокнота, WordPad и т. Д. И т. Д .:*
в этом примере кодируется строка на первой дорожке, а номера 123456789 на дорожках 2 и 3 ... это работает из Notepad.exe.
РЕДАКТИРОВАТЬ: Текущий код Delphi IИспользование работает на другом принтере:
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, я получаю только бинарные двоичные данные и вообще не могу найти свои строки ...
, поэтому мне интересночто делает блокнот, чтобы отправить эту строковую команду, которую я не делаю?
надеюсь, что кто-то может пролить свет на это, потому что я очень хотел реализовать Fargo SuppoРТ в моем заявлении в течение более длительного периода времени.
спасибо
Обновление. следующий код является древним, но он выполняет свою работу, однако есть ли другой способ, которым я могу использовать это с кодом 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;