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 

verschiedene DLLs über ein Libary Fct Node



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!

18.08.2011, 07:33
Beitrag #1

M@rRy Offline
LVF-Padawan
***


Beiträge: 273
Registriert seit: Aug 2011

7.1
2011
EN


Deutschland
verschiedene DLLs über ein Libary Fct Node
Moinsen,

ich kämpfe gerade mit dem Thema DLL's. Erstellen und wieder auslesen ist prinzipiell kein Problem, allerdings möchte ich gerne das der User den Pfad auswählen kann wo er seine DLL gespeichert hat und die dann eingelesen wird. Ist es möglich dafür lediglich nur einen einzigen "Call Libary Function Node" zu verwenden? Wäre zwecks Erweiterbarkeit am besten.

Gruß

Nur wer neugierig ist, lernt ständig dazu.

Mythos:
Mit LabView lassen sich gut Programme leichter entwickeln

Realität:
Mit LabView lassen sich gut und schlechte Programme leichter enwickeln!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2011, 08:05 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2011 08:05 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.470
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: verschiedene DLLs über ein Libary Fct Node
Hallo M@rRy,

guck dir mal die Hilfe zur LV2010-Version der CLF-Node an... Da ginge das (vielleicht).

Aber du hängst ja noch bei LV7.1 fest - da wird das schwieriger. Üblicherweise werden DLLs auch nicht zur Runtime eines Programms ausgewählt (ist dir ein solches Verhalten bei anderen Programmen bekannt?). Evtl. kannst du ja eine CaseStruktur aufbauen, die alle möglichen Optionen an DLL-Aufrufen abdeckt...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2011, 08:25
Beitrag #3

M@rRy Offline
LVF-Padawan
***


Beiträge: 273
Registriert seit: Aug 2011

7.1
2011
EN


Deutschland
RE: verschiedene DLLs über ein Libary Fct Node
(18.08.2011 08:05 )GerdW schrieb:  Aber du hängst ja noch bei LV7.1 fest - da wird das schwieriger. Üblicherweise werden DLLs auch nicht zur Runtime eines Programms ausgewählt (ist dir ein solches Verhalten bei anderen Programmen bekannt?). Evtl. kannst du ja eine CaseStruktur aufbauen, die alle möglichen Optionen an DLL-Aufrufen abdeckt...

Leider habe ich keine andere Version von LV zur Verfügung - obwohl ich gern würde - desalb muss ich damit arbeiten. Ich hatte schon überlegt gehabt ein Drop-Down-Menü zu machen und dann die Case, also genau so wie du es jetzt auch angesprochen hast. Die DLL's sehen auch immer gleich aus aber es werden unter Garantie Neue dazu kommen, die den selben Aufbau, nur ander Informationen, enthalten, deshalb möchte ich es gerne, am besten für einen Unwissenden, es so einfach wie nur möglich halten seine Datei einzubinden und mit der Anlage arbeiten zu können.
Wenn ich den reinen Pfad über das einlesen einer Datei an den Call Libary Function Node gebe geht es so nicht? Also ich habs schon so versucht aber mit den verschiedenen Arten von Pfaden bin ich ein wenig durcheinander gekommen.
Alternativ, ist hier vielleicht eine config (.ini) einfacher?

Nur wer neugierig ist, lernt ständig dazu.

Mythos:
Mit LabView lassen sich gut Programme leichter entwickeln

Realität:
Mit LabView lassen sich gut und schlechte Programme leichter enwickeln!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2011, 08:32 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2011 08:32 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.470
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: verschiedene DLLs über ein Libary Fct Node
Hallo M@rRy,

erstmal: dein Name tippt sich echt umständlich. Kannste dir nicht einen einfacheren zulegen? Smile

- Deine Anfrage wird immer unverständlicher. Willst du nun verschiedene DLLs aufrufen oder willst du einer festen DLL einen Pfad übergeben?

- Wie willst du DLL-Aufrufe durch Ini-Dateien ersetzen???

