函数参考


_viSetTimeout

设置 VISA 超时时间的毫秒值

#include <Visa.au3>
_viSetTimeout ( $h_session, $i_timeout_ms )

参数

$h_session VISA 描述符(字符串)或 VISA 会话句柄(整数).
更多信息见 _viExecCommand 备注.
$i_timeout_ms VISA 操作的超时毫秒值 (主要用于 GPIB 查询)
如果你将它设置为 0,超时将被禁用.
如果设置为 "INF", VISA 操作将永远不会超时.
在这方面要小心,因为它可以很容易地挂起程序, 仪器不会回应你的查询.
根据不同的总线类型 (GPIB, TCP, etc) 超时可能无法设置到要求的精确值;
相反,最接近的有效超时值大于你的请求值 the one that you requested will be used.

返回值

成功: 返回 0
失败: 返回 -1, VISA DLL 无法打开; 非零值代表 VISA 错误代码 (见 VISA 程序员指南).

注意/说明

大部分的时间不需要调用这个函数, as _viExecCommand 有第三个可选参数 $i_timeout_ms 也可以用来设置 VISA 超时.
VISA 函数必须安装 VISA 库文件(您可以检查visa32.dll是否在 WINDOWS\System32 目录中)
及 GPIB 卡(例如 National Instruments NI PCI-GPIB card or an Agilent 82350B PCI High-Performance GPIB card)
 * 常见 VISA 描述符详细介绍,见 _viExecCommand 函数备注

相关

_viSetAttribute, _viExecCommand, _viOpen, _viClose

示例/演示


;- 这里假设您安装了仪器到 GPIB 地址 3.
; 如果您的仪器安装到了不同的地址, 则改变 "GPIB::3::0" 为
; 相应描述符. 进行对 _viOpen 的相同调用
; 此例子演示了如何使用含超时的 _viExecCommand 函数或如何
; 调用 _viSetTimeout 代替.

#include <Visa.au3>

Local $h_session = 0

; 查询在 GPIB 地址 3 的仪器 ID
MsgBox(4096, "Step 1", "Simple GPIB query with explicit TIMEOUT set")
Local $s_answer = _viExecCommand("GPIB::3::0", "*IDN?", 10000) ; 超时为 10 秒
MsgBox(4096, "GPIB QUERY result", $s_answer) ; 显示应答

; 这里相当于首先使用 _viSetTimeout 函数:
MsgBox(4096, "Step 2", "_vOpen + timeout using _viSetTimeout + GPIB query")
Local $h_instr = _viOpen(3)
_viSetTimeout($h_instr, 10000) ; 10000 毫秒 = 10 秒
$s_answer = _viExecCommand($h_instr, "*IDN?") ; 现在不需要设置超时
MsgBox(4096, "GPIB QUERY result", $s_answer) ; 显示应答

MsgBox(4096, "Step 3", "Close the Instrument connection using _viClose")
_viClose($h_instr) ; 关闭仪器连接