デルファイでzvt-protocolを実現するためのコードをいくつか作成しようとしています。端末に接続するには、ether TIDTCPClientまたはcomport-componentをturbopackで使用します。どちらもインゲニコ端末IPP480に接続できます。 2秒間テキスト行 "a32de"を表示しています。どうしてか分かりません!delphiとingenicoでZVTを使用するIPP480
zvt-ドキュメントに記載されているいくつかのコマンドラインを送信できますが、端末によって何も表示または実行されることはありません。
procedure TForm1.Button1Click(Sender: TObject);
var
lSBefehl : String;
begin
lSBefehl := '';
IdTCPClient1.Host := eip.IPAddress; // IP des EC-Cash-Gerätes
IdTCPClient1.Port := eport.IntValue;
if not IdTCPClient1.Connected then begin
IdTCPClient1.Connect; //that is working!
end;
if not IdTCPClient1.Connected then begin
ShowMessage('not connected!');
end;
lSBefehl := Chr(6)+Chr(0)+Chr(6)+Chr(209)+Chr(255); //Nothing!
IdTCPClient1.SendCmd(lSBefehl);
end;
zvtのバイトシーケンスのテストツールはありますか?または、バイトシーケンスの正しい順序の解を知っていますか?
ベストreqards クリスチャン
端末でバイトシーケンスが必要な場合は、文字列を使用してデータを送信しないで、バイト配列を使用してください。 Delphi 2009以降のバージョンのDelphiを使用している場合、文字列を使用すると、追加する文字ごとに2バイトがあることを意味します。バイト配列を送信すると、IOHandlerのWriteメソッドも使用する必要があります。端末の仕様へのリンクを提供するのに役立つかもしれないので、他の人が予期しているデータを知ることがあります –
ありがとうございます。私はDelphi Tokyoを使用しています。コードを投稿してください。 – Chris
'string'は、文字列(文字列を構成する)を保持するように設計されています。文字を保持していない場合は、文字列を使用しないでください。 Byteの配列を使用します。明らかに、文字列を使用していないのは、 'Chr(0)'と2つのChr(6)値を含む1バイトの値を使用したためです。バイナリデータを保持するために文字列を使用しないで、代わりに適切なバイト配列を使用してください。文字列はバイナリデータではなく文字値の配列用です。違いを学ぶ。間違ったツールなので、あなたの植物に水を運ぶためにパスタストレーナーを使用しないでください。したがって、バイナリデータを保持しようとする文字列を使用しています。 –