当执行VISA 写入函数的时候,会依次发生下面的事情:
- 调用的线程会被锁定。
- 和VISA写入函数相关的数据会被从开发系统(例如LabVIEW)中传输到VISA驱动中去。
- 通过投票决定什么时候将相关的数据从VISA中传输到底层的硬件资源中。
- 传输到底层资源结束。
- 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。:
参考:
http://digital.ni.com/public.nsf/allkb/52495D41496A5BFA86257C6E001E8558