返回介绍

Function _viSetAttribute

发布于 2020-03-05 18:21:36 字数 3552 浏览 1152 评论 0 收藏 0

_viSetAttribute

设置 VISA 属性,比如代替 _viSetTimeout 函数设置超时时间,当然它也可以用来设置其它特定的 VISA 属性。请阅读 VISA 文档以了解更多信息以及 VISA 属性和对应值的列表。

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

参数

$h_sessionVISA 描述符(字符串)或者 VISA session 句柄(整数)。
(请查看 _viExecCommand 函数的注意部分以了解更多信息)
$i_attribute要更改的属性。
属性值在 VISA 库中定义。
AutoIt 的库中仅定义了一个超时时间属性($VI_ATTR_TMO_VALUE)常量、串口属性和相关数值(请看下面注意部分),当然您也可以传递其它您想要的值(合法的整数数值)。
$i_value属性的值。必须是整数而且与属性值对应,这些都在 VISA 文档中有定义。

返回值

成功: - 返回值为0
失败: - 返回值为 -1,说明无法打开 VISA DLL,否则为一个非零的数值,用以表示 VISA 错误码(请查看 VISA 编程人员指引)。
一旦出现错误则本函数将总是把 @error 设为 1

注意

下面列出的是预定义的属性和数值。除此之外,还可以使用其它合法的属性/数值,只要传递相应整数索引到此函数即可(请查看 VISA 程序员指引)。

* 属性 $VI_ATTR_TMO_VALUE -> Set Timeout
* 数值:
以毫秒为单位的超时时间,或者
$VI_TMO_IMMEDIATE (或0)表示“立即返回”
VI_TMO_INFINITE (或 "INF")表示“无超时”

* 属性 $VI_ATTR_ASRL_BAUD
* 数值:
任何合法的波特率(比如 9600、115200,等等)

* 属性 $VI_ATTR_ASRL_DATA_BITS
* 数值:
从 5 到 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 库(您可以通过检查 WINDOWS\system32 目录下是否存在 visa32.dll 来判断)和一个 GPIB 卡(例如 National Instruments(美国国家仪器有限公司)的 NI PCI-GPIB 卡或者是 Agilent 82350B PCI 高性能 GPIB 卡)。

* 更详细的通用 VISA 描述符(DESCRIPTOR)请查看 _viExecCommand 函数的帮助部分。

相关

_viSetTimeout, _viExecCommand, _viOpen, _viClose

示例


;- 这个脚本假定您已经把 GPIB 的地址设为 3
; 如果您的设备使用的是不同的地址,请把 "GPIB::3::0" 改为
; 相应的描述符。_viOpen 函数也是同样处理
; 本脚本演示了如何使用 _viSetAttribute 函数。在这个示例中
; 我们使用 _viSetAttribute 来代替 _viSetTimeout 函数,用以设置
; _viExecCommand 操作的 GPIB 超时时间

#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) ; 显示结果

; 下面的语句和使用 _viSetAttribute 函数的作用相同:
MsgBox(0,"Step 2","_vOpen + timeout using _viSetAttribute + GPIB query")
Dim $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(0,"GPIB QUERY result",$s_answer) ; 显示结果

MsgBox(0,"Step 3","Close the Instrument connection using _viClose")
_viClose($h_instr) ; 关闭设备连接


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文