使用ZVT与 Delphi 和ingenico IPP480

jhkqcmku  于 2022-11-04  发布在  其他
关注(0)|答案(3)|浏览(200)

我试着在 Delphi 中创建一些代码来实现zvt协议。为了连接到终端,我使用了TIDTCPClient或turbopack的comport-component。两者都可以连接到ingenico终端IPP 480。它显示了一个文本行“a32 de”2秒。我不知道为什么!
我可以发送zvt-documentation中描述的几个命令行,但终端没有显示或执行任何操作。

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?或者你知道一个解决方案的正确顺序的字节序列?
最好的基督徒

wsewodh2

wsewodh21#

你可以试着使用idTcpClient.IOHandler.WriteDirect或idTcpClient.IOHandler.Write程序。

procedure TForm1.Button1Click(Sender: TObject);
var 
    wBuf         : TIdBytes;
begin
    ...
    SetLength(wBuf, 5);
    wBuf[1] := $06;
    wBuf[2] := $00;
    wBuf[3] := $06;
    wBuf[4] := $D1;
    wBuf[5] := $FF;
    ...
    if (IdTCPClient.Connected) then begin
        try
          idTcpClient.IOHandler.WriteDirect(wBuf);
        except
          on e: exception do begin
            showmessage('Error :'+ e.message)
          end;
        end;
      end;
    ...
    end;
enyaitl3

enyaitl32#

官方的ZVT文档有一组跟踪文件,其中包含发送到终端的字节和从终端接收的字节。我发现这些文件在开发我们自己的ZVT实现时很有帮助。

mutmk8jj

mutmk8jj3#

答案可能太晚了,但我们也面临同样的问题,ZVT领域的例子不多。同时,我们在GitHub上发布了一个测试软件,可以测试最重要的函数。单元测试中也有一些字节序列的例子。你可以在这里找到我们的项目https://github.com/Portalum/Portalum.Zvt

相关问题