INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

DLL-Anbindung lösen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

16.04.2007, 10:28
Beitrag #1

astraios Offline
LVF-Grünschnabel
*


Beiträge: 44
Registriert seit: Mar 2006

8.5
2006
de

80937
Deutschland
DLL-Anbindung lösen
Hallo,

ich weiß nicht ganz, wie ich das Thema benennen soll... deshalb beschreib ich einfach mal mein Anliegen:

Ich benutze LV, um über eine DLL-API auf Vector CAN-Hardware zuzugreifen. Das funktioniert auch alles ganz gut. Nur ein Problem hab ich noch:

Die Verbindung zum Treiber wird durch eine Open() Funktion hergestellt und zum Schluss durch eine Close() Funktion wieder sauber geschlossen. Wenn jetzt aber mein LV Programm zwischendrin durch irgendeinen Grund beendet wird, ohne dass Close() aufgerufen wird (durch einen unbehandelten Fehler, Abbrechen Knopf o.ä.), kann ich die Treiberschnittstelle nicht mehr verwenden, es sei denn ich starte LV neu. Es muss also noch irgendwie die DLL geladen sein... Kann ich das beim erneuten Start vom Programm irgendwie prüfen und "resetten"?


Ich hoffe, mein Problem ist klar geworden Rolleyes

Danke schonmal im Voraus und viele Grüße

Robert

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.04.2007, 10:47
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.698
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
DLL-Anbindung lösen
' schrieb:Es muss also noch irgendwie die DLL geladen sein... Kann ich das beim erneuten Start vom Programm irgendwie prüfen und "resetten"?
Ich würde sagen, die DLL selbst ist nicht das Problem. Vielmehr ein Handle, den die DLL zum Treiber hin geöffnet hat. Der wird u.U. nicht automatisch gelöscht. Beim erneuten Öffnen ohne vorher "Close Handle" gemacht zu haben, könnte so ein noch gestehender Handle zu einem Fehler "Resource nicht verfügbar" (o.ä.) führen. Beim Beenden der LV-IDE werden - meistens - alle von LV angeforderten Handles durch das Betriebssystem automatisch geschlossen.

Es soll zwar Möglichkeiten geben, zu überprüfen, ob eine DLL bereits geladen ist respektive kann man eine DLL auch erst per Programm laden lassen - aber da kenne ich mich nicht aus.

Es kommt auch sehr auf die DLL an. Wenn die z.B. mit so einem Handle arbeitet, könnte es klappen, indem du einfach den Open weglässt und einen Leseversuch auf die angeschlossene Harware machst.

Ich selbst würde mein Programm aber auf jeden Fall so schreiben, dass egal was der Anwender macht die DLL immer geschlossen wird. Notfalls wird eben Alt-F4 etc. unterbunden. AVs aus Gründen, die der Programmierer nicht zu vertreten hat, sind natürlich ausgeschlossen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.04.2007, 11:16
Beitrag #3

astraios Offline
LVF-Grünschnabel
*


Beiträge: 44
Registriert seit: Mar 2006

8.5
2006
de

80937
Deutschland
DLL-Anbindung lösen
Danke für Deine Antwort. Auf die geschlossene Hardware kann ich leider nicht zugreifen. Aber ich hab mir jetzt nen netten Workaround gebastelt. Ist zwar die Paranoya Variante - aber es scheint zu funktionieren: Ich speicher mir nach dem erfolgreichen Öffnen des Treibers alle Handles in eine Datei. Und beim nächsten mal les ich die Handles aus der Datei und versuche, mit denen die Treiberanbindung zu schließen bevor ich eine neue öffne... Smile

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.04.2007, 11:09
Beitrag #4

holterpolter Offline
LVF-Grünschnabel
*


Beiträge: 31
Registriert seit: Mar 2007

8.5.1, 2014
2007
DE_EN

70191
Deutschland
DLL-Anbindung lösen
' schrieb:Danke für Deine Antwort. Auf die geschlossene Hardware kann ich leider nicht zugreifen. Aber ich hab mir jetzt nen netten Workaround gebastelt. Ist zwar die Paranoya Variante - aber es scheint zu funktionieren: Ich speicher mir nach dem erfolgreichen Öffnen des Treibers alle Handles in eine Datei. Und beim nächsten mal les ich die Handles aus der Datei und versuche, mit denen die Treiberanbindung zu schließen bevor ich eine neue öffne... Smile


Und wenn du die Close-Funktion mit einem Button verbindest? Sodass du sie jederzeit ausführen kannst. Ich hab das mal für eine COM-Schnittstelle gemacht, wo ich dasselbe Problem hatte.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  dll Anbindung einer Infrarotkamera florianBO 3 4.503 13.11.2009 15:48
Letzter Beitrag: abrissbirne
  Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL) Rob 11 13.444 22.11.2007 12:53
Letzter Beitrag: rolfk
  dll-Anbindung obrueck 1 8.152 10.02.2005 11:07
Letzter Beitrag: Mario W.

Gehe zu: