21.11.2007, 14:51
Beitrag #1
|
monoceros84
LVF-Stammgast
Beiträge: 445
Registriert seit: Oct 2006
2011
2006
EN
Deutschland
|
VISA Open & Close References
Hi
Ich hatte bisher noch nie mit VISA zu tun - heute habe ich Premiere.
Ich habe mich ein bisschen über das Resourcen-Management gewundert. So gibt es zwar VISA Open, aber in der Hilfe finde ich, dass VISA Write selbst eine Session öffnet. Tatsächlich funktioniert Write auch ohne Open. Nur wann brauche ich da das Open überhaupt?
Und wann genau muss ich nun Close ausführen? Habe rausgefunden, dass mehrere Sessions offen sein können. Daher sieht es für mich z.Z. so aus, als ob jeder Write- oder Read-Befehl eine Session öffnet, die sofort danach wieder geschlossen werden muss, um nicht in einem Chaos von offenen Sessions zu enden. Oder nutzt ein Write-/ Read-Befehl offene Sessions und öffnet nur eine neue, wenn keine andere verfügbar ist? Dann wäre ja nur ein Close ganz am Ende erforderlich...
Wozu brauche ich überhaupt Sessions? Oder woher weiß Close, welche Session geschlossen werden soll, wenn ihm doch nur die Schnittstelle (z.B. COM1) übergeben wird?
Wie ihr seht, bin ich gerade ziemlich verwirrt, da das Handling der Resourcen wesentlich anders als bei anderen Hardware-Zugriffen (z.B. DAQ, CAN, ...) zu sein scheint. Kann jemand weiterhelfen?
|
|
|
22.11.2007, 13:29
Beitrag #2
|
rolfk
LVF-Guru
Beiträge: 2.306
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
VISA Open & Close References
' schrieb:Hi
Ich hatte bisher noch nie mit VISA zu tun - heute habe ich Premiere.
Ich habe mich ein bisschen über das Resourcen-Management gewundert. So gibt es zwar VISA Open, aber in der Hilfe finde ich, dass VISA Write selbst eine Session öffnet. Tatsächlich funktioniert Write auch ohne Open. Nur wann brauche ich da das Open überhaupt?
Und wann genau muss ich nun Close ausführen? Habe rausgefunden, dass mehrere Sessions offen sein können. Daher sieht es für mich z.Z. so aus, als ob jeder Write- oder Read-Befehl eine Session öffnet, die sofort danach wieder geschlossen werden muss, um nicht in einem Chaos von offenen Sessions zu enden. Oder nutzt ein Write-/ Read-Befehl offene Sessions und öffnet nur eine neue, wenn keine andere verfügbar ist? Dann wäre ja nur ein Close ganz am Ende erforderlich...
Wozu brauche ich überhaupt Sessions? Oder woher weiß Close, welche Session geschlossen werden soll, wenn ihm doch nur die Schnittstelle (z.B. COM1) übergeben wird?
Wie ihr seht, bin ich gerade ziemlich verwirrt, da das Handling der Resourcen wesentlich anders als bei anderen Hardware-Zugriffen (z.B. DAQ, CAN, ...) zu sein scheint. Kann jemand weiterhelfen?
Open ist tatsächlich redundant, schadet aber auch nicht. Close ist dann nötig wenn Du den Port wieder freimachen willst um in anderen Applikationen dann Deiner LabVIEW Applikation zur Verfügung zu stehen.
Neue Ports werden nicht bei jedem Read angelegt. Wenn Du ein Open oder VISA Read/Write ausführst bekommst Du auch eine VISA resource out. Diese führst Du zum folgenden VI und das erkennt, dass es eine bereits geöffnete Resource ist und verwendet diese, statt einer neuen zu öffnen.
Das Handling ist nicht so gravierend anders in neueren LabVIEW Versionen. DAQ, IMAQ usw. verwenden in den neusten LabVIEW Versionen dasselbe Konzept, auch wenn die Implementation auf interner LabVIEW Ebene durchaus unterschiedlich ist.
Rolf Kalbermatter
|
|
|
22.11.2007, 13:55
Beitrag #3
|
|
|
22.11.2007, 17:13
Beitrag #5
|
|
|
| |