我嘗試在delphi中創建一些代碼來實現zvt協議。爲了連接到終端,我使用了ether TIDTCPClient或turbopack的comport-component。兩者都可以連接到工程終端IPP480。它顯示一個文本行「a32de」2秒。我不知道爲什麼!在delphi和ingenico中使用ZVT IPP480
我可以發送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的字節序列測試工具?或者你知道字節序列正確順序的解決方案嗎?
最佳reqards 基督教
如果終端正在等待一個字節序列,請不要使用字符串發送數據,請使用字節數組。如果您使用Delphi 2009或更高版本的Delphi版本,則使用字符串意味着您要添加的每個字符都有2個字節。發送字節數組意味着您還需要使用IOHandler的Write方法。它可能有助於提供終端規範的鏈接,以便其他人可能知道它期望的數據。 –
非常感謝。我正在使用德爾福東京。你可以發表一段代碼嗎? – Chris
「字符串」用於存放字符(組成字符串)。如果你不持有字符,不要使用字符串;使用一個Byte數組。顯然,你沒有使用字符串,因爲你已經使用了單字節值,包括'Chr(0)'和兩個Chr(6)值,所有這些值都是不可打印的。停止使用字符串來保存二進制數據,而是使用適當的字節數組。字符串用於字符值數組,而不是二進制數據。瞭解差異。你不使用麪食過濾器爲你的植物提供水,因爲它是錯誤的工具。所以使用一個字符串來嘗試保存二進制數據。 –