VISA事件
- 更新时间2025-07-30
- 阅读时长5分钟
事件处理选板上的VI和函数用于处理VISA事件。如需处理VISA事件,必须对VISA启用事件函数启用事件队列机制。队列与单个会话和事件类型对应,所以必须对处理事件的每个会话启用队列机制。
通过VISA等待事件函数可以从队列中获取事件。如发生了指定类型的事件,都将立即调用“VISA等待事件”返回事件,与超时参数的值无关。
还可通过“VISA等待事件”等待当前不在队列中的事件。“VISA等待事件”函数将在超时或要等待的事件到达后停止执行。应当为当前不在队列中的事件设置合理的等待时间。
提示 要检查队列中是否有您指定类型的事件,请将 VISA 等待事件函数的超时设置为 0(立即)。
“VISA等待事件”函数返回一个事件时,调用等待操作的会话句柄所在的事件队列中将不再包含返回的事件。但是,如其它VISA会话中已经启用事件队列,事件将停留在队列中直至它被提取出来。
通过VISA禁用事件函数可禁用某个VISA会话的事件队列。调用该函数时,会话的队列中将不会加入其它事件。队列中将保留已有的事件。用户可以决定提取或放弃这些事件。通过“VISA等待事件”函数可获取所需事件。通过VISA放弃事件函数可放弃事件。
VISA 事件队列的默认长度为 50。如果队列已满,又有新事件发生,则会丢弃新事件。VISA中的事件队列不会动态增长,但是用户可以通过General Settings:Maximum Queue Length属性以编程方式改变事件队列的长度。如需更改某个对话的事件队列长度,必须在调用“VISA启用事件”前进行该操作。
下表列出了可通过事件处理VI和函数处理的事件。表中还列出了对事件的说明以及所支持的资源类,例如GPIB、PXI等。
注: 串行事件仅在 Windows 和 National Instruments 支持其 ENET-Serial 产品的平台上有效。
| 事件名称 | 说明信息 | 资源类 |
|---|---|---|
| 服务请求 | 通知应用程序已经收到来自与指定会话相关的设备或接口的服务请求。 注: 在仪器会话上收到此事件时,必须调用 VISA Read STB 以保证在给定会话上交付未来的服务请求事件。 |
GPIB INSTR、GPIB INTFC、GPIB-VXI INSTR、TCPIP INSTR、USB INSTR、VXI INSTR |
| 触发 | 通知应用程序已经收到来自设备的触发中断。依据接口和当前的会话设置,它可以是硬件或软件触发。 | GPIB INTFC、VXI INSTR、VXI BACKPLANE、VXI SERVANT |
| 清零 | 通知应用程序已经向本地控制器发送设备清零消息。 | GPIB INTFC、VXI SERVANT |
| VXI信号 | 通知应用程序已经收到来自与指定会话句柄相关的设备的VXIbus信号或VXIbus。 | VXI INSTR |
| VXI/VME中断 | 通知应用程序已经收到来自与指定会话相关的设备的VXIbus中断。 | VXI INSTR |
| VXI/VME系统故障 | 通知应用程序已经置VXI/VME SYSFAIL*线有效。 | VXI BACKPLANE |
| VXI/VME系统重启 | 通知应用程序已经置VXI/VME SYSRESET*线有效。 | VXI BACKPLANE、VXI SERVANT |
| GPIB CIC | 通知应用程序GPIB控制器已经获得或失去CIC(管理控制器)状态。 | GPIB INTFC |
| GPIB通话 | 通知应用程序GPIB控制器已经被寻址为通话。 | GPIB INTFC |
| GPIB侦听 | 通知应用程序GPIB控制器已经被寻址为侦听。 | GPIB INTFC |
| PXI中断 | 通知应用程序已经发生PXI中断。 | PXI INSTR |
| USB中断 | 通知应用程序已经发生USB中断。 | USB INSTR、USB RAW |
| 串口中断 | 通知应用程序已经收到中断信号。 | Serial INSTR |
| 串口终止字符 | 通知应用程序已经收到中断字符。实际的中断字符通过将Message Based Settings:Termination Character Enable属性设置为优先于启用该事件的方式指定。对于该事件,Message Based Settings:Termination Character Enable属性中的设置将被忽略。 | Serial INSTR |
| 串口CTS | 通知应用程序“清除发送”(CTS)线的状态已经改变。如CTS线的状态连续发生快速改变,某些状态改变将无法引发事件通知。 | Serial INSTR |
| 串口DSR | 通知应用程序“数据设置就绪”(DSR)线的状态已经改变。如DSR线的状态连续发生快速改变,某些状态改变将无法引发事件通知。 | Serial INSTR |
| 串口DCD | 通知应用程序“数据载波检测”(DCD)线的状态已经改变。如DCD线的状态连续发生快速改变,某些状态改变将无法引发事件通知。 | Serial INSTR |
| 串口RI | 通知应用程序已经置“振铃指示”(RI)输入信号有效。 | Serial INSTR |
| 串口字符 | 通知应用程序至少已经收到一个数据字节。并非每个数据字符都能引发事件通知。换言之,如多个数据字节同时到达,可能只产生一个事件。在收到该事件后,Serial Settings:Number of Bytes at Serial Port属性将查询窗口获取可用字节数。 | Serial INSTR |