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

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > Shift Register 與 Function Global

          Shift Register 與 Function Global

          作者: 時(shí)間:2017-01-09 來源:網(wǎng)絡(luò) 收藏
          先看一段C代碼,該函數(shù)的目的是記錄它本身被調(diào)用的次數(shù),最好的方式當(dāng)然是在該函數(shù)內(nèi)部記錄,這就要求在兩次調(diào)用之間保持上次的記錄,用static 變量最為合理,一是該變量的作用區(qū)域僅在函數(shù)內(nèi),外部無法直接修改,二是可以自動(dòng)在首次調(diào)用時(shí)對(duì)變量進(jìn)行初始化.

          int Record(void)

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

          {

          static int counter=0; //首次調(diào)用初始化

          counter++;

          return(counter);

          }

          類似的功能在labview里是如何實(shí)現(xiàn)的那,我們當(dāng)然可以用一個(gè)全局變量,在SUBVI中對(duì)全局變量執(zhí)行+1的操作,但是這樣做副作用是非常明顯的.

          一是因?yàn)闆]有封裝數(shù)據(jù),該全局變量可以在程序任何位置被修改.二是當(dāng)幾個(gè)地方同時(shí)操作該全局變量,因?yàn)闆]有保護(hù)機(jī)制,當(dāng)前結(jié)果無法預(yù)料.

          最好的辦法是利用Function Global,也稱做LV2型全局變量,可能是LABVIEW2以前沒有內(nèi)置的全局變量,這是唯一的方法.


          Function Global核心是Shift Register (未初始化的),大多數(shù)書籍都強(qiáng)調(diào)Shift Register 初始化的重要性,實(shí)際上未初始化的Shift Register 更為重要.

          Shift Register的一般用法就不解釋了,比如在FOR循環(huán)中求平均值的問題.我們要考慮的是Shift Register本質(zhì)到底是什麼?實(shí)際上應(yīng)該是開辟的一段共享內(nèi)存空間,這段內(nèi)存空間是可讀寫的,既然這樣本質(zhì)上和全局變量就沒有區(qū)別,一個(gè)最基本的Function Global如下圖所示:


          更正:上圖中控制循環(huán)的布爾常量應(yīng)為TRUE,目的使循環(huán)只運(yùn)行一次,目的是使用SHIFT REGISTER

          下面演示一下它的使用方法:


          這就實(shí)現(xiàn)了全局變量的數(shù)據(jù)交換功能.利用組件編程是LABVIEW的重要編程方法,Funtion Global是它的核心部分.


          這段程序存在一個(gè)問題,當(dāng)程序啟動(dòng),未進(jìn)行寫操作時(shí),那Shift Register的值是什麼那?做為組件編程,應(yīng)該在它的內(nèi)部實(shí)現(xiàn)自我初始化. 這里引入一個(gè)重要的VI,FIRST CALL來解決這個(gè)問題.




          關(guān)鍵詞: ShiftRegisterFunctionGloba

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();