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.


Umfrage: Ist diese Library was f
Ja, ich bin sehr beeindruckt
Sehr sch
[Zeige Ergebnisse]
 
Antwort schreiben 

Tasking Library



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!

18.03.2009, 19:43
Beitrag #41

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Tasking Library
is jetz schon sehr OT, nimmt aber bezug zu den Posts darüber:

ich glaub nicht, dass se sinnvoll ist bei einem VISA Read auf einen seriellen Port eine unbegrenzte Wartezeit anzugeben, aus folgendem Grund: wenn nun keine Daten mehr reinkommen wartet das VISA Read VI unendlich lange, und das ist bestimmt länger als man das Programm drumherum laufen lassen möchteWink=> man kann eigentlich nur noch mit "Exit LabVIEW" einen Abrruch erzwingen und das ist nicht besonders sauber ...

Wenn ich über VISA kommuniziere hab ich eigentlich immer so Schleifendurchlaufzeiten von 100 ms, nicht länger

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
19.03.2009, 09:33 (Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2009 09:34 von rolfk.)
Beitrag #42

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Tasking Library
' schrieb:is jetz schon sehr OT, nimmt aber bezug zu den Posts darüber:

ich glaub nicht, dass se sinnvoll ist bei einem VISA Read auf einen seriellen Port eine unbegrenzte Wartezeit anzugeben, aus folgendem Grund: wenn nun keine Daten mehr reinkommen wartet das VISA Read VI unendlich lange, und das ist bestimmt länger als man das Programm drumherum laufen lassen möchteWink=> man kann eigentlich nur noch mit "Exit LabVIEW" einen Abrruch erzwingen und das ist nicht besonders sauber ...

Wenn ich über VISA kommuniziere hab ich eigentlich immer so Schleifendurchlaufzeiten von 100 ms, nicht länger

Nun, die Idee wäre, dass ein VISA Close die Resource abschliesst und das VISA Read mit unendlichem Timeout abgebrochen wird und mit einem entsprechenden Fehler zurückkehrt. Ein bischen dasselbe wie mit Queues, Notifiern etc.

Bei Queues und Co funktioniert das auch aber bei VISA leider nicht. Aber, wenn man in NI Spy nachschaut, sieht man das LabVIEW normalerweise viReadAsync(...) aufruft auch wenn VISA Read scheinbar synchron arbeitet. Der Grund ist einfach wenn man sich mit dem VISA API ein bischen abgegeben hat. Beim Gebrauch vom synchronen viRead(...) kann nur ein viRead(...) gleichzeitig aktiv sein (ob das jetzt per Applikation gilt oder System global weiss ich nicht mal sicher). Damit wären komplizierte Applikationen mit Ansprechen von mehreren Instrumenten gleichzeitig kaum zu machen. Mit viReadAsync(...) kann LabVIEW das umgehen, indem es das synchrone Warten halt selber macht und regelmässig mit viWaitOnEvent(..., VI_EVENT_ON_COMPLETION, ...) selber checken ob die angeforderten Daten schon eingetroffen sind.

Und um eine asynchrone viRead/WriteAsync(...) Operation abzubrechen kann man halt eben viTerminate(..., VI_NULL) auf die entsprechende Resource aufrufen. Das VI-NULL am Ende sagt VISA dass alle asynchronen Operationen für die entsprechende VISA Resource abgebrochen werden sollen. Beim nächsten Aufruf von viWaitOnEvent(...) durch LabVIEW sieht es dass die asynchrone Operation abgebrochen wurde und sollte mit einem entsprechenden Fehler das VISA Read beenden.

Eigentlich ist es ein Bug in LabVIEW. VISA Close sollte sicherheitshalber auch noch ein entsprechendes viTerminate(...) ausführen, allenfalls mit einem Boolean Parameter am VISA Close auschaltbar. Default sollte aber beim Abschliessen einer VISA Resource auch alle möglicherweise noch anstehenden asynchronenen Operationen automatisch auch abgebrochen werden.

Ich muss dabei erwähnen dass diese Analyse nicht 100% ist. Es könnte sein dass das Problem noch durch etwas anderes verursacht wird, und mein VI von zwei Posts höher noch nicht die Lösung ist, aber es ist meiner Meinung nach eine Unterlassung von LabVIEW um eventuelle VISA Read Operationen nicht zu beenden wenn eine VISA Resource anderswo im Programm explizit abgeschlossen wurde, und ziemlich sicher sogar wenn das implizit passiert (auto refnum cleanup).

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
12.05.2009, 11:59
Beitrag #43

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Tasking Library
' schrieb:Hallo zusammen,
eg ich habe mir die library auch heruntergeladen und probeweise getestet und finde sie auf den ersten Blick
sehr interessant.
Ich werde mich bestimmt damit näher beschäftigen wenn ich Zeit und Ruhe (genau hier ist mein Problem) habe.
Es ist in meinen Augen eine tolle Sache wenn solche Ideen hier eingestellt und diskutiert werden.
Nun kann ich noch nicht viel beitragen, jedoch habe ich das "Get Notifier Status" Modul vermisst,
da ich diese Funktion auch häufig nutze.

