01.12.2009, 19:55
Beitrag #1
|
M4Z
LVF-Grünschnabel
Beiträge: 27
Registriert seit: Nov 2009
2009
2008
kA
4813
Schweiz
|
Unterschied Managed/Unmanaged C++ DLL?
Hallo miteinander!
Ich bin Systemtechnikstudent im dritten Semester und arbeite gerade an einem Testautomaten, der mit LabVIEW 8.5 gesteuert etc werden soll.
Dazu benötigen wir von unserem Auftraggeber eine DLL, um spezifische Funktionen im Testobjekt aufzurufen. Diese DLL wird erst noch geschrieben.
Nun zu meiner Frage: Unser Auftraggeber fragte, ob wir eine managed oder eine unmanaged DLL brauchen. Nach kurzer Rücksprache mit einem Dozenten, der sich mit LabVIEW auskennt, riet dieser uns, eine unmanaged DLL zu verlangen. Nun ist fraglicher Dozent längerfristig nicht erreichbar und unser Auftraggeber möchte wissen, wieso wir eine unmanaged DLL wollen. Eine solche zu schreiben bedeute für sie einen Mehraufwand. Ich weiss, dass eine managed DLL auf das .NET Framework aufbaut und eine unmanaged nicht.
Welche Vor- und Nachteile bringt es in LabVIEW mit sich, eine managed bzw. unmanaged DLL einzubinden bzw. ist überhaupt beides möglich?
Vielen Dank für eure Hilfe!
greetz
M4Z
PS: Sorry falls fas eine totale Noobfrage ist, aber ich hab mit LabVIEW leider noch nicht sehr viel Erfahrung.
thx
|
|
|
02.12.2009, 09:57
Beitrag #2
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
Unterschied Managed/Unmanaged C++ DLL?
Bei managed Mode geht es um .Net Assemblies. Auf die greift man mit den LabVIEW .Net Nodes zu. Bei Unmanaged Mode geht es um Standard DLLs welche Funktionen exportieren. Diese werden typischerwiese nicht in C# sondern in C oder C++ programmiert und in LabVIEW mittels Call Library Node angesprochen.
Grundsätzlich ist das Erstellen von .Net Assemblies in C# wohl als einfacher zu bezeichnen, und für C unbedarfte Seelen mittels .Net Funktionen in LabVIEW auch einfacher einzubinden da man sich nicht so ausführlich mit der richtigen Konfiguration von Parametern und deren Datentypen abgeben muss.
Persönlich finde ich die Wahl von .Net, sicher für Treiber, aber in den meisten Fällen etwa das gleiche wie wenn man den Hummer aus der Garage holt um eben mal ein Brot beim Bäcker um die Ecke zu holen, einfach weil er dort steht. Laufen kostet kaum mehr Zeit und wäre viel gesünder.
Aber ja, ich verstehe C ziemlich gut und in obiger Analogie, habe auch Beine die noch funktionieren!
Rolf Kalbermatter
|
|
|
02.12.2009, 12:31
Beitrag #3
|
M4Z
LVF-Grünschnabel
Beiträge: 27
Registriert seit: Nov 2009
2009
2008
kA
4813
Schweiz
|
Unterschied Managed/Unmanaged C++ DLL?
Vielen Dank für den Schnellkurs! Ich werde mich mal informieren, wie das funktioniert und melde mich hier wieder, wenns nicht laufen sollte
Danke nochmal.
PS: Die DLL wird anscheinend in C++ programmiert
|
|
|
21.01.2010, 09:29
(Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2010 09:42 von M4Z.)
Beitrag #4
|
|
|
21.01.2010, 09:35
Beitrag #5
|
Y-P
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
Beiträge: 12.612
Registriert seit: Feb 2006
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
|
Unterschied Managed/Unmanaged C++ DLL?
Bitte hier im Forum hochladen und nicht extern. LVF-Regeln beachten.:rulez:Danke.
Gruß Markus
' schrieb:ich habe die DLL und mein VI jetzt ma gezippt und auf meinen Webspace geladen: Download
--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
|
|
|
22.01.2010, 08:57
Beitrag #7
|
M4Z
LVF-Grünschnabel
Beiträge: 27
Registriert seit: Nov 2009
2009
2008
kA
4813
Schweiz
|
Unterschied Managed/Unmanaged C++ DLL?
' schrieb:Also die .Net Funktion ist scheinbar so deklariert dass das Ein- und Ausgänge sind. Wenn das nur Ausgänge sind, sollte das auch so im .Net Project deklariert werden, ansonsten verlangt LabVIEW halt einen gültigen Eingangswert: zum Beispiel eine leere String- resp. eine False Booleankonstante.
Testen kann ich es nicht denn die Funktion hängt auf meinem Computer undendlich. Weiss aber nicht ob das ist weil ich die entsprechende Hardware/Software nicht habe oder weil einer der Parameter nicht gültig ist.
Ok... Eigentlich sollte die Capabilty Methode der DLL keine weitere Hard- oder Software benötigen... dann werd ich da nochmal den Programmierer kontaktieren müssen. danke schon mal
|
|
|
22.01.2010, 11:27
(Dieser Beitrag wurde zuletzt bearbeitet: 22.01.2010 11:28 von RoLe.)
Beitrag #8
|
RoLe
LVF-Guru
Beiträge: 1.236
Registriert seit: Jul 2007
-
1997
en
0
Schweiz
|
Unterschied Managed/Unmanaged C++ DLL?
' schrieb:Die nicht angeschlossenen Eingänge werden eigentlich nicht benötigt, was mache ich damit?
Habe ich ganz allgemein etwas falsch gemacht?
Als bei mir ist es ausführbar und beendet sich, wenn ich die Eingänge verbinde und die Schleife entferne.
Die beiden Ausgänge bleiben aber leer, weil ...
Code:
public bool Capability(string reader, string antenna, string badge, bool metal, ref string answer, ref bool isPrompt);
Die 2 nicht verbundenen sind als ref deklariert.
Wie das geht mit .NET habe ich noch nicht rausgefunden.
Habe mir mal den Code angeschaut.
Meine Idee, was der "Schlüsselhersteller" (Programmierer) ändern könnte.
Die 2 ref's aus der Funktion entfernen und vorher als public deklarieren.
Die kannst du dann in LabVIEW nach dem aufruf von Capability als Property abfragen.
[code]public class SerComLayer
{
.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
|
|
|
22.01.2010, 11:47
Beitrag #9
|
M4Z
LVF-Grünschnabel
Beiträge: 27
Registriert seit: Nov 2009
2009
2008
kA
4813
Schweiz
|
Unterschied Managed/Unmanaged C++ DLL?
na dass ist doch schon mal was... die Sache mit der "ref-Definition" ist dann wohl auch dafür verantwortlich, dass bei answer nichts herauskommt?
Danke!
|
|
|
| |