昨天在这边学习了for循环如何中断,程序图如下:
但又暴露了新问题,像上面的程序,我是产生“计数”个的随机数,程序运行后,比如产生了第5个随机数的时候,我想停了,程序并不会马上停在第5个随机数这里,而是产生了第6个随机数才停。这样本身在测试的时候,“停”指令后的延迟不会很明显,但当我想要循环的程序带有较长等待时间的时候,这个问题就很明显了。比如:我在程序运行第5个循环的时候,按下了“stop”键,本身这个循环有一个等待时间,然后进入第6个循环,又有了一个等待时间,也就是说,按下“stop”之后我最少要等待2个等待时间,这个时间很长,就会很明显的感觉到“stop”的“延迟”,就好像等了很久才停一样。这个问题能解决吗?我试了几个方案想要改变数据的传输顺序,但是stop为true的信号总是和第6个循环发生一起的,总是有第6个循环,希望大家可以帮帮忙,解决一下!!!万分感谢!!!
我改了一下程序,见附件,现在的问题是,如果我在第5次循环发生的时候,按下了stop,第5次循环的等待时间还是要进行完的,而且第6次的随机数还是产生了,只不过第6次的等待时间没有了而已。我希望labview还是可以随时停,第5次循环时间就停在stop按下的那一刻,而且也不要发生第6次循环这样。
哦,对不起。我提供的解决方法要到8.2版本以上。(这是听另外一位论坛里的人讲的)
思路是这样的:使用两个VI,其中一个放控制线程,另外一个放工作线程。目前LabVIEW尚未提供同一VI内强行中止某线程(循环)的功能,但提供了强行中断某VI的运行。所以,我们在控制线程VI里完成工作线程VI的初始化、启动及停止,就可以达到随时控制工作线程通断的目的了。
PS:如果您方便,还是建议安装最新版本的LabVIEW,从7.x到9.0,LabVIEW开发组件的变化是很大的,而且日臻完善。值得提醒的一点是,LabVIEW允许同时多个版本安装而互不干扰。至于学习的成本,其开发思想方式未变,你在8.2上学到的任何东西,可以马上应用到9.0中。