Hi, ich weiß, der Titel ist vielleicht etwas unglücklich gewählt.
Also ich habe gerade erst mit Labview angefangen und habe leider auch nur mäßige C-Kenntnisse.
Folgendes Problem muss irgendwie gelöst werden:
Ich habe eine DLL um mit einem Messgerät über LAN zu kommunizieren. Diese DLL enthält die u.a. die Funktionen "openConnection (char* ipaddr, int port)", "setConfig (param1, param2, param3)", "startMeasure()", "getData()", "closeConnection()", welche alle zu einer Oberklasse in der DLL gehören.
Diese Funktionen muss ich nun eben in dieser Reihenfolge über LabView aufrufen. Das Einbinden der DLL usw funktioniert alles. Auch die erste Funktion wird problemlos aufgerufen (openConnection) und eine Verbindung mit dem Gerät etabliert. Nur wennich dann die zweite Funktion aufrufen will, welche die Konfiguration an das Gerät senden soll, gibt es probleme. Das Problem ist, dass das Verbindungsobjekt (SOCKET conn) global beim Aufruf von openConnection() gespeichert wird. Auf dieses Objekt müssen jetzt allerdings auch die anderen Funktionen zugreifen können. Aber wie ?
Wenn ich mehrere Knoten mit den unterschiedlichen Funktionen in Labview erstelle, läd er ja jedesmal die dll neu in den Speicher und initialisiert somit auch das Verbindungsobjekt wieder neu, es ist also verloren. Da sind natürlich noch mehr Objekte, die global gespeichert werden. Wenn es nur das eine wäre, hätte ich gesagt, dass man das ja beim Funktionsaufruf wieder an LabView übergeben könnte.
Meine Frage ist, kann man Labview irgendwie sagen, lade die DLL nur einmal in den Speicher? wo man dann die Funktionen nacheinander aufrufen kann, ohne dass irgendwelche Variablen, die von den vorhergehenden Funktionen gesetzt oder verändert wurden, dabei verloren gehen und für die nachfolgenden Funktionen verfügbar ist ?
Oder verstehe ich das ganze Konzept von Labview und DLLs falsch ?
Ich hab schon viel probiert, bekomme es aber leider nicht hin.
Der SourceCode der DLL liegt mir vor und kann auch nachträglich manipuliert werden, falls das weiterhilft. Allerdings möchte/darf ich den Quellcode nicht veröffentlichen.
Die DLL wurde mit dem Borland C++ Compiler kompiliert.
Hier noch ein kleiner Auszug aus der Header Datei, damit ihr die Grundstruktur von der Dll sehen könnt:
[code]class DLL_EXPORT BxCntl{