Funktionreferenz


_viSetTimeout

Beschreibung anzeigen in

Setzt das VISA Timeout in Millisekunden

#include <Visa.au3>
_viSetTimeout ( $hSession, $iTimeoutMS )

Parameter

$hSession Ein VISA Deskriptor (String) oder ein VISA Session Handle (Ganzzahl, Integer).
Für mehr Informationen, siehe die Bemerkungen zu _viExecCommand().
$iTimeoutMS Der Timeout in Millisekunden für den VISA Vorgang (hauptsächlich für GPIB Abfrage).
Wenn dies auf 0 gesetzt wird, werden die Timeouts deaktiviert.
Wenn dies auf "INF" gesetzt wird, hat der VISA Vorgang keinen Timeout.
Mit diesem Wert muss vorsichtig umgegangen werden, da dadurch das Programm abstürzen kann, falls das Gerät nicht auf die Suchanfragen antwortet.
Abhängig vom Bustyp (GPIB, TCP, etc) kann es sein, dass der Timeout nicht auf den exakt notwendigen Wert gesetzt wird.
Stattdessen wird der nächste gültige Timeout verwendet der größer ist als der gewünschte.

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

Meistens ist es nicht notwendig diese Funktion aufzurufen, da _viExecCommand() einen dritten optionalen Parameter $iTimeout_ms hat, der auch verwendet werden kann um das VISA Timeout zu setzen.

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, _viSetAttribute

Beispiel

; Hier nehmen wir an, dass das Gerät an die GPIB-Adresse 3 gesetzt ist.
; Wenn man ein Geräte in einer anderen Adresse hat, so ist "GPIB::3::0" auf die
; Entsprechende Beschreibung zu ändern. Das gleiche ist für den Aufruf zu _viOpen erledigen.
; Es zeigt wie man die _viExecCommand Funktion mit einem Timeout verwendet oder wie man stattdessen _viSetTimeout aufruft.

#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 wie wenn man zuerst du _viSetTimeout Funktion nutzen würde:
MsgBox($MB_SYSTEMMODAL, "Schritt 2", "_vOpen + Timeout durch Verwenden der _viSetTimeout + GPIB Abfrage")
Local $h_Instr = _viOpen(3)
_viSetTimeout($h_Instr, 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