概览
简介
术语“同步”和“异步”是指NI-VISA函数相对于其调用线程的行为方式。如果NI-VISA函数同步运行,会阻止调用线程中的其他代码执行。在某些情况下,比如传输大量数据或者确保尽快将数据传输到设备或从设备采集数据,可能更适合采用这种方法。
在较底层,基于接口是同步还是异步,调用线程保持锁定的持续时间也不尽不同。写入操作必须将数据从应用程序开发环境(ADE)传输到计算机提供的基础物理资源。而读取操作需要将数据从设备的物理资源传输到ADE。这两种操作都必须经过若干层内存的传输。
写入操作的执行序列如下:
- 锁定调用线程。
- 将与VISA写入函数关联的数据从ADE传输到VISA内存。
- 轮询操作开始确定所有与VISA写入关联的数据何时已从VISA内存传输到硬件资源的底层驱动程序。
- 传输完成。
- VISA Write函数返回结果。
读取操作与写入操作的序列相同,但顺序相反。
如果是同步操作,调用线程在上述步骤4和5之间解锁。对于异步操作,调用线程在上述步骤2和3之间解锁。在为应用程序选择同步或异步操作时,需要考虑正在写入或读取的数据量以及应用程序可用的线程数。
如果必须在尽可能短的时间内传输大量数据,则应考虑同步执行操作,因为这样的话,调用线程将专门用于将数据传入/传出硬件资源。而如果采用异步执行,调用线程可以访问应用程序的其他部分,不过需要更长的时间来确定数据是否已传入/传出硬件资源。
如果应用程序可用的线程数量相比并行进程数量较少,那么异步运行NI-VISA操作可以让调用线程更快速用于应用程序的其他部分。如果同步执行此操作,调用线程可以专门用于执行NI-VISA操作,确保此操作尽快完成,但会影响应用程序的整体性能。
在LabVIEW中选择同步或异步函数时,可参考以下LabVIEW帮助链接。