日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 測(cè)試測(cè)量 > 測(cè)試測(cè)量
[導(dǎo)讀]先看一段C代碼,該函數(shù)的目的是記錄它本身被調(diào)用的次數(shù),最好的方式當(dāng)然是在該函數(shù)內(nèi)部記錄,這就要求在兩次調(diào)用之間保持上次的記錄,用static 變量最為合理,一是該變量的作用區(qū)域僅在函數(shù)內(nèi),外部無法直接修改,二

先看一段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)

{

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)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