为什么我在使用VISA写入函数的异步模式的时候,会在NI I/O Trace中收到超时的错误?



主要软件: LabVIEW Development Systems
主要软件版本: N/A
主要软件修正版本: N/A
次要软件: N/A

问题:

我将VISA写入函数设置为异步 I/O模式。为什么我会在NI I/O Trace中看到下面所示的viWaitOnEvent函数的超时错误?

 



解答:

当执行VISA 写入函数的时候,会依次发生下面的事情:

  1. 调用的线程会被锁定。
  2. 和VISA写入函数相关的数据会被从开发系统(例如LabVIEW)中传输到VISA驱动中去。
  3. 通过投票决定什么时候将相关的数据从VISA中传输到底层的硬件资源中。
  4. 传输到底层资源结束。
  5. VISA写入函数结束。

伴随着VISA写入函数的执行,你可以选择以同步模式运行还是异步模式运行。在同步模式下,调用的线程会在第四步结束后解锁,这时已经完成了数据到底层硬件的写入。在异步模式下,调用的线程会在第二步结束的时候被释放。这个时候已经完成了数据从开发系统到VISA驱动的写入。

由于在异步模式下,调用线程会被释放以执行其他的程序,用于轮询以查看程序是否执行完毕的viWaitOnEvent 函数会在结束前出现超时的错误。这个超时错误会在NI I/O Trace中出现。这个超时错误并不会影响您的LabVIWE程序的执行。但是这也是一个值得关注的问题。

为了避免这样的问题,您可以按照下面的方式进行设定。右键点击VI,依次选择Synchronous I/O Mode » Synchronous

对于更多的信息,请参考名为《异步与同步模式下VISA读写函数的影响》的知识库。

为了在NI I/O Trace中查看到这个信息,您可以依次点击Tools -> Options,在View Slection标签中,取消LabVIEW的复选框来禁用掉LabVIEW API。



相关链接: KnowledgeBase 3D9B8E4B: The Effect of Asynchronous vs Synchronous VISA Write and Read Functions
KnowledgeBase 5O0E85Q7: Why is NI Spy Now Named NI I/O Trace?
Products and Services: National Instruments VISA

附件:





报告日期: 01/02/2014
最近更新: 02/25/2014
文档编号: 6H1CO4LO