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!

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
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: