我在LabView中看似简单的任务遇到了麻烦。所以任务是,你有一个从0到60的计数器和一个按钮。如果你按下按钮,计数器应该加1,这应该一直持续到60,然后按下按钮,计数器重置为0,重新开始。
我已经有了某种解决方案,但我的问题是,它一直在计算速度。如果我按下按钮,计数器会跳起10-12次,而不是一个接一个。
我的解决方案: https://www.pic-upload.de/view-32620107/Counter.png.html
答案 0 :(得分:2)
永远不要在LabVIEW中使用局部变量。
好的,这是夸大它,但它是一个高级工具,只应作为最后的手段。如果您发现自己使用的是局部变量,那么您可能会在数据流语言中以低效率和高风险的方式执行操作。局部变量会破坏数据流并引入数据副本和竞争条件的风险。那就让我们放弃吧。
您的工具箱中似乎缺少两种工具:事件结构和移位寄存器。这是你的修复: (您可能需要将该帧更改为61而不是60 ......我不清楚您的方向是否意味着按下60个按钮或显示的值为“60”。我按下了60个按钮。)
顺便说一句......下面的图片是一个VI片段。如果你有LV 2016或更高版本,你可以将PNG拖到你的程序框图上,嵌入的元数据将把它变成工作代码。
以下是使用轮询而不是事件在2001年之前编写代码的方法。极少数情况下,轮询在今天很有用,但一般来说,一个优秀的LabVIEW程序员会避免这种解决方案,因为它浪费了太多的CPU带宽。
答案 1 :(得分:0)
我已经有了某种解决方案,但我的问题是,它一直在计算速度。如果我按下按钮,计数器会跳起10-12次,而不是一个接一个。
你只需要改变"机械动作"从这个按钮(右键单击它)到"按下时闩锁"或者发布时的闩锁"并将控件直接(没有变量)绑定到案例结构以修复此快速计数问题。
你还应该考虑srm提到的事情,我会在数字的增量周围至少放置一个序列结构(然后将数字的重置置于该序列的另一个帧中)来定义首先执行的内容,增加或重置号码。
或者您可以制作仅限案例的解决方案,例如this
答案 2 :(得分:-2)