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 

Schleife in DLL?



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!

21.04.2010, 21:57
Beitrag #1

kalle Offline
LVF-Grünschnabel
*


Beiträge: 43
Registriert seit: May 2009

6.1 und 8.5
2008
de

18000
Deutschland
Schleife in DLL?
Hallo LabVIEW cracks,

ich habe eine Interbuskarte mit der ich über C++ Befehle den Interbus starten und Ein- und Ausgaben mit den Teilnehmern durchführen kann. Schön wäre natürlich eine LabVIEW-Benutzeroberfläche.
Bindet man eine DLL ein scheint es mir, als müsse diese DLL in kürzerer Zeit abgearbeitet sein als die Schleifenzeit der LabVIEW-schleife die die DLL aufruft. Das Problem ist das das C++ Programm selber solange in einer Schleife laufen muss wie der Bus laufen soll.
Gibt es vielleicht doch eine Möglichkeit C++ Code einzubinden der eine Dauer-Schleife enthält?
Gruß Kalle
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.04.2010, 22:05 (Dieser Beitrag wurde zuletzt bearbeitet: 21.04.2010 22:06 von eg.)
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Schleife in DLL?
Ich würde vorschlagen - du machst eine extra Schleife in LV, die nur diese DLL enthält und den Rest deines Progs läuft in einer (oder mehreren) anderen Schleife.

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.04.2010, 22:15
Beitrag #3

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Schleife in DLL?
Habe zuerst gedacht, dass der Aufruf zu lange dauert (wegen Timeouts in der DLL), aber es scheint so zu sein, dass die DLL solange läuft, wie das LV Programm.
Dann noch paar Vorschläge:
DLL so anpassen, dass sie schnell und kurz aufrufbar ist, die Schleife wird also in LV laufen
Callbacks benutzen, aber da ist das Problem mit dem Beenden der DLL

Gruß

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.04.2010, 06:41 (Dieser Beitrag wurde zuletzt bearbeitet: 22.04.2010 06:43 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Schleife in DLL?
Was eg im ersten Post erwähnte ist zwar theoretisch möglich aber eine so schlechte Implementation, dass ich das NIE empfehlen würde. Du kannst im Allgemeinen nicht einfach ein C Programm nehmen und das ohne Änderung in eine DLL umwandelen. Grundsätzlich sollte die Schlaufe und so in LabVIEW sein und Du rufst dann die entsprechenden Treiberfunktionen auf die Du auch in Deinem C Programm aufrufst. Du musst also die DLL Schnitsstelle so wählen dass die Funktionen selber nicht zu lange dauern. Während LabVIEW nähmlich in einer DLL weilt, kannst Du Dein LabVIEW Programm nicht einfach abschliessen. LabVIEW wartet nähmlich ganz nett darauf dass die DLL Funktion zurückkommt bevor es alles abschliesst. Nur ein Processkill von Windows aus für den ganzen LabVIEW Prozess kann das umgehen aber das ist eine sehr drastische Methode und zudem eine die eine Hardware in einem unzulässigen Zustand zurücklassen kann wenn der Treiber mitten in einer Registerprogrammierung brutal unterbrochen wurde.

Also heisst es die einzelenen Funktionen identifizieren und diese in eine DLL verlagern. Grundsätzlich dürfte das mehr oder weniger die Treiber DLL Schnittstelle sein. Aber um eine Wrapper DLL wirst Du eventuel doch nicht kommen, da manchmal die Datentypen von Funktionsparametern von solchen DLLs nicht sehr LabVIEW Call Library Node freundlich sind und wenn es gar mit Callbacks funktioniert führt keine sinnvolle Weise an einer Wrapper DLL vorbei.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.04.2010, 09:20
Beitrag #5

kalle Offline
LVF-Grünschnabel
*


Beiträge: 43
Registriert seit: May 2009

6.1 und 8.5
2008
de

18000
Deutschland
Schleife in DLL?
Danke für die Antworten. Mit der Dll-Einbindung habe ich es nicht hinbekommen. Allerdings kam ich beim Stöbern im Forum auf die Idee die Werte aus der C++-Schleife mit Activex nach LabVIEW zu schleusen und umgekehrt. Das funzt auch gut und schnell, so dass ich den Bus über LabVIEW bedienen und visualisieren kann. Ziel erreicht. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: