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!

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
Antwort schreiben 


Nachrichten in diesem Thema
Tasking Library - eg - 08.12.2008, 12:49
RE: Tasking Library - railang - 30.10.2013, 22:45
Tasking Library - eg - 08.12.2008, 13:38
Tasking Library - IchSelbst - 08.12.2008, 22:40
Tasking Library - eg - 08.12.2008, 22:44
Tasking Library - eg - 09.12.2008, 02:34
Tasking Library - IchSelbst - 09.12.2008, 20:51
Tasking Library - IchSelbst - 09.12.2008, 20:55
Tasking Library - eg - 09.12.2008, 21:12
Tasking Library - eg - 09.12.2008, 21:20
Tasking Library - IchSelbst - 09.12.2008, 21:42
Tasking Library - eg - 09.12.2008, 22:13
Tasking Library - IchSelbst - 09.12.2008, 22:48
Tasking Library - cb - 09.12.2008, 22:51
Tasking Library - eg - 09.12.2008, 23:48
Tasking Library - macces - 12.12.2008, 08:27
Tasking Library - eg - 12.12.2008, 10:58
Tasking Library - rasta - 13.12.2008, 07:26
Tasking Library - cb - 13.12.2008, 08:58
Tasking Library - eg - 15.12.2008, 23:20
Tasking Library - eg - 15.12.2008, 23:26
Tasking Library - cb - 16.12.2008, 19:23
Tasking Library - macces - 08.01.2009, 11:21
Tasking Library - eg - 08.01.2009, 11:36
Tasking Library - macces - 08.01.2009, 11:46
Tasking Library - rolfk - 09.01.2009, 12:03
Tasking Library - cb - 09.01.2009, 17:24
Tasking Library - macmarvin - 17.03.2009, 09:28
Tasking Library - Achim - 17.03.2009, 09:44
Tasking Library - macmarvin - 17.03.2009, 22:13
Tasking Library - eg - 17.03.2009, 22:25
Tasking Library - macmarvin - 17.03.2009, 23:22
Tasking Library - eg - 17.03.2009, 23:43
Tasking Library - eg - 18.03.2009, 00:00
Tasking Library - macmarvin - 18.03.2009, 00:17
Tasking Library - rolfk - 18.03.2009, 08:12
Tasking Library - eg - 18.03.2009, 11:49
Tasking Library - rolfk - 18.03.2009, 14:15
Tasking Library - eg - 18.03.2009, 14:33
Tasking Library - rolfk - 18.03.2009, 15:20
Tasking Library - eg - 18.03.2009, 15:30
Tasking Library - cb - 18.03.2009, 19:43
Tasking Library - rolfk - 19.03.2009 09:33
Tasking Library - eg - 12.05.2009, 11:59
Tasking Library - cb - 12.05.2009, 12:54
Tasking Library - rasta - 18.05.2009, 13:10

Gehe zu: