jdm*_*jdm 1 parallel-processing labview
我有一个带有两个无限循环的vi.左循环连续从设备读取数据并绘制它,右循环调用自定义DLL并使用输出来驱动另一个设备.DLL调用阻塞大约一秒钟,因此两个循环不同步*.现在我想使用第一个循环中的瞬时值作为第二个循环中DLL的输入.我试过连接它们 - LabVIEW在循环边界插入终端 - 但是第二个循环不运行.(如果重要,数据类型是"动态数据" - 电压测量).我该怎么做?
(*实际上,最初只有一个循环,图形只在DLL调用之间更新,这是不令人满意的.)
这是标准行为,因为第一个循环尚未完成,输出门处的数据不可用于下一个循环启动.
从一个循环获取数据的最快方法是使用局部变量:
还有其他几种分发数据的方法,本地人可能现在可以使用,但如果扩展到更大的应用程序,则需要继续.其他选项是队列(无损或无损),或通知器或全局变量,如果您在LabVIEW中进步,您将提出自己的方案.
您正在寻找的是"生产者消费者"循环.
LabVIEW(文件>>新建...... >> VI >>来自模板>>设计模式)附带了一个模板,这是一个很好的起点.
此外,更多信息:
http://zone.ni.com/devzone/cda/tut/p/id/3023
http://zone.ni.com/wv/app/doc/p/id/wv-1295
PS - 第二个循环不运行的原因是因为一个名为"数据流"的概念.一个节点(您的第二个循环)在收到所有输入之前无法运行,包括来自第一个循环的数据.一个节点(第一个循环)不会输出任何内容,直到它完成执行,即直到循环结束.
基本上,第二个循环在第一个循环运行并完成循环之前不会运行.
归档时间: |
|
查看次数: |
17886 次 |
最近记录: |