LabVIEWForum.de - DLL: Zwischenergebnisse an LabView senden?

LabVIEWForum.de

Normale Version: DLL: Zwischenergebnisse an LabView senden?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin,
Es geht um mathematische Berechnungen, die innerhalb einer DLL ausgeführt werden.
Soweit alles klar, funktioniert.
Gibt es nun eine Möglichkeit, während die DLL aktiv ist -- das können durchaus mehrere Minuten sein --
Zwischenergebnisse an Labview zu senden?
Und das möglichst ohne den Umweg über eine entsprechende Pufferdatei auf Festplatte.

Ich denke da an folgende Informationen, die die DLL senden soll:
* Wert, der den Fortschritt der Berechnungen darstellt
* Signal, wenn aktualisierte Daten der DLL vorliegen, die dann in LabView entgegengenommen werden
* die eigentlichen Daten (beispielsweise als Array)
* Auslösen von Ereignissen (Plot aktualisieren, neue Werte abspeichern etc.)

Kann mir jemand ein paar Tipps geben, wie man sowas realisieren kann?
Was sind hier eigentlich die entsprechenden Schlagwörter, dass ich mich mal selbst auf die Suche nach Informationen machen kann?
Kann man die DLL irgendwie entkoppelt vom eigentlichen LabView-Programm laufen lassen?
Normalerweise ist ja solange Pause, bis die DLL abgearbeitet ist...

Dank!

EDIT:
Crosspost im NI-Forum? Rolleyes
' schrieb:Gibt es nun eine Möglichkeit, während die DLL aktiv ist -- das können durchaus mehrere Minuten sein -
Zwischenergebnisse an Labview zu senden?
Ja, das geht.
Hast du dir hier mal das Tutorial heruntergeladen? Da ist ein Muster dabei, wie eine laufende DLL in ein LabVIEW-Frontpanelelement schreiben kann.

Zitat:Ich denke da an folgende Informationen, die die DLL senden soll:
Da hier alles über Pointer geht, ist Anzahl und Typ der Daten per se egal. Probleme können nur auftreten beim Decodieren der Daten (das lässt sich aber immer, mal einfacher mal aufwändiger, lösen).

Zitat:Kann man die DLL irgendwie entkoppelt vom eigentlichen LabView-Programm laufen lassen?
Im Prinzip ja. Du hast es ja schon gesagt: In deiner DLL muss du einen Thread starten, der selbständig läuft - dann läuft auch die DLL selbständig. Nur so kann die DLL im Übrigen von selbst Daten an LV senden.

Zitat:Normalerweise ist ja solange Pause, bis die DLL abgearbeitet ist...
Das würde nur gelten, wenn die DLL "im Datenfluss" aufgerufen wird. Da deine DLL aber einen eigenen Thread besitzt, spielt das hier keine Rolle.

Du könntest auch folgendes machen (das ist aber nicht so schön): Mach eine eigene While-Schleife, in der nur die DLL abgearbeitet wird. Die Daten, die dann ganz normal aus der DLL herauskommen, würden dann per Queue an den Rest des LV-Programmes gesendet werden. Das unschöne hier ist, dass das DLL-Programm vom LV-Programm abhängig ist. Die Sache mit der Queue sieht zwar auch unschön aus, ist aber richtig so.
Danke für den Tipp mit dem Tutorial.
Leider habe ich hier nur eine alte LV 6.1 - Version, deswegen kann ich die beigefügten Beispiele nicht öffnen.
Werde mal schauen, ob ich mit der aktuellen Testversion (LV 8?) weiterkomme.
' schrieb:Leider habe ich hier nur eine alte LV 6.1 - Version
Hab ich da was übersehen? :unsure:LV61? Ich rate dringend auf eine Version größer gleich LV-851 "upzudaten".
Habe jetzt die LV2010 Evaluation installiert und kann die Beispiele öffnen.
Leider sind die Beispiele jedoch nicht dokumentiert, und im Tutorial finde ich auch keinen Hinweis auf das von Dir erwähnte Beispiel, wie eine laufende DLL Daten an LV sendet.
Beispiele leider in Delphi... Kenn mich nur mit C gut aus.

Könnte hier jemand mit einem leicht verständlichen Beispiel, bei dem die DLL in C geschrieben wurde, aushelfen?
Literaturhinweise zu diesem Thema sind auch gerne gesehen.
Habe mittlerweile haufenweise Forenbeiträge und die online-Hilfe bei National Instruments zu LV gelesen, aber dieses Thema scheint nirgends
anfängergerecht (also anhand von lauffähigen und dokumentierten Beispielen) behandelt zu werden.
Ist dies evtl. ein Cross-Link?
Ja, habe im NI LabView - Forum einen thread zu diesem Thema gestartet, nachdem die Sache hier stagniert...
Habe jedenfalls hier ein Beispiel gefunden, was einen string aus der dll an LV sendet, und diesen zweimal updatet, während die dll läuft.
http://zone.ni.com/devzone/cda/epd/p/id/1480
Eventuell komme ich damit weiter, um wenigstens das Konzept dahinter zu verstehen.
Eventuell auch nicht, da der Code unkommentiert daherkommt.
Offtopic2
Bitte in Zukunft an die LVF-Regeln denken. Crossposts sind hier nur unter Angabe eines Links zum Crosspost erlaubt.

@GerdW: Danke für den Hinweis, somit weiß hier jeder Bescheid und kann selber nachschauen, ob im NI-Forum Antworten kommen.

Gruß, Jens
' schrieb:Eventuell komme ich damit weiter, um wenigstens das Konzept dahinter zu verstehen.
Dort wird das Datenübertragen mittels einer Message gemacht, die in deinem LV-Programm an einer Eventstruktur herauskommt ...

Zitat:Eventuell auch nicht, da der Code unkommentiert daherkommt.
Ist aber ausreichend ... verstehe sogar ich und ich kann nur Delphi. Rolleyes
Referenz-URLs