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 

Run in UI-Thread in 8.5



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!

24.01.2008, 18:11
Beitrag #1

HarryPython Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Oct 2007

8.2.1
2007
kA


Deutschland
Run in UI-Thread in 8.5
Hallo.


Ich erstelle mit LabVIEW eine dll. Nun ist es wichtig, dass ich diese in meinem Python Programm mehrfach nutzen kann. Ich weiß, dass man UI-Thread beim erstellen einer dll einstellen konnte. Das stand sonst immer neben dem Funktionsnamen. Bin gerade auf LabVIEW 8.5 umgestiegen und nun ist diese Einstellung wech. Blink

Kann mir da jemand Helfen?


Gruß
HP
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.01.2008, 20:03 (Dieser Beitrag wurde zuletzt bearbeitet: 24.01.2008 20:03 von Y-P.)
Beitrag #2

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Run in UI-Thread in 8.5
Komisch, bei mir gibt's das noch (vgl. Screenshot), aber darüber was das bedeutet und wie das mit den DLLs sonst so funktioniert weiß ich so gut wie nichts.

Gruß Markus

   

' schrieb:und nun ist diese Einstellung wech. Blink

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.01.2008, 09:04
Beitrag #3

HarryPython Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Oct 2007

8.2.1
2007
kA


Deutschland
Run in UI-Thread in 8.5
Hi Markus.

Danke für deine schnelle Antwort. Bei mir sieht das allerdings so aus:

   


Kannst du mir sagen wie du zu dem Fenster gekommen bist? Ich geh im Projekt Explorer auf Build-Spezifikationen -> Neu -> DLL -> Quelldateien. Wenn ich dann mein VI von "Projektdateien" in "Exportierte VIs" ziehe, kommt das Fenster.

Gruß
HP
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.01.2008, 09:57
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Run in UI-Thread in 8.5
Markus hat das Fenster beim IMPORT einer dll-Funktion in LV (Konfiguration der Call Library Node) hier hochgeladen...

MfG, 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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.01.2008, 10:18
Beitrag #5

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Run in UI-Thread in 8.5
' schrieb:Hallo.
Ich erstelle mit LabVIEW eine dll. Nun ist es wichtig, dass ich diese in meinem Python Programm mehrfach nutzen kann. Ich weiß, dass man UI-Thread beim erstellen einer dll einstellen konnte. Das stand sonst immer neben dem Funktionsnamen. Bin gerade auf LabVIEW 8.5 umgestiegen und nun ist diese Einstellung wech. Blink

Kann mir da jemand Helfen?
Gruß
HP

Du musst da etwas durcheinander bringen. Nicht die Funktion selber bestimmt in welchem Thread sie ausgeführt wird sondern der Aufrufer davon. Das ist immer schon so gewesen und die Funktionsprototypkonfiguration hat damit nichts zu tun!

Wenn Du willst dass ein VI in einer DLL im UI Thread ausgeführt wird wirst Du schon das VI selber unter File->VI Properties vor dem DLL Build entsprechend konfigurieren müssen um im UI Thread zu laufen.

Rolf Kalbermatter

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
25.01.2008, 10:57 (Dieser Beitrag wurde zuletzt bearbeitet: 25.01.2008 10:59 von HarryPython.)
Beitrag #6

HarryPython Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Oct 2007

8.2.1
2007
kA


Deutschland
Run in UI-Thread in 8.5
Hi

@ Jens: Ok, dann gibt es das Fenster wohl nur beim LV dll import. Dachte sowas gibt es dann auch beim Export. Mein Fehler.


@ Rolf: Ich möchte von, den in der dll enthaltenen Funktionen, mehrere Instanzen in meinem Python Programm erzeugen. Bei der Ausgabe von meinen Python Programm Daten sieht das aber so aus, als würde nur eine Instanz erstellt werden. Daher will ich gerade prüfen ob meine dll Thread safe ist oder nicht. Bim Erzeugen der dll hab ich darauf nicht geachtet.

Meinst du diese Einstellungen:

   


Ich hab mir die Hilfe dazu mal durchgelesen aber leider nicht ganz verstanden ob sie damit das Aufrufen von einem externen Programm meinen.


Gruß
HP


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.01.2008, 11:12
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Run in UI-Thread in 8.5
' schrieb:Hi

