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 Funktionen einbauen



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!

28.10.2016, 10:50
Beitrag #1

RaisaGeleta Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Oct 2016

2016
2014
DE



Rainbow DLL Funktionen einbauen
Hallo Leute!

Ich mache gerade mein Praxissemester und wurde sofort ins kalte Wasser geworfen. Ich muss ein altes Messprogramm neu mit Labview Programmieren.
Im Moment komme ich einfach nicht weiter mit der Aufgabenstellung die ich bekommen habe. Ich schreibe Sie mal hier rein.

Hintergrund: Das neue Programm soll sich einfach durch Ergänzen von dll-Dateien in einem Ordner um weitere Messgeräte erweitern lassen.
Eine Änderung des Hauptprogrammes ist dann nicht notwendig. Beim Austausch eines Gerätes im TLP-Messaufbau, wird eine passende dll im
Programmordner hinterlegt und die Messungen können sofort weitergehen.

1) Der Ordner für die dll's soll "Drivers" heißen. Das Hauptprogramm muss in diesem Ordner nach allen dll-Dateien suchen.
2) Die gefundenen dlls müssen geprüft werden, ob diese vom Hauptprogramm genutzt werden können. Hierfür würde ich eine Funktion in jede dll einbauen, die z.B.
"GetDLLType" heißt. Auf diese Funktion müssen alle brauchbaren dll's mit "TLPmeas" antworten.
- Unterstützt die aktuell getestete dll die Funktion "GetDLLType" nicht, so muss diese im Folgenden vom Hauptprogramm ignoriert werden.
- Alle gültigen dll's werden im Anschluss auf die unterstützte Geräteklasse untersucht. Die dll-Funktion "GetDeviceClass" liefert dem Hauptprogramm die notwendige
Information. Gültige Device-Klassen sind: "HVSupply", "SourceMeasureUnit", "Oscilloscope"
3) Mit "GetDeviceName" wird dann das konkret von einer dll unterstütze Gerät abgefragt. Im Moment sind das StanfordResearch PS350, Keysight B2912A, Agilent E5273A, Lecroy WaveRunner 6100A. Das wären also schon mal 4 dll's, die anzulegen sind. Die genauen Namen der Geräte werden wir hier noch mit dem *IDN String der Geräte abgleichen.

Bei 1) könnte ich mir ungefähr vorstellen wie ich das machen muss, nur bei den Rest bin ich überfragt. Muss ich die Funktionen mit C++ programmieren oder kann man das auch mit labview? Ich weiß wie man eine DLL erstellt und einbindet aber irgendwie verstehe ich das ganze noch nicht so ganz. Über paar Tipps wie ich vorgehen könnte wäre ich Dankbar!! Bahn
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
31.10.2016, 11:52
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DLL Funktionen einbauen
Hallo Raisa,

Zitat:Das neue Programm soll sich einfach durch Ergänzen von dll-Dateien in einem Ordner um weitere Messgeräte erweitern lassen.
Das hört sich nett an, hat aber so einige Haken und Ösen!
- Bei einer DLL muss der Aufrufer wissen, welche Funktionen mit welchen Parametern in der DLL enthalten sind - und zwar bevor die DLL aufgerufen wird! Wenn also eine neue DLL in den Ordner gelegt wird, muss sie exakt die gleichen Funktionsaufrufe wie die anderen DLLs bieten, egal welcher Gerätetyp unterstützt werden soll…
- Du kannst in LabVIEW nicht dynamisch neue VIs/DLL-Aufrufe erzeugen. Du kannst nur den Pfad auf eine DLL vorgeben, um damit dann wieder eine bekannte Funktion mit bekannten Parametern aufzurufen!

Wenn du mit diesen Einschränkungen leben kannst, dann kannst du dich gern daran setzen, diesen Aufbau einer Plugin-Architektur in LabVIEW umzusetzen! Big Grin

Zitat:Muss ich die Funktionen mit C++ programmieren oder kann man das auch mit labview?
Wenn du die DLLs nur mit LabVIEW nutzen willst, dann kannst du sie auch mit LabVIEW erstellen…

Warum die Festlegung auf DLLs? Warum keine LabVIEW-internen Dinge wie LLBs, lvlibs, Ordnern mit VIs?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2016, 15:57
Beitrag #3

RaisaGeleta Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Oct 2016

2016
2014
DE



RE: DLL Funktionen einbauen
Danke schon mal für deine Antwort!2hands

Zitat: - Bei einer DLL muss der Aufrufer wissen, welche Funktionen mit welchen Parametern in der DLL enthalten sind - und zwar bevor die DLL aufgerufen wird! Wenn also eine neue DLL in den Ordner gelegt wird, muss sie exakt die gleichen Funktionsaufrufe wie die anderen DLLs bieten, egal welcher Gerätetyp unterstützt werden soll…
- Du kannst in LabVIEW nicht dynamisch neue VIs/DLL-Aufrufe erzeugen. Du kannst nur den Pfad auf eine DLL vorgeben, um damit dann wieder eine bekannte Funktion mit bekannten Parametern aufzurufen!

Hättest du eine Idee wie ich das Umsetzen könnte? Also über Plugin-Architektur habe ich mich gerade schon bisschen informiert etc. Aber irgendwie hat es bei mir noch nicht klick gemacht..

Und ja mit DLL's das muss ich machen, weil es so gewünscht wird. Würde es auch lieber anders machen....


Angry
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2016, 16:26
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DLL Funktionen einbauen
Hallo Raisa,

bei Plugins habe ich bisher nur VIs genutzt:
- Einfach einen Ordner für die Plugin-VIs anlegen und die gewünschten Plugins dort ablegen.
- Die Hauptroutine nutzt ListFolder, um den Ordner nach passenden Plugin-VIs zu durchsuchen.
- Die Plugin-VIs werden dynamisch per VI-Server aufgerufen.
Dazu müssen die Plugin-VIs natürlich alle ein identisches Connectorpane verwenden…

Im Grunde machst du das mit deinen DLLs genauso: Verzeichnis nach DLLs durchsuchen, dann die entsprechende DLL-Funktion aufrufen. Alle DLLs müssen die identischen Funktionen mit identischen Parametern bereitstellen:
   
Den Pfad zur DLL kann man beim Funktionsaufruf vorgeben…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.11.2016, 16:41
Beitrag #5

RaisaGeleta Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Oct 2016

2016
2014
DE



RE: DLL Funktionen einbauen
Vielen Vielen Vielen Dank!! Idea

Jetzt habe ich etwas womit ich endlich mal was anfangen kann Dance2
Ich werde mich jetzt daran halten und hoffen das meine Lösung auch so akzeptiert wird.

Und noch mal danke für deine Mühe!

Big Grin
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
  Signalverlauf verstrichene Zeit einbauen antwort 3 4.102 06.03.2017 15:03
Letzter Beitrag: GerdW
  Funktionen "suchen" gottfried 4 4.583 30.06.2013 08:47
Letzter Beitrag: gottfried
  SubVI wieder einbauen Hasenfuss 3 3.551 29.01.2013 11:31
Letzter Beitrag: jg
  Event handler einbauen Scherni 6 5.750 30.08.2012 10:26
Letzter Beitrag: Scherni
  Array-Funktionen Ninja2602 10 10.801 19.07.2011 18:10
Letzter Beitrag: jg
  Hilfedatei (pdf) in *.lvproj einbauen und daraus aufrufen Aleph1 4 6.283 10.12.2010 13:14
Letzter Beitrag: Aleph1

Gehe zu: