Menu:

第8章  同步化(2)


轮询

     在LabVIEW程序设计模式中,轮询是最简单、最实用的程序处理技术,甚至简单到它没有任何专用的内置函数来支持(其它同步技术都有自己的内置函数)。

     轮询技术就是:程序运行时系统要周期性、不断的查询或检测某些事件的发生或状态的改变。
     轮询技术最大的缺点就是:由于它在执行时要不断反复的查询
或检测某些事件的发生或状态的改变,必将增大系统的开销。
     在状态机中就是采用的轮询技术来查询状态的变迁。所以一般要放置一个定时器来控制轮询的次数,避免过分增大系统开销。
     参见下图中While循环和case结构中间的100ms定时器。


      虽然,轮询技术有缺点,但是由于它简单、容易理解所以大家还是比较喜欢使用它。特别是在用户界面的键处理方面,因为此时可以将轮询循环设置在10次/s,而通常人击键的速度不会很快(仅为几次/ s),使用轮询完全可以满足这样的要求。下面看几个轮询的实用例程。

查看控件值是否改变

      使用轮询技术查询前面版上数字输入控件的值是否发生改变。图中如果数字控件的值发生改变,蜂鸣器则鸣响一声。
      在这个程序中要注意一个问题,就是case结构中的程序处理时间要小于100ms,否则会发生事件丢失现象。也就是说控件值已经发生变化,但蜂鸣器没响。如果在case结构中放置一个延迟环节会看到这种现象发生。反过来讲如果将定时器的定时时间设为1000ms,也会发生事件丢失的情况。



轮询多个控件值是否改变

      对于多个控件查询值改变时(不需要确定是那个),将上图略加修改既可以实现。
      注意要修改比较器的比较模式(右键选择)。