@ Jens: Ok, dann gibt es das Fenster wohl nur beim LV dll import. Dachte sowas gibt es dann auch beim Export. Mein Fehler.
@ Rolf: Ich möchte von, den in der dll enthaltenen Funktionen, mehrere Instanzen in meinem Python Programm erzeugen. Bei der Ausgabe von meinen Python Programm Daten sieht das aber so aus, als würde nur eine Instanz erstellt werden. Daher will ich gerade prüfen ob meine dll Thread safe ist oder nicht. Bim Erzeugen der dll hab ich darauf nicht geachtet.

Meinst du diese Einstellungen:

[attachment=37878:2008_01_25_084809.jpg]
Ich hab mir die Hilfe dazu mal durchgelesen aber leider nicht ganz verstanden ob sie damit das Aufrufen von einem externen Programm meinen.
Gruß
HP

Ja das meine ich und ist absolut unabhängig davon ob das VI aus LabVIEW direkt aufgerufen wird oder innerhalb der Runtimeumgebung von einem DLL Funktionswrapper.

Aber ich denke mal dass Du ein prinzipielles Problem hast hier. Wenn Du eine Funktion mehrmals parallel aufrufen willst, willst Du gerade nicht, dass diese automatisch in den UI Thread gezwungen wird. Dann wird der Aufrufer für den zweiten und dritten Aufruf nämlich blockiert bis der erste Aufruf beendet ist. Das kann nicht anders.
Bleibt auch noch die Frage ob den Python so einfach mehrere Threads möglich macht. Solange Deine aufrufende Umgebung nur einen Thread hat macht es eh nichts aus wie die DLL konfiguriert ist.

Was Du mit mehreren Funktionsinstanzen meinst ist mir auch nicht deutlich. Funktionen sind nicht Objekte die man instantieren kann. Funktionen kann man aufrufen (eventuel mehrmals parallel) und die kehren irgendwann mal wieder zurück. Ob man sie mehrmals gleichzeitig aufrufen kann hängt nur davon ab ob sie reentrant sind. Und das ist eine Funktion abhängig davon ob sie nur lokale Variablen haben (dann sind sie reentrant) oder aber auch auf globale Resourcen zugreifen (File IO, Hardware ganz allgemein, globale Variablen und dergleichen). In dem Fall sind sie entweder protected (ein Semaphore oder so verhindert den gleichzeitigen Zugriff auf die globale Resource bei Mehrfachaufrufen) oder single threaded (der Aufrufer ist selber dafür verantwortlich um die Funktion nicht mehrmals parallel aufzurufen).

So wie es mir scheint hast Du bis jetzt entweder die Begriffsterminologie noch nicht so ganz korrekt, oder das Verständnis von Multithreading ist nicht korrekt oder beides davon.

Rolf Kalbermatter

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
25.01.2008, 12:24
Beitrag #8

HarryPython Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Oct 2007

8.2.1
2007
kA


Deutschland
Run in UI-Thread in 8.5
Hi Rolf.

Danke für die schnelle Antwort. Hab die Einstellung gleich mal getestet und sie läuft!!!


Ich erstelle in Python so viele Threads wie ich Messkanäle an meinem Messgerät hab. In jedem dieser Threads erstelle ich dann eine Instanz der dll. Somit hab ich für jeden Kanal die Funktion "Auslesen" aus meiner dll.
Ist leider etwas unverständlich rüber gekommen. Blush


Gruß
HP
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.01.2008, 14:36
Beitrag #9

HarryPython Offline
LVF-Grünschnabel
*


Beiträge: 14
Registriert seit: Oct 2007

8.2.1
2007
kA


Deutschland
Run in UI-Thread in 8.5
So.


Nun hab ich genau das Problem was auch in der Hilfe beschrieben wird.

Ich gebe meine Messwerte mit Hilfe von globalen Variablen an ein anderes VI. Ich kann zwar Instanzen von der dll erstellen aber die globalen Variablen gibt es nur einmal. Wall


Gibt es also eine andere Möglichkeit Daten zwischen VI's auszutauschen?



Danke

Gruß HP
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  DLL Aufruf, "In beliebigem Thread" vs. "Im UI-Thread" (Beispiel fileVersionInfo.llb) dali4u 1 5.421 12.12.2012 09:38
Letzter Beitrag: rolfk

Gehe zu: