2019-07-17 15:48发布
木头feng 发表于 2016-12-16 12:35 算法模块是labview自带的,不是调用的dll,只是一个模块,而且主程序需要自动化测试,没有人为干预,所以需要监测是否超时,然后给出错误结果,自动重测
zhnuaa 发表于 2016-12-15 20:44 你这个是扯蛋啊。他的算法VI卡住了不结束还怎么输出错误信息。。。 就这水平还让别人好好学学?
最多设置5个标签!
1.从根本上解决这个问题:算法会卡死这种情况在编程上是不允许出现的,是否在某些情况下算法的输入不合理,或者算法里某些逻辑不正确,通过调试应该是可以解决算法卡死这个问题的。我所遇到的LabVIEW自带功能里能在没有循环且输入正常的情况下卡死的情况只有一种,是关于数值引用和同址结构的,不知道你遇到的是不是这种。
2.Abort调用节点应该是能终止掉任何VI的,就跟你按了一下程序框图里的那个终止执行的红点一样。如果这个节点也终止不了,那么你在运行的时候把算法模块的前面板显示出来,等它卡死的时候你在程序框图里点一下终止程序的红点看看能不能停。我挺想研究一下什么类型的程序是Abort终止不了的。
3.再退一步,如果实在停不掉,把你的算法模块子VI设置成可重入执行,用可重入异步调用的方式调用算法模块,返回数据的方式还跟我前面说的一样用队列,这样如果你的算法卡死了,就让它卡在那吧,下次还可以用可重入异步调用的方式再执行这个算法。这种方法前提是你的算法是允许设置成可重入的,优点是算法就算卡死了主程序也能继续跑,而且下次还能再调用这个算法,缺点是卡死的算法还在那运行,占用CPU、内存资源。
建议还是从根本入手,调试算法为什么会卡死。 最佳答案
道理是通的,在顺序结构前后价格时间计时 在算法那加个循环,计算下时间,时间到了就执行下一步,这不就行了,活学活用,你们学的太僵硬!!!!
一周热门 更多>