ich probiere grad meine Messgeräte über LAN SCPI zu steuern.
Jetzt wollte ich erstmal die Adresse pingen um zu sehen ob das Gerät reagiert.
Dazu gibt es in Synapse die Unit PingSend
Das funktioniert auch super. Aber als ich eine nicht vorhandene IP angepingt habe, bekam ich trotzdem TRUE von PingSend zurück ?
Nach etwas rumsuchen, stellte ich fest, das mir aber eine "andere" Adresse zurück geliefert wurde als ich gesendet habe.
Das ist dann immer meine IP von meinem Winodws PC ? habe ich herausgefunden
Ich weis nicht ob das so gewollt ist, aber anhand dieser Feststellung kann man das natürlich auch berücksichtigen.
Ich habe 192.168.178.22 gesendet (mein Messgerät) und zurück kam 192.168.178.26
Wenn ich mein Messgerät ausgeschaltet habe, dann liefert PingSend auch FALSE.
Ob das Verhalten normal ist, weis ich nicht, aber evtl. könnt Ihr etwas dazu sagen.
Ich hab das nur auf einem Windows PC getestet.
Dazu mal mein Programmcode.
Code: Alles auswählen
procedure TForm1.ButtonPingClick(Sender: TObject);
var
Ping: TPINGSend;
ip:string;
begin
ip:=EditIp.Text;
Ping := TPINGSend.Create;
try
if Ping.Ping(ip) then
begin
if SameText(Ping.ReplyFrom, ip) then // !!! Problem gelöst: nur wenn gesendete und empfangeene IP identisch sind.
begin
ListBox1.Items.Add('Ping OK');
ListBox1.Items.Add('Antwort von: ' + Ping.ReplyFrom);
ListBox1.Items.Add('Zeit: ' + IntToStr(Ping.PingTime) + ' ms');
end
else
begin
ListBox1.Items.Add('Ziel nicht erreichbar');
ListBox1.Items.Add('Antwort von: ' + Ping.ReplyFrom);
ListBox1.Items.Add('Fehler: ' + Ping.ReplyErrorDesc);
end;
end
else
begin
ListBox1.Items.Add('Ping fehlgeschlagen');
ListBox1.Items.Add('Fehler: ' + Ping.ReplyErrorDesc);
end;
finally
Ping.Free;
end; // end vom try
end; // end procedure