在LabView中,一个看似简单的任务让我遇到了真正的麻烦。所以任务是,你有一个计数器,从0到60,还有一个按钮。如果您按下按钮,计数器应该上升一个,这应该继续到60,在那里下一个按钮按下计数器重置为0,以重新开始重新开始。
我已经有了某种解决方案,但我的问题是,它一直在以快速的方式计数。如果我按下按钮,计数器会跳10-12次,而不是一个接一个地跳。
我的解决方案:https://www.pic-upload.de/view-32620107/Counter.png.html
发布于 2017-02-05 03:29:39
永远不要在LabVIEW中使用局部变量。
好吧,这是夸大了,但这是一个先进的工具,只应作为最后的手段使用。如果您发现自己使用了局部变量,那么您可能会在数据流语言中尽可能低效率和风险地做一些事情。局部变量打破数据流,引入数据副本和竞争条件的风险。所以让我们放弃吧。
工具箱中似乎缺少两个工具:事件结构和移位寄存器。这是您的解决办法:(您可能需要将该框架更改为61而不是60.我不清楚从你的方向,你是指60按钮按下或显示值"60“。我按了60个按钮。)
顺便说一下..。下面的图片是一个VI片段。如果您有LV 2016或更高版本,则可以将PNG实际拖到方框图上,并且嵌入的元数据将将其转换为工作代码。

下面是如何在2001年之前使用轮询而不是事件来编写代码。今天轮询很有用的情况很少,但是一般来说,一个好的LabVIEW程序员会避免这个解决方案,因为它浪费了太多的CPU带宽。

发布于 2017-02-17 14:59:57
我已经有了某种解决方案,但我的问题是,它一直在以快速的方式计数。如果我按下按钮,计数器会跳10-12次,而不是一个接一个地跳。
您只需将“机械操作”从此按钮(右键单击它)更改为“按下时的窗口”或“释放时的窗口”,并将控件直接绑定(没有变量)到case结构,以解决此快速计数问题。
您还应该考虑srm提到的事情,我至少会在数字的增量(将数字的重置放在这个序列的另一个帧中)周围放置一个序列结构,以定义首先执行的是什么,增加还是重置数字。
或者你可以做一个像这这样的案例解决方案。
发布于 2017-03-23 10:04:15

单击“确定”按钮60次,使其从1数到60。在第60次单击时,它将返回到0。
https://stackoverflow.com/questions/42045635
复制相似问题