强制跳出子vi的运行程序,继续执行主vi
1.从根本上解决这个问题:算法会卡死这种情况在编程上是不允许出现的,是否在某些情况下算法的输入不合理,或者算法里某些逻辑不正确,通过调试应该是可以解决算法卡死这个问题的。我所遇到的LabVIEW自带功能里能在没有循环且输入正常的情况下卡死的情况只有一种,是关于数值引用和同址结构的,不知道你遇到的是不是这种。
2.Abort调用节点应该是能终止掉任何VI的,就跟你按了一下程序框图里的那个终止执行的红点一样。如果这个节点也终止不了,那么你在运行的时候把算法模块的前面板显示出来,等它卡死的时候你在程序框图里点一下终止程序的红点看看能不能停。我挺想研究一下什么类型的程序是Abort终止不了的。
3.再退一步,如果实在停不掉,把你的算法模块子VI设置成可重入执行,用可重入异步调用的方式调用算法模块,返回数据的方式还跟我前面说的一样用队列,这样如果你的算法卡死了,就让它卡在那吧,下次还可以用可重入异步调用的方式再执行这个算法。这种方法前提是你的算法是允许设置成可重入的,优点是算法就算卡死了主程序也能继续跑,而且下次还能再调用这个算法,缺点是卡死的算法还在那运行,占用CPU、内存资源。
建议还是从根本入手,调试算法为什么会卡死。
除非你子VI的顺序结构里面有while循环,没有循环是不会卡住的,如果有while循环,你可以用计时,没循环一次计时,比如循环了300次,你就直接退出While循环,进行下一个顺序结构
当然可以,很简单!你把算法后边加个子VI,子VI是判断有没有错误的 有错误,错误处理下继续进行就可以了! 小子好好学吧!
你这个是扯蛋啊。他的算法VI卡住了不结束还怎么输出错误信息。
就这水平还让别人好好学学?
没有学到这一块 学习了
道理是通的,在顺序结构前后价格时间计时 在算法那加个循环,计算下时间,时间到了就执行下一步,这不就行了,活学活用,你们学的太僵硬!
也就是模态对话框嘛
也就是模态对话框嘛
这样应该比较清楚了吧,自己设置超时时间。
9楼的例子可以参考,但理解原理才行,活学活用
学习了。
继续扯吧。这种肯定要使用额外的循环来计时来杀算法VI,在算法外面套循环什么的都是扯蛋。你这一看就是想当然的,从来没碰到这灰实际情况的。
首先,是在算法模块卡主的,不会有输出,也就没有错误处理的说法了,你没理解我的意思,理解后再说
只有顺序结构,没有while循环,绝对是在模块上因为某个原因卡住了,如果有while循环我自己也会设置超时了,我现在问的是有没有实现此功能的调用节点
在算法模块卡住了,放再循环内,连当前的循环都进行不下去,还想做计时?你想清楚点
这个调用节点我试过,不行
你的算法模块是用LabVIEW写的吗,还是调用了dll或其它方式? 这个节点关闭VI是没有问题的,你可以尝试把这段代码放到算法模块的子VI里去试一下。
如果实在停止不了算法模块,建议采用异步调用的方式调用算法模块,算法模块的执行结果通过队列或其它方式返回给主程序,同时,调起算法模块以后在主程序里开始计时,超过时间没返回算法结果就认为算法执行失败了,此时可以通知用户算法执行失败了看看要不要采取其它措施。这种方法能保证你的主程序在算法卡住的时候也能继续运行,算法卡住的问题还是需要另外想办法解决。
算法模块是labview自带的,不是调用的dll,只是一个模块,而且主程序需要自动化测试,没有人为干预,所以需要监测是否超时,然后给出错误结果,自动重测
不废话直接上图,算法能算出来就把结果取走,不能就去一个错误数送出去,强制跳出子VI成功
你如果知道就直接上程序别整那些没用的
我想要的是这种,在子vi里,假设那个模块卡住了,不提示消息,程序不再执行,想要一个类似下面超时的操作,强制让子vi通过,然后主程序继续执行,但是Abort vi这个调用节点无法实现
强烈支持小编ing……
好的,受教了,我根据这三点上解决一下
讨论的很激烈的样子 小编找到答案了的话记得选最佳答案我
你语文是体育老师教的吗?前面的人已经说的很清楚了啊。
直接
外面那一圈根本屁用都没有啊。
9#提供的还算可行。
这种问题根本上的解决方案是解决算法的问题。算法有问题你就是把这个VI杀掉了也还会有其它的问题。
让小编发程序出来咱们都来实现一下,实现再说有没有屁用
帮顶。
学习
有没有操作手册?
卡死是什么意思? 你的模块算法里面有延时吗?
路过,看看
学习了,感谢网站,感谢小编!
垃圾,话都没明白就搞点低智商玩意出来秀智商。一看你就只触碰过最基本的东西而已。