08.09.2010, 16:21
(Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2010 16:12 von jg.)
Beitrag #1
|
halhar
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Sep 2010
6.1
-
de
Deutschland
|
DLL: Zwischenergebnisse an LabView senden?
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?
|
|
|
09.09.2010, 11:37
Beitrag #2
|
IchSelbst
LVF-Guru
Beiträge: 3.692
Registriert seit: Feb 2005
11, 14, 15, 17, 18
-
DE
97437
Deutschland
|
DLL: Zwischenergebnisse an LabView senden?
' 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.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
|
|
|
09.09.2010, 13:28
Beitrag #3
|
halhar
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Sep 2010
6.1
-
de
Deutschland
|
DLL: Zwischenergebnisse an LabView senden?
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.
|
|
|
09.09.2010, 16:04
Beitrag #4
|
|
|
09.09.2010, 16:07
(Dieser Beitrag wurde zuletzt bearbeitet: 09.09.2010 16:13 von halhar.)
Beitrag #5
|
halhar
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Sep 2010
6.1
-
de
Deutschland
|
DLL: Zwischenergebnisse an LabView senden?
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.
|
|
|
10.09.2010, 15:00
(Dieser Beitrag wurde zuletzt bearbeitet: 10.09.2010 15:00 von GerdW.)
Beitrag #6
|
GerdW
______________
Beiträge: 17.467
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
DLL: Zwischenergebnisse an LabView senden?
Ist dies evtl. ein Cross-Link?
|
|
|
10.09.2010, 15:39
Beitrag #7
|
halhar
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Sep 2010
6.1
-
de
Deutschland
|
DLL: Zwischenergebnisse an LabView senden?
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.
|
|
|
10.09.2010, 16:11
Beitrag #8
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
DLL: Zwischenergebnisse an LabView senden?
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
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.
|
|
|
10.09.2010, 17:16
Beitrag #9
|
|
|
| |