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 

VI mit externer DLL macht kein Multithreading



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!

09.12.2009, 17:36
Beitrag #15

wernerIBN Offline
Datenflussumgeher
**


Beiträge: 124
Registriert seit: Sep 2009

8.6 und 2011
2000
DE

52425
Deutschland
VI mit externer DLL macht kein Multithreading
Nach einem weiteren Tag des Testens ist mein Kenntnissstand nun folgender:

LabVIEW ist schon in der Standardeinstellung gut.

Ich gebe jetzt mein Wissen zum Multithreading mit LabVIEW kund, und bitte um Richtigstellung falls ich etwas falsch sehe.

In LV 8.61 ist die Standardeinstellung bei VI-Eigenschaften-->Ausführung "Ablaufinvariant aus" und Bevorzugtes System "Wie Aufrufer" und im CodeInterfaceNode "In UI-Thread ausführen".

Selbst damit laufen meine 4 Sub-VIs Gerät1-Gerät4 parallel (ja, ich staune selberHmm).
Weil nämlich meine DLL-Aufrufe jedes Gerätes (open.vi send.vi read.vi close.vi) in SUB-VIs verpackt sind, macht damit das LabVIEW System im Prinzip folgendes:

Gerät1-open, dann Wechsel zu Gerät2-open, dann wechsel zu Gerät3-open usw.
Die Laufen zwar nicht wirklich parallel, aber LV wechselt durch die VIs durch, und zwar so schnell dass es für mich wie parallel aussieht.

Echt parallel wirds, wenn ich im CodeInterfaceNode "In beliebigen Thread ausführen" wähle.

Aber mein Problem ändert sich dadurch nicht, weil, ja weil: der Fehler ist nicht LV oder meine DLL, das Problem sitzt in dem SerialDeviceServer, der eben 4 serielle Schnittstellen an TCP/IP bringt. Dieses Teil sendet zwar auf allen 4 Ports gleichzeitig aus, aber die gleichzeitig über RS232/485 eintreffenden Antworten queued das Mistding, und legt diese dann 300ms nacheinander aufs Netz, so dass selbst meine Parallele Empfangerei die Antwort des 4. Gerätes erst nach 300ms*4=1200ms in LabVIEW anzeigen kann.

Ich hätt das nie für möglich gehalten, und hatte LV oder meine DLL im Verdacht.

Der Hersteller des Gerätes ist informiert und ich warte auf Antwort.Grrr

Danke für eure Hilfe.Wub_anim

Werner

Erfahrung ist die Summe der gemachten Fehler
KISS - Keep it simple and stupid
Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
VI mit externer DLL macht kein Multithreading - wernerIBN - 09.12.2009 17:36

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Aufruf externer Bibliotheken / Keyence / Schnittstelle _Markus_ 1 5.992 20.05.2019 12:23
Letzter Beitrag: _Markus_
  LabView Wrapper - PostUserEvent aus externer DLL Stephan235 3 10.148 22.07.2015 13:28
Letzter Beitrag: rolfk
  Einbinden externer DLL St_Markus 1 6.508 28.05.2013 15:25
Letzter Beitrag: rolfk
  VI als externer Code finalr 1 4.714 23.11.2012 08:58
Letzter Beitrag: GerdW
  Array Elemnte von externer Funktion verbinden Heili 3 4.936 12.11.2010 13:54
Letzter Beitrag: Lucki
  Debugging externer DLL Tom_UniMainz 4 8.415 22.07.2009 07:31
Letzter Beitrag: rolfk

Gehe zu: