NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

续:for循环中断新问题

昨天在这边学习了for循环如何中断,程序图如下:

test new.png

 

但又暴露了新问题,像上面的程序,我是产生“计数”个的随机数,程序运行后,比如产生了第5个随机数的时候,我想停了,程序并不会马上停在第5个随机数这里,而是产生了第6个随机数才停。这样本身在测试的时候,“停”指令后的延迟不会很明显,但当我想要循环的程序带有较长等待时间的时候,这个问题就很明显了。比如:我在程序运行第5个循环的时候,按下了“stop”键,本身这个循环有一个等待时间,然后进入第6个循环,又有了一个等待时间,也就是说,按下“stop”之后我最少要等待2个等待时间,这个时间很长,就会很明显的感觉到“stop”的“延迟”,就好像等了很久才停一样。这个问题能解决吗?我试了几个方案想要改变数据的传输顺序,但是stop为true的信号总是和第6个循环发生一起的,总是有第6个循环,希望大家可以帮帮忙,解决一下!!!万分感谢!!!

0 项奖励
1 条消息(共 8 条)
5,369 次查看

我改了一下程序,见附件,现在的问题是,如果我在第5次循环发生的时候,按下了stop,第5次循环的等待时间还是要进行完的,而且第6次的随机数还是产生了,只不过第6次的等待时间没有了而已。我希望labview还是可以随时停,第5次循环时间就停在stop按下的那一刻,而且也不要发生第6次循环这样。

0 项奖励
2 条消息(共 8 条)
5,362 次查看
等待回复。。。
0 项奖励
3 条消息(共 8 条)
5,354 次查看
参见附件例子,控制线程随意控制工作线程。文件版本9.0.
0 项奖励
4 条消息(共 8 条)
5,338 次查看

谢谢您的回复。

不过我电脑的版本是8.2的,您能帮忙转换一下吗?

0 项奖励
5 条消息(共 8 条)
5,334 次查看

哦,对不起。我提供的解决方法要到8.2版本以上。(这是听另外一位论坛里的人讲的)

 

思路是这样的:使用两个VI,其中一个放控制线程,另外一个放工作线程。目前LabVIEW尚未提供同一VI内强行中止某线程(循环)的功能,但提供了强行中断某VI的运行。所以,我们在控制线程VI里完成工作线程VI的初始化、启动及停止,就可以达到随时控制工作线程通断的目的了。

 

PS:如果您方便,还是建议安装最新版本的LabVIEW,从7.x到9.0,LabVIEW开发组件的变化是很大的,而且日臻完善。值得提醒的一点是,LabVIEW允许同时多个版本安装而互不干扰。至于学习的成本,其开发思想方式未变,你在8.2上学到的任何东西,可以马上应用到9.0中。

0 项奖励
6 条消息(共 8 条)
5,332 次查看

这样啊,我电脑里还有一个版本8.6,因为是中文的不怎么常用,这个版本可以吗?如果行的话就麻烦您转成8.6版吧,先谢啦

0 项奖励
7 条消息(共 8 条)
5,330 次查看

注释中有一个笔误:“时间”->“事件”

0 项奖励
8 条消息(共 8 条)
5,328 次查看