Hallo Leute,
also erst mal... Ich find´s ja total klasse, hier so gut informierte Leute erwischt zu haben. Da sollte es ja kein Problem mein bisl Kleinkram zu lösen.
Ich für meinen Teil hab (nachdem ich zunächst ein wenig mit sirius Quellcode experimentiert habe und mir anschließend das libnodave-Beispiel angeschaut habe) auch langsam das Gefühl das libnodave schon ein wenig zu weit geht.
Ich will nicht auf Datenbausteine einer SPS zugreifen.
Mir reicht schon ein einfacher
TCP/
IP-Telegrammverkehr.
Mein Frage ist nun, wenn ich mit dem Quellcode von sirius weitermache, komme ich dann auch zum Ziel?
Mit TClientSocket und TServerSocket kann ich ja verschiedene Daten senden.
Könnt ihr mal sagen, ob das funktionieren würde?
Codebeispiel für das Versenden eines Telegramms von Delphi zur SPS:
Code:
FClient:=TClientSocket.Create(self);
try
FClient.Adress:='0.8.1.5'; //
IP der SPS
FClient.Port:=5000; //Port über den kommuniziert werden soll
FClient.ClientType:=ctNonBlocking;
FClient.Open;
FClient.Socket.SendText('Hallo SPS');
finally
FClient.Free;
end;
Codebeispiel für das Empfangen eines Telgramms von der SPS durch Delphi:
Code:
//Serververbindung herstellen
FServer:=TServerSocket.Create(self);
try
FServer.Port:=5001; //Port über den kommuniziert werden soll
FServer.OnClientRead:=ServerRead;
FServer.Open;
except
FServer.Free;
end;
//Telgramm empfangen
procedure ServerRead(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;
//TServerSocket vor Beenden im OnDestroy der Form freigeben
FServer.Free;
Vor allem bin ich mir ja unsicher, ob SendText die richtige Methode ist.
Vielleicht müsste/sollte ich besser SendStream oder SendBuf nehmen.
Wie ist eure Meinung dazu?