# Funktionsreferenz

_viSetAttribute

Setzt irgendein VISA-Attribut
Diese Funktion, die von _viSetTimeout aufgerufen wird, dan AUCH genutzt werden, um andere VISA-spezifischen Attribute zu setzen.
Lies die VISA-Dokumentation, um mehr Informationen und eine Liste der VISA-Attribute und der entsprechenden Werte zu erhalten.

#include <Visa.au3>
_viSetAttribute($h_session, $i_attribute, $i_value)

Parameter

$h_session | Ein VISA descriptor (STRING) ODER ein VISA session handle (INTEGER). Siehe die Bemerkungen zu _viExecCommand für mehr Informationen.
$i_attribute | Der Index des zu ändernden Attributes. Attribute sind in der VISA-Bibliothek definiert. Diese AutoIt-Library definiert nur eine KONSTANTE für das TIMEOUT-Attribut ($VI_ATTR_TMO_VALUE) und für das "Serial Interface"-Attribut und Werte (siehe die Bemerkungen), aber du kannst auch jeden anderen gültigen Index (als Integer) übergeben, wenn du möchtest.
$i_value | Der Wert des Attributes. Es muss ein Integer sein und die möglichen Werte hängen vom Attribut-Typ ab und sind in der VISA-Dokumentation definiert.

Bemerkungen

Es gibt eine Liste der aktuell vordefinierten Atribute und Werte. Beachte, dass du dennoch jedes andere gültige Attribut/jeden anderen Wert über den entsprechenden Integer-Wert übergeben kannst. Siehe dazu das VISA Programmierer Handbuch!
* Attribute: $VI_ATTR_TMO_VALUE -> Set Timeout
* Wert:
A timeout in MILLISECONDS or
$VI_TMO_IMMEDIATE (or 0) for "Return immediatly"
VI_TMO_INFINITE (or "INF") for "No timeout"
* Attribute: $VI_ATTR_ASRL_BAUD
* Wert:
Any valid baudrate (9600, 115200, etc)
* Attribute: $VI_ATTR_ASRL_DATA_BITS
* Wert:
From 5 to 8
* Attribute: $VI_ATTR_ASRL_PARITY
* Wert:
$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
* Wert:
$VI_ASRL_STOP_ONE
$VI_ASRL_STOP_ONE5
$VI_ASRL_STOP_TWO
* Attribute: $VI_ATTR_ASRL_FLOW_CNTRL
* Wert:
$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 (prüfe ob die visa32.dll in {WINDOWS}\system32 vorhanden ist) 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 DESCRIPTORS ist in den Bemerkungen zu der Funktion "_viExecCommand" zu finden.

Siehe auch

_viSetTimeout, _viExecCommand, _viOpen, _viClose

Beispiel

;- This assumes that you have instrument set to GPIB address 3.
; If you have an instrument in a different address change "GPIB::3::0" to the
; corresponding descriptor. Do the same for the call to _viOpen
; It shows how to use the _viSetAttribute. In this example we use _viSetAttribute
; instead of _viSetTimeout to set the GPIB timeout of a _viExecCommand operation.
#include <Visa.au3>
Dim $h_session = 0
; Query the ID of the instrument in GPIB address 3
MsgBox(0,"Step 1","Simple GPIB query with explicit TIMEOUT set")
Dim $s_answer = _viExecCommand("GPIB::3::0","*IDN?",10000) ; 10 secs timeout
MsgBox(0,"GPIB QUERY result",$s_answer) ; Show the answer
; This is the same as using the _viSetAttribute function first:
MsgBox(0,"Step 2","_vOpen + timeout using _viSetAttribute + GPIB query")
Dim $h_instr = _viOpen(3)
; NOTE - This is the same as: _viSetTimeout($h_instr, 10000)
_viSetAttribute($h_instr, $VI_ATTR_TMO_VALUE, 10000) ; 10000 ms = 10 secs
$s_answer = _viExecCommand($h_instr,"*IDN?") ; No need to set the timeout now
MsgBox(0,"GPIB QUERY result",$s_answer) ; Show the answer
MsgBox(0,"Step 3","Close the Instrument connection using _viClose")
_viClose($h_instr) ; Close the instrument connection