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!
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
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!
Hallo, ich habe jetzt versucht die DLL einzubinden, allerdings funktioniert das nicht so wie ich will. Die DLL ist afaik in C# geschrieben und .NET managed.
ich habe die DLL und mein VI jetzt ma gezippt und auf meinen Webspace geladen
als Answer-String kann eine der folgenden Möglichkeiten herauskommen: "write", "read", "uid" oder "nada".
Die nicht angeschlossenen Eingänge werden eigentlich nicht benötigt, was mache ich damit?
Habe ich ganz allgemein etwas falsch gemacht?
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 !!
--------------------------------------------------------------------------
21.01.2010, 20:23 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2010 20:24 von rolfk.)
' schrieb:Hallo, ich habe jetzt versucht die DLL einzubinden, allerdings funktioniert das nicht so wie ich will. Die DLL ist afaik in C# geschrieben und .NET managed.
ich habe die DLL und mein VI jetzt ma gezippt und auf meinen Webspace geladen
als Answer-String kann eine der folgenden Möglichkeiten herauskommen: "write", "read", "uid" oder "nada".
Die nicht angeschlossenen Eingänge werden eigentlich nicht benötigt, was mache ich damit?
Habe ich ganz allgemein etwas falsch gemacht?
Vielen Dank für die Hilfe
edit:
Datei ist im Anhang, Danke für den Hinweis.
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.
' 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.)
' 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 ...
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 <--(¯`·.
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!
' schrieb: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!
Das sehe ich anders. Kenne mich bei der .Net resp. C# Nomenklature nicht aus aber ich nehme mal an das ref hier einfach bedeudet "pass by reference" also als Pointer und das wird eben für Parameter benützt die einen Wert zurückgeben können. Weiss aber jetzt nicht was .Net benötigt dass es nur ein "output only" ref Parameter ist.