- Was spricht dagegen, eine WrapperDLL zu erstellen, die ebendiesen Pfad entgegennimmt und damit die anderen DLLs aufruft (die lt. deiner Aussage alle den gleichen Aufbau haben)?

Ich bin nicht so der Windows-DLL-Spezi, vielleicht sollte RolfK hierzu noch einen Komentar abgeben...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2011, 08:45
Beitrag #5

M@rRy Offline
LVF-Padawan
***


Beiträge: 273
Registriert seit: Aug 2011

7.1
2011
EN


Deutschland
RE: verschiedene DLLs über ein Libary Fct Node
(18.08.2011 08:32 )GerdW schrieb:  Hallo M@rRy,

erstmal: dein Name tippt sich echt umständlich. Kannste dir nicht einen einfacheren zulegen? Smile

Tut mir Leid, man kann sich seinen Spitznamen leider nich aussuchen, aber wenn dir das lieber ist kannste auch Daniel sagen, fühle ich mich genau so angesprochen.

(18.08.2011 08:32 )GerdW schrieb:  - Deine Anfrage wird immer unverständlicher. Willst du nun verschiedene DLLs aufrufen oder willst du einer festen DLL einen Pfad übergeben?

Während das Programm läuft, oder bei Programmstart, möchte ich das der User die Maschine auswählt mit der er arbeiten möchte / an die das System angeschlossen ist. Dazu soll eine DLL geladen werden, die dann die nötigen Information, wie Leistung, Wellenlänge, Duty Cycle usw. enthält. Welche von den verschiedenen DLL geladen wird soll der User entscheiden, daher habe ich dann ca. 5 DLL's wovon immer nur eine eingelesen wird was sich im besten Fall über die komplette Laufzeit des Programms nicht ändert.

Bisher habe ich eine DLL immer aufgerufen indem ich auf den Call Libary Function Node geklickt habe und dort dann die Datei mit Pfad ausgesucht habe. Wenn ich das nicht tu und dem Knoten lediglich den Pfad der DLL übergebe, werden dann die selben Einstellungen getroffen wie als wenn ich das per Hand mache?


(18.08.2011 08:32 )GerdW schrieb:  - Wie willst du DLL-Aufrufe durch Ini-Dateien ersetzen???

Für jede Maschine eine Config schreiben und die dann einlesen. Dann bräuchte ich die DLL natürlich nicht mehr.

Nur wer neugierig ist, lernt ständig dazu.

Mythos:
Mit LabView lassen sich gut Programme leichter entwickeln

Realität:
Mit LabView lassen sich gut und schlechte Programme leichter enwickeln!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2011, 08:51 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2011 08:52 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.470
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: verschiedene DLLs über ein Libary Fct Node
Hallo Daniel,

langsam kommt Licht ins Dunkel...
Du benutzt dieses DLLs also nur, um Konfigurationsdaten zu speichern? Warum so umständlich: immer erst eine DLL erstellen, um einmal festgelegte Daten per Aufruf bereitzustellen?

LV bietet:
- Standard-Dateioperation (z.B. für Textdateien)
- Standard-Dateioperationen und String-Befehle (für CSV-Dateien)
- Config-Fileoperationen (für INI-Dateien)
- XML-Fileoperationen (zumindest in neueren LV-Versionen)
- ActiveX (um Excel fernzusteuern und dort Daten abzugreifen)
- ... (eine Menge weiterer Möglichkeiten, um den User vor eine Daten-Auswahl zu stellen)
- alle genannten Optionen bieten die Möglichkeit, mehrere Datensätze in einer Datei (!) zu verwalten

Du nimmst den Weg über eine extern zu erstellende DLL. Geht auch, hat seine Fallstricke (wie die anderen Wege auch) - aber du bist der Programmierer und wählst deine Optionen nach Lastenheft eigenverantwortlich aus...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.08.2011, 09:03
Beitrag #7

