<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > LABVIEW的深入探索之內(nèi)外有別的條件結(jié)構

          LABVIEW的深入探索之內(nèi)外有別的條件結(jié)構

          作者: 時間:2017-01-09 來源:網(wǎng)絡 收藏
          條件結(jié)構(CASE)是LV常用結(jié)構之一,最為典型的條件結(jié)構是含有錯誤處理的條件結(jié)構,常常用于避免使用順序結(jié)構。與C語言的條件結(jié)構不同,對于顯示控件,所有的CASE分支必須對顯示控件傳遞數(shù)據(jù)(賦值)或者直接使用默認值,不允許不輸出。

          在條件結(jié)構中,處理顯示控件有兩種完全不同的方式,這兩種方式雖然表明上看差別不大,在具體編程中都可能使用過,但是對于大型數(shù)據(jù)處理,比如大的數(shù)組,運行效率差別極大,可能不經(jīng)意間造成程序運行緩慢,且不易查錯。

          本文引用地址:http://www.ex-cimer.com/article/201701/337240.htm

          方法一:條件結(jié)構外處理顯示輸入控件和顯示控件。這種方法中,輸入控件和顯示控件均位于條件結(jié)構分支之外。如下圖所示:

          方法2:條件結(jié)構內(nèi)處理輸入控件和顯示控件控件。這種方法中,輸入控件和顯示控件位于條件結(jié)構分支中,從程序框圖上看,似乎更為簡潔,但卻是非常錯誤的,如下圖所示。

          方法2中,錯誤分支中沒有進行任何處理,輸入控件和顯示控件位于無錯誤分支中。

          OUT,VI和IN.VI實現(xiàn)的功能是完全相同的,但是運行效率卻是天壤之別,數(shù)組越大,區(qū)別更為明顯。當然不同的計算機上,運行時間會有區(qū)別。下面是測試程序框圖。

          下面是測試結(jié)果,二者的運行時間相差20000多倍。

          下面引入一個“頂層程序框圖”,頂層程序框圖常見于LV愛好者的文章中,LV的相關書籍中沒有這樣的概念。OUT.VI中,輸入控件位于左側(cè),顯示控件位于右側(cè),均位于所有結(jié)構之外,所有結(jié)構之外稱作“頂層程序框圖”,類似于C語言中的形參部分。

          頂層程序框圖中,運行效率是極高的,這是因為在進入子VI之前,LV很容易可以斷定,緩存是可以重用的,因此不需要在循環(huán)中,每次復制數(shù)組。但是輸入控件和顯示控件位于條件分支內(nèi)部時,LV可能無法判定緩存是可以重用的,因此采用的值復制的方法,這樣犧牲了效率,但是保證了正確的結(jié)果。

          方法二中,表面上看似乎更為合理,但卻是錯誤的,因此可以得出結(jié)論,子VI中的輸入控件和顯示控件應該位于頂層程序框圖中,不應該位于任何結(jié)構之中。



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();