我在这里遇到一个问题,我正在尝试将磁条数据编码到 Fargo DTC400 打印机,在规范中它说我需要从示例记事本、写字板等发送以下字符串命令:
~1%TRACK NUMBER ONE?
~2;123456789?
~3;123456789?
此示例对第一轨道中的字符串进行编码,并在第二轨道和第三轨道中对数字 123456789 进行编码。这适用于 Notepad.exe。
EDIT:我使用的当前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 打印到文件,我只得到垃圾二进制数据,根本找不到我的字符串...
所以我想知道记事本会做什么来发送这个我不发送的字符串命令?
希望有人能够阐明这一点,因为我长期以来一直渴望在我的应用程序中实现 Fargo 支持。
thanks
Update.下面的代码很古老,但它可以完成工作,但是还有另一种方法可以将其与上面的直通代码一起使用吗?
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;