Gruß
Ralf

PS: OSD/FGV benutze ich ebenfalls immer häufiger und kann deine Argumentation nicht nachvollziehen (Provokation?)

Hi, ich mache gerade eine neue Version der Tasking Library. Nun wollte ich wissen, wozu du das VI Get Notifier Status nutzt?

In der neuen Version wird CmdNumber+VariantData Cluster zum Übertragen von Datenpaketen benutzt. Ansonsten bleibt es gleich. Gibt es sonstige Wünsche zum Verbessern der Library?

Gruß, eg

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.05.2009, 12:54
Beitrag #44

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Tasking Library
' schrieb:Nun, die Idee wäre, dass ein VISA Close die Resource abschliesst und das VISA Read mit unendlichem Timeout abgebrochen wird und mit einem entsprechenden Fehler zurückkehrt. Ein bischen dasselbe wie mit Queues, Notifiern etc.

Bei Queues und Co funktioniert das auch aber bei VISA leider nicht. Aber, wenn man in NI Spy nachschaut, sieht man das LabVIEW normalerweise viReadAsync(...) aufruft auch wenn VISA Read scheinbar synchron arbeitet. Der Grund ist einfach wenn man sich mit dem VISA API ein bischen abgegeben hat. Beim Gebrauch vom synchronen viRead(...) kann nur ein viRead(...) gleichzeitig aktiv sein (ob das jetzt per Applikation gilt oder System global weiss ich nicht mal sicher). Damit wären komplizierte Applikationen mit Ansprechen von mehreren Instrumenten gleichzeitig kaum zu machen. Mit viReadAsync(...) kann LabVIEW das umgehen, indem es das synchrone Warten halt selber macht und regelmässig mit viWaitOnEvent(..., VI_EVENT_ON_COMPLETION, ...) selber checken ob die angeforderten Daten schon eingetroffen sind.

Und um eine asynchrone viRead/WriteAsync(...) Operation abzubrechen kann man halt eben viTerminate(..., VI_NULL) auf die entsprechende Resource aufrufen. Das VI-NULL am Ende sagt VISA dass alle asynchronen Operationen für die entsprechende VISA Resource abgebrochen werden sollen. Beim nächsten Aufruf von viWaitOnEvent(...) durch LabVIEW sieht es dass die asynchrone Operation abgebrochen wurde und sollte mit einem entsprechenden Fehler das VISA Read beenden.

Eigentlich ist es ein Bug in LabVIEW. VISA Close sollte sicherheitshalber auch noch ein entsprechendes viTerminate(...) ausführen, allenfalls mit einem Boolean Parameter am VISA Close auschaltbar. Default sollte aber beim Abschliessen einer VISA Resource auch alle möglicherweise noch anstehenden asynchronenen Operationen automatisch auch abgebrochen werden.

Ich muss dabei erwähnen dass diese Analyse nicht 100% ist. Es könnte sein dass das Problem noch durch etwas anderes verursacht wird, und mein VI von zwei Posts höher noch nicht die Lösung ist, aber es ist meiner Meinung nach eine Unterlassung von LabVIEW um eventuelle VISA Read Operationen nicht zu beenden wenn eine VISA Resource anderswo im Programm explizit abgeschlossen wurde, und ziemlich sicher sogar wenn das implizit passiert (auto refnum cleanup).

Rolf Kalbermatter

ich glaub du hast mir grad eine prima Erklärung dafür geliefert, warum eigentlich alle Applikationen in denen ich VISA verwende seit dem Update auf LV 8.5 (ich denke nicht dass es an LV hängt, eher an der dabei installierten VISA Version ...) sporadisch mit einem Application error beendet werden, wenn sie eigentlich schon beendet sind, was ich unter anderem daran erkenne das das FP vom Haupt-VI geschlossen wurde ... da hängt wohl noch irgendwo ein VISA Read in der Luft ...

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.05.2009, 13:10
Beitrag #45

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
Tasking Library
' schrieb:Hi, ich mache gerade eine neue Version der Tasking Library. Nun wollte ich wissen, wozu du das VI Get Notifier Status nutzt?

In der neuen Version wird CmdNumber+VariantData Cluster zum Übertragen von Datenpaketen benutzt. Ansonsten bleibt es gleich. Gibt es sonstige Wünsche zum Verbessern der Library?

Gruß, eg

Hallo eg,
überall da wo ich die Synchronisierungsfunktion (auf Meldung warten) nicht gebrauchen kann und mich einfach nur der aktuelle Status sprich die letzte Meldung interessiert.
Gruß
Ralf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.10.2013, 22:45
Beitrag #46

railang Offline
Strippenzieher


Beiträge: 1
Registriert seit: Apr 2012

2012 sp1
2011
EN

63607
Deutschland
RE: Tasking Library
Hallo eg.

Ich habe vor meine Applikation auf der Tasking Library aufzubauen.
Würdest du bitte die aktuelle Version (mit CmdNumber+VariantData) posten?

Vielen Dank.
--rainer
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: