我在这里有一个问题,我正在尝试将磁条数据编码到 Fargo DTC400 打印机,在规范中它说我需要从示例记事本、写字板等发送以下字符串命令:
~1%TRACK NUMBER ONE?
~2;123456789?
~3;123456789?
此示例对音轨 1 中的字符串以及音轨 2 和 3 中的数字 123456789 进行编码。这适用于 Notepad.exe。
编辑: 我使用的当前德尔福代码适用于另一台打印机:
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打印到文件我只得到rubish二进制数据并且根本找不到我的字符串......
所以我想知道记事本如何发送我不发送的这个字符串命令?
希望有人能对此有所了解,因为我一直渴望在我的应用程序中实现对 Fargo 的支持很长一段时间。
谢谢
更新。 下面的代码是古老的,但它可以完成工作,但是有没有另一种方法可以将它与上面的 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;