ここで問題が発生しました。磁気ストライプデータをFargoDTC400プリンターにエンコードしようとしています。仕様では、メモ帳、ワードパッドなどから次の文字列コマンドを送信する必要があると書かれています。
~1%TRACK NUMBER ONE?
~2;123456789?
~3;123456789?
この例では、文字列をトラック1にエンコードし、番号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からファイルに印刷してみてください私はただごちゃごちゃしたバイナリデータを取得し、文字列をまったく見つけることができません...
だから私はメモ帳が私がしていないこの文字列コマンドを送信するために何をするのだろうか?
私は長い間私のアプリケーションにfargoサポートを実装することを熱望していたので、誰かがこれに光を当てることができることを願っています。
ありがとう
アップデート。 次のコードは古いものですが、それは機能しますが、上記のパススルーコードでこれを使用できる別の方法はありますか?
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;