M@rRy Offline
LVF-Padawan
***


Beiträge: 273
Registriert seit: Aug 2011

7.1
2011
EN


Deutschland
RE: verschiedene DLLs über ein Libary Fct Node
Zitat:Du benutzt dieses DLLs also nur, um Konfigurationsdaten zu speichern? Warum so umständlich: immer erst eine DLL erstellen, um einmal festgelegte Daten per Aufruf bereitzustellen?

Ja genau. Oke, es war einfach der erste Weg der mir so in den Sinn kam. Bei den INI-Dateien fand ich es gut das man direkt nach den Namen suchen kann und damit direkt die Werte hat (über das Read Key.vi meine ich jetzt). Aber eine Txt würde mir natürlich am besten in den Kram passen, damit sollte ja jeder um können.

Vielen Dank auf jedenfall! Hat mir sehr geholfen und nun lese ich mir mal ein wenig zu dem Thema einlesen mit Txt oder halt INI an. Smile

Nur wer neugierig ist, lernt ständig dazu.

Mythos:
Mit LabView lassen sich gut Programme leichter entwickeln

Realität:
Mit LabView lassen sich gut und schlechte Programme leichter enwickeln!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2011, 19:26
Beitrag #8

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: verschiedene DLLs über ein Libary Fct Node
Also wenn ich die Wahl habe zwischen INI- und txt-Datei, dann INI-Datei.
txt-Datei heißt, ich muss den Parser selber programmieren, mglw. muss das Format exakt festgeklopft sein, und und und...

INI-Datei ist bei sinnvoller Vergabe von Bezeichnern auch für jeden lesbar, die Schreib- und Lese-VIs sind fertig, die Reihenfolge innerhalb des INI-Files ist egal, usw. usw.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2011, 07:10 (Dieser Beitrag wurde zuletzt bearbeitet: 19.08.2011 07:16 von rolfk.)
Beitrag #9

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: verschiedene DLLs über ein Libary Fct Node
(18.08.2011 08:25 )M@rRy schrieb:  Leider habe ich keine andere Version von LV zur Verfügung - obwohl ich gern würde - desalb muss ich damit arbeiten. Ich hatte schon überlegt gehabt ein Drop-Down-Menü zu machen und dann die Case, also genau so wie du es jetzt auch angesprochen hast. Die DLL's sehen auch immer gleich aus aber es werden unter Garantie Neue dazu kommen, die den selben Aufbau, nur ander Informationen, enthalten, deshalb möchte ich es gerne, am besten für einen Unwissenden, es so einfach wie nur möglich halten seine Datei einzubinden und mit der Anlage arbeiten zu können.
Wenn ich den reinen Pfad über das einlesen einer Datei an den Call Libary Function Node gebe geht es so nicht? Also ich habs schon so versucht aber mit den verschiedenen Arten von Pfaden bin ich ein wenig durcheinander gekommen.
Alternativ, ist hier vielleicht eine config (.ini) einfacher?

Dynamisches Verändern des DLL Paths in der Call Library Node ist ein LabVIEW 8.5 Feature. Davor ging das nicht. Soweit Pech für Dich.

Was Du aber tun könntest ist eine DLL zu schreiben die neben den Funktionsparametern auch einen DLL Path bekommt. Dann kannst Du in Deiner DLL Funktion mit LoadLibrary(), GetProcAddress() und FreeLibrary() Deine eigentliche DLL selber laden und ausführen so wie Du das willst.

Eine andere Variante die das Problem nach LabVIEW verlagert, wäre um mittels Call By Reference jeweils die DLL spezifischen VI's aufzurufen. Dann musst Du zwar für jede DLL noch stets ein neues VI schreiben, aber die können ausserhalb Deiner Applikation in einem bestimmten Ordner plaziert werden. Damit kannst Du die Applikation erweitern ohne dass Du sie jeweils neu kompilieren und distributieren musst.

