VISAのタイムアウト時間をミリ秒単位で設定します。
#include <Visa.au3>
_viSetTimeout ( $h_session, $i_timeout_ms )
パラメータ
$h_session | VISA記述子(文字列)またはVISAセッションハンドル(整数)。 詳しくは_viExecCommandの注意を参照。 |
$i_timeout_ms |
VISA操作(主にGPIBクエリ)でのミリ秒単位でのタイムアウト時間 0に設定した場合、タイムアウトは無効になります。 "INF"に設定した場合、VISA操作はタイムアウトしません。 注意して使用してください。計測器がクエリに1つでも応答しない場合、簡単にプログラムがハングアップします。 バスの種類(GPIB、TCP、etc)によってはタイムアウトは要求された正確な値に設定されません。代わりに要求された時間より長い時間のうち、有効でもっとも近い値が使用されます。 |
返し値
成功: | 0を返します |
失敗: | DLLが開けない場合-1を、それ以外の場合VISAエラーコード(VISAプログラミングガイドを参照)を表す非ゼロの値を返します |
注意
ほとんどの場合、この関数を呼ぶ必要はありません。_viExecCommandは第3パラメータにVISAのタイムアウト時間を設定するための$i_timeout_msを持っています。
関連
_viSetAttribute, _viExecCommand, _viOpen, _viClose
例
;- GPIBアドレス3に設定された計測器を扱うとする.
; 扱う計測器が異なるアドレスの場合は"GPIB::3::0"を対応する記述子に変更
; _viOpenの呼び出しも同様にする
; タイムアウト設定した_viExecCommand関数の使い方と
; 代わりの_viSetTimeoutの呼び方を示します
#include <Visa.au3>
Dim $h_session = 0
; GPIBアドレス3で計測器のIDを要求
MsgBox(0,"Step 1","Simple GPIB query with explicit TIMEOUT set")
Dim $s_answer = _viExecCommand("GPIB::3::0","*IDN?",10000) ; 10秒でタイムアウト
MsgBox(0,"GPIB QUERY result",$s_answer) ; 回答を表示
; 最初の_viSetTimeout関数を使った処理と同じ処理
MsgBox(0,"Step 2","_vOpen + timeout using _viSetTimeout + GPIB query")
Dim $h_instr = _viOpen(3)
_viSetTimeout($h_instr, 10000) ; 10000 ms = 10 秒
$s_answer = _viExecCommand($h_instr,"*IDN?") ; タイムアウトを設定する必要は無い
MsgBox(0,"GPIB QUERY result",$s_answer) ; 回答を表示
MsgBox(0,"Step 3","Close the Instrument connection using _viClose")
_viClose($h_instr) ; 計測器コネクションを閉じる