Funktionreferenz


_viSetAttribute

Beschreibung anzeigen in

Setzt VISA Attribute. Diese Funktion, welche durch _viSetTimeout aufgerufen wird, kann auch verwendet werden um die anderen VISA-spezifischen Attribute zu setzen. Für mehr Information und eine Liste der VISA-Attribute, sowie deren entsprechender Werte, lesen Sie die VISA Dokumentation.

#include <Visa.au3>
_viSetAttribute ( $hSession, $iAttribute, $iValue )

Parameter

$hSession Ein VISA Deskriptor (String) oder ein VISA Session Handle (Ganzzahl, Integer).
Für mehr Informationen, siehe die Bemerkungen zu _viExecCommand().
$iAttribute Der Index des Attributes welches geändert werden soll.
Die Attribute sind in der VISA Bibliothek definiert.
Diese AutoIt Bibliothek verwendet nur eine Konstante für das TIMEOUT Attribut ($VI_ATTR_TMO_VALUE) und für die Serial Interface Attribute und Werte (siehe Bemerkungen).
Aber man kann jeden anderen gültigen Index (als ein Integer) übergeben falls man möchte.
$iValue Der Wert des Attributes. Es muss ein Integer sein und die möglichen Werte sind abhängig von den Attributtypen und in der VISA Dokumentation definiert.

Rückgabewert

Erfolg: Gibt 0 zurück.
Fehler: Gibt -1 zurück, falls die VISA-DLL nicht geöffnet werden konnte
oder ein ungleich 0 Wert den VISA Fehlercode darstellt (siehe VISA Programmierhandbuch).

Bemerkungen

Es folgt eine List mit den aktuell vordefinierten Attributen und Werte.
Jedoch kann jedes(r) andere gültige Attribute/Wert, durch das Übergeben des entsprechenden Integerindexes (so wie in dem VISA Programmierhandbuch definiert) an diese Funktion, verwendet werden.

* Attribute: $VI_ATTR_TMO_VALUE -> Setzt das Timeout
* Werte:
Ein Timeout in Millisekunden oder
$VI_TMO_IMMEDIATE (oder 0) für "Sofort zurückkehren"
VI_TMO_INFINITE (oder "INF") für "Kein Timeout"

* Attribute: $VI_ATTR_ASRL_BAUD
* Werte:
Jede gültige Baudrate (9600, 115200, etc)

* Attribute: $VI_ATTR_ASRL_DATA_BITS
* Werte:
Von 5 zu 8

* Attribute: $VI_ATTR_ASRL_PARITY
* Werte:
$VI_ASRL_PAR_NONE
$VI_ASRL_PAR_ODD
$VI_ASRL_PAR_EVEN
$VI_ASRL_PAR_MARK
$VI_ASRL_PAR_SPACE

* Attribute: $VI_ATTR_ASRL_STOP_BITS
* Werte:
$VI_ASRL_STOP_ONE
$VI_ASRL_STOP_ONE5
$VI_ASRL_STOP_TWO

* Attribute: $VI_ATTR_ASRL_FLOW_CNTRL
* Werte:
$VI_ASRL_FLOW_NONE
$VI_ASRL_FLOW_XON_XOFF
$VI_ASRL_FLOW_RTS_CTS
$VI_ASRL_FLOW_DTR_DSR

Wie für alle VISA Funktionen müssen die VISA Bibliotheken installiert sein (es muss die visa32.dll in {WINDOWS}\system32 vorhanden sein)
und eine GPIB Karte (wie z.B. National Instruments NI PCI-GPIB Karte oder die Agilent 82350B PCI High-Performance GPIB Karte) installiert sein.

* Eine detaillierte Beschreibung der bekanntesten VISA Deskriptoren ist in den Bemerkungen zu der Funktion _viExecCommand() zu finden.

Verwandte Funktionen

_viClose, _viExecCommand, _viOpen, _viSetTimeout

Beispiel

; Hier nehmen wir an, dass das Gerät an die GPIB-Adresse 3 gesetzt ist.
; Wenn man ein Gerät in einer anderen Adresse hat, so ist "GPIB::3::0" auf die
; Entsprechende Beschreibung zu ändern. Das Gleiche ist für den Aufruf von _viOpen zu erledigen.
; Es zeigt, wie man _viSetAttribute verwendet. In diesem Beispiel verwenden wir _viSetAttribute
; Anstelle von _viSetTimeout, um den GPIB-Timeout eines _viExecCommand-Vorgangs zu setzen.

#include <MsgBoxConstants.au3>
#include <Visa.au3>

Local $h_Session = 0

; Die ID des Geräts an GPIB-Adresse 3 abfragen
MsgBox($MB_SYSTEMMODAL, "Schritt 1", "Einfache GPIB-Abfrage mit einem explizit gesetzten TIMEOUT")
Local $s_Answer = _viExecCommand("GPIB::3::0", "*IDN?", 10000) ; 10 Sekunden Timeout
MsgBox($MB_SYSTEMMODAL, "GPIB QUERY Ergebnis", $s_Answer) ; Antwort anzeigen

; Dies ist das Gleiche, als wenn man zuerst die _viSetTimeout-Funktion nutzen würde:
MsgBox($MB_SYSTEMMODAL, "Schritt 2", "_vOpen + Timeout durch Verwenden der _viSetTimeout + GPIB Abfrage")
Local $h_Instr = _viOpen(3)
; Folgendes ist zu beachten - Dies ist das Gleiche wie: _viSetTimeout($h_Instr, 10000)
_viSetAttribute($h_Instr, $VI_ATTR_TMO_VALUE, 10000) ; 10000 ms = 10 s

$s_Answer = _viExecCommand($h_Instr, "*IDN?") ; Der Timeout muss nun nicht gesetzt werden
MsgBox($MB_SYSTEMMODAL, "GPIB QUERY Ergebnis", $s_Answer) ; Antwort anzeigen

MsgBox($MB_SYSTEMMODAL, "Schritt 3", "Schließt die Geräteverbindung durch Verwenden von _viClose")
_viClose($h_Instr) ; Schließt die Geräteverbindung