Selber würde ich für die DLL Variante gehen aber das ist nicht ganz trivial. Du musst nämlich auch noch bestimmen zu welchem Zeitpunkt Du jeweils eine DLL wieder aus dem Speicher werfen willst und das korrekt managen.

Und um Konfigurationsdaten zu laden benütze ich immer die INI Files, ausser der Kunde hat bereits ein anderes File Format definiert. Dazu DLLs herbeizuzerren ist wie einen Nagel mit dem Presslufthammer einzuschlagen.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.08.2011, 10:15
Beitrag #10

M@rRy Offline
LVF-Padawan
***


Beiträge: 273
Registriert seit: Aug 2011

7.1
2011
EN


Deutschland
RE: verschiedene DLLs über ein Libary Fct Node
Hallo nochmal und danke euch beiden für die Tipps!

Die Sachlage hat sich, man muss schon fast sagen leider, ein wenig geändert. Zunächst habe ich das ganze mit der Textdatei probiert und das geht super. Leider ist mir dieses Problem was Jens bereits angesprochen hat, das das Format immer gleich bleiben muss, ein wenig zu heikel, weshalb diese Lösung nun raus ist. Die INI wäre weiterhin eine Option gewesen - bis gestern Abend - Schade!

Es wird doch eine DLL sein müssen und zwar aus folgendem Grund. Beim Programmstart soll die Maschine ausgewählt werden und die "Treiber" für genau diese dann auch geladen werde, bis dahin alles wie gehabt. Um Ressourcen zu sparen möchte ich aber nicht alle theoretisch denkbaren Outputs definieren sondern dann auch nur die die ich brauche. Bisher habe ich Anlagen gefunden die entweder mit einem Counter, einem reinen Analogsignal oder einem digitalen Signal angesteuert werden. Ich möchte aber nicht am Programmstart alle drei Tasks starten um dann nur den wirklich benötigten benutzen während die andern beiden so nebenher laufen. Deshalb war die Idee eine Wrapper-DLL zu schreiben die lediglich einen String (also die benötigte DLL als reinen Namen) bekommt und danach dann die eine DLL lädt mit den Daten.

Ich finde ja schon selbst das das sehr umständlich ist, aber so gehe ich sicher das ich garantiert nur das starte was ich auch brauche.

Ein wenig zum Thema DLL in DLL aufrufen und so hab ich schon gelesen und dabei bin ich auch genau über die drei von rolfk bereits angesprochenen Funktionsaufrufe gestoßen. Doch wie kann ich den bereits in der unter DLL, also die die von der Wrapper-DLL aufgerufen wurde, gestartete Task an mein LV-Programm übergeben? Kennt C einen Datentyp wie Task oder Thread?

Die Wrapper-DLL versuche ich in C ++ zu schreiben. Falls noch jemand einen Tipp für mich hat bin ich da sehr dankbar.

Gruß
Daniel

Nur wer neugierig ist, lernt ständig dazu.

Mythos:
Mit LabView lassen sich gut Programme leichter entwickeln

Realität:
Mit LabView lassen sich gut und schlechte Programme leichter enwickeln!
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
  DLLs kopieren/Bibliothek nicht gefunden ares2013 4 5.528 26.11.2020 17:06
Letzter Beitrag: rolfk
  Type Libary Pfad herausfinden LabDevo_CLD 1 7.147 24.07.2017 10:25
Letzter Beitrag: jg
  Mehrere Cuda DLLs Context-Übergabe grey 2 6.143 17.06.2010 19:50
Letzter Beitrag: rolfk
  Einbindung der Vector driver libary 6.7 in LabVIEW Langen8 3 7.507 31.07.2009 14:31
Letzter Beitrag: rolfk
  Konsolenausgabe bei dlls martinv 1 4.277 20.06.2009 06:25
Letzter Beitrag: rolfk
  Call Libary Function Node pannchen 3 9.191 06.04.2009 08:11
Letzter Beitrag: pannchen

Gehe zu: