函数参考


_viSetAttribute

设置任意 VISA 属性,也可以由 _viSetTimeout 调用来设置其他 VISA 的具体属性. 欲了解更多信息,请阅读 VISA 文档及 VISA 属性列表及其相应值 values.

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

参数

$h_session VISA 描述符(字符串)或 VISA 会话句柄(整数).
更多信息见 _viExecCommand 备注.
$i_attribute 被修改属性的索引.
属性被定义在 VISA 库中.
这个 AutoIt 库只定义了超时属性的常数($VI_ATTR_TMO_VALUE) 和串行接口的属性值
(见备注), 但也可以传递任何其他有效的整数索引值.
$i_value 属性值.必须是一个整数,可能的值取决于属性的类型以及在 VISA 文档中的定义.

返回值

成功: 返回 0
失败: 返回 -1, VISA DLL 无法打开; 非零值代表 VISA 错误代码 (见 VISA 程序员指南).
This function always sets @error to 1 in case of error.

注意/说明

这是一个预定义的属性和值列表. 记住,你可以使用任何其他有效属性或值的整数索引(如 VISA 程序员指南中定义的)传递给这个函数.
 * 属性: $VI_ATTR_TMO_VALUE -> 设置超时
* 值:
    A timeout in MILLISECONDS or
    $VI_TMO_IMMEDIATE (or 0) for "Return immediatly"
    VI_TMO_INFINITE (or "INF") for "No timeout"
* 属性: $VI_ATTR_ASRL_BAUD
* 值:
    Any valid baudrate (9600, 115200, etc)
* 属性: $VI_ATTR_ASRL_DATA_BITS
* 值:
    From 5 to 8
* 属性: $VI_ATTR_ASRL_PARITY
* 值:
    $VI_ASRL_PAR_NONE
    $VI_ASRL_PAR_ODD
    $VI_ASRL_PAR_EVEN
    $VI_ASRL_PAR_MARK
    $VI_ASRL_PAR_SPACE
* 属性: $VI_ATTR_ASRL_STOP_BITS
* 值:
    $VI_ASRL_STOP_ONE
    $VI_ASRL_STOP_ONE5
    $VI_ASRL_STOP_TWO
* 属性: $VI_ATTR_ASRL_FLOW_CNTRL
* 值:
    $VI_ASRL_FLOW_NONE
    $VI_ASRL_FLOW_XON_XOFF
    $VI_ASRL_FLOW_RTS_CTS
    $VI_ASRL_FLOW_DTR_DSR
VISA 函数必须安装 VISA 库文件(您可以检查visa32.dll是否在 WINDOWS\System32 目录中).
如果您使用 GPIB 相关的函数,必须安装 GPIB 卡
(例如 National Instruments NI PCI-GPIB card or an Agilent 82350B PCI High-Performance GPIB card).
 * 常见 VISA 描述符详细介绍,见 _viExecCommand 函数备注

相关

_viSetTimeout, _viExecCommand, _viOpen, _viClose

示例/演示


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

#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) ; 显示应答

; 这里相当于首先使用 _viSetAttribute 函数:
MsgBox(4096, "Step 2", "_vOpen + timeout using _viSetAttribute + GPIB query")
Local $h_instr = _viOpen(3)
; 注意 - 这里相当于: _viSetTimeout($h_instr, 10000)
_viSetAttribute($h_instr, $VI_ATTR_TMO_VALUE, 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) ; 关闭仪器连接