- Beiträge
- 15.424
- Reaktionspunkte
- 4.046
Das kann durchaus auch an meiner Delphi-Komponente liegen. Ich habe die Funktionen für das S7Online-Protokoll in der Komponente implementiert, da war das Protokoll in libnodave noch im Teststadium (ich glaube, damals waren wir über das libnodave-Forum in Kontakt ?), und seither hab ich nichts mehr daran gemacht, da ich das Protokoll selbst nicht verwende. Falls Zottel danach noch was an dem Protokoll in libnodave geändert hat, muß meine Komponente evtl. noch angepaßt werden, aber darüber habe ich im Moment zumindest keine Infos.Ich habe den Eindruck, daß es mit der Verknüpfung zwischen der Libnodave-DLL und dem Simatic-Progamm zu tun hat. Irgendein Funktionsaufruf (o.ä.), wird nicht richtig abgeschlossen.
So geht es wieder: closeport statt closeS7online
closePort(DaveInterface.Remote.DaveFDS.rfd);
// closeS7online(DaveInterface.Remote.DaveFDS.rfd);
Das werd ich morgen nochmal vertiefen.
Da wird er demnächst sicherlich mal nachsehen.Hallo Ralle,
Zitat:
Zitat von Ralle
hab noch etwas herumexperimentiert und festgestellt, daß libnodave (deine dll, die von Zottel habe ich nicht getestet) bei TCP/IP-Verbindungen (319 PN) nach jedem Schließen der Verbindung 2 Handles nicht zurückgibt. Ich vermute jedenfalls libnodave, da das Verhalten sowohl bei meinem Programm, als auch bei deinem Demo-Programm auftritt. Hatte zwar bisher keine negativen Auswirkungen, ist aber sicher mal Wert dem nachzugehen.
Danke für die Info, das werde ich mir mal genauer anschauen, sobald ich Zeit dazu habe.
Gruß Axel
Ralle schrieb:Hast du zu dem Problem der s7Online-Verbindung (immer nur die 1. CPU liefert die Daten, auch wenn man versucht mehrere auszulesen) irgendeine Idee?
Stimmt, wird er machen. Sobald er wieder zu Hause ist und mal ordentlich ausgeschlafen hat ... :sm13:Da wird er demnächst sicherlich mal nachsehen.
Falsch. Die sind da nicht enthalten. Die Funktion closesocket() wird darin lediglich genutzt. Enthalten ist sie in winsock2.dll ! Du kannst si selbst nutzen, indem du winsock.h einbindest und dein programm mit winsock2.dll linkst.@RALLE
Was mir nun mittlerweile aufgefallen ist, nachdem ZOTTEL mich auch die CloseSocket Funktion gestossen hat, dass es diese in der eigentlichen "openSocket.h" nicht gibt. ABER es ist eine "openSocketW.c" vorhanden, in der auch close-Funktionen enthalten sind...
Du kannst, aber du mußt nicht. Weil du nicht mußt, gibt es diese separate Headerdatei: Du könntest dein socket auch "zu Fuß" aufmachen, indem du Funktionen aus winsock2.dll nutzt. Das kann nützlich sein, wenn du Eigenschaften des Sockets ändern möchtest und das nach bind() oder connect() nicht mehr geht.@RALLE
Heisst dies, wenn ich hier unter Windof arbeite, dass ich die "opensocket.h" eigentlich nicht nutzen kann...
close(HANDLE h) {
closesocket(h);
}
Der (kompilierte) Code aus openSocketw.c ist Bestandteil von libnodave.dll. Da mußt du gar nichts weiter tun.@RALLE
... und dann irgendwie die "openSocketw.c" einbinden muss?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?