網(wǎng)絡(luò)消費(fèi)網(wǎng) >  5G > > 正文
        局域變量、全局變量和功能型全局變量
        時(shí)間:2021-12-22 14:22:05
        圖 6 新建全局變量將新建的全局變量VI的圖標(biāo)拖入到VI的背面板中,如同調(diào)用一個(gè)子VI一樣,就可以完成對全局變量的引用,如圖 7所示。圖中使用了2個(gè)不同的VI,分別進(jìn)行全局變量的讀和寫操作。圖 7 全局變量的引用1.3局域變量和全局變量的使用小結(jié)可以看出,LabVIEW中局域變量和全局變量的引入為數(shù)據(jù)的有效共享提供了非常便捷的途徑。但是正如前面所述,局域變量和全局變量需要占用大量的內(nèi)存空間,降低了程序運(yùn)行的效率,因此在實(shí)際過程中應(yīng)酌情應(yīng)用。此外,由于LabVIEW編程環(huán)境的并行特性,使得很多程序員在使用局域變量和全局變量時(shí)并沒有考慮到變量的“競爭冒險(xiǎn)”問題。如圖 8所示,程序的本意是希望將Numeric的值加1然后再乘以2賦值給Numeric變量,但是由于LabVIEW采用了數(shù)據(jù)流運(yùn)行方式,每一段代碼的開始運(yùn)行時(shí)間幾乎是同時(shí)的(并行的),因此導(dǎo)致無法Numeric的輸出正確的值。圖 8 變量的競爭冒險(xiǎn)以上舉得是一個(gè)比較明顯的例子,當(dāng)程序變得龐大而復(fù)雜時(shí),這種問題并不容易被發(fā)現(xiàn)并且很容易產(chǎn)生。特別是在使用全局變量時(shí),如果程序員沒有非常清楚地明晰各個(gè)時(shí)刻全局變量中的值,那么很容易地讀到一些“意料之外”的數(shù)據(jù)。同時(shí),在使用全局變量時(shí),應(yīng)該注意變量的初始化操作。雖然,這可以使用LabVIEW的Make Current Value Default菜單項(xiàng)實(shí)現(xiàn),但是仍然推薦使用獨(dú)立的初始化VI為每一個(gè)全局變量顯式地賦初值。1.4Value屬性節(jié)點(diǎn)和局域變量的效率眾所周知,在LabVIEW中為一個(gè)Control賦值有Value屬性節(jié)點(diǎn)和局域變量2種方式;為一個(gè)Indicator賦值有直連、Value屬性節(jié)點(diǎn)和局域變量3種方式。那么這些方式有哪些區(qū)別和聯(lián)系呢?在實(shí)際過程中應(yīng)該使用哪種方式呢?為了表示分析這三種賦值方式的區(qū)別,使用3個(gè)獨(dú)立的VI進(jìn)行測試,如圖 9所示。可以看出,從時(shí)間上來看:Time(直連賦值) < Time(局域變量賦值) < Time(Value屬性節(jié)點(diǎn)賦值)。這說明Indicator直連賦值是最有效和直接的方式,它只是完成數(shù)據(jù)的顯示;而局域變量賦值需要完成對數(shù)據(jù)的拷貝,占用事件其次;Value屬性節(jié)點(diǎn)使用了VI Server技術(shù),它需要完成對前面板控件的調(diào)用和刷新,占用時(shí)間較長。因此從運(yùn)行時(shí)間上看,對控件的賦值應(yīng)盡量采用直連或局域變量的方式,盡量少地使用屬性節(jié)點(diǎn)。圖 9 測試三種賦值方式所占用的時(shí)間1.5功能性全局變量為了克服局域變量和全局變量的“競爭冒險(xiǎn)”潛在危險(xiǎn)和復(fù)制數(shù)據(jù)副本的缺點(diǎn),在LabVIEW中可以使用功能性全局變量代替全局變量的使用。因?yàn)槿肿兞康膽?yīng)用無非是讀取和寫入操作,因此可以使用LabVIEW的移位寄存器將數(shù)據(jù)空間強(qiáng)制共享。本節(jié)將建立一個(gè)功能性全局變量代替一個(gè)Numeric型的全局變量(下載),新建一個(gè)VI的前面板如圖 10所示,背面板如圖 11所示。程序使用了一個(gè)只運(yùn)行一次的while循環(huán),這是為了使用移位寄存器保存變量的值。使用一個(gè)枚舉控件表示對全局變量的操作(讀或者寫),而不同的case結(jié)構(gòu)中響應(yīng)相應(yīng)的指令。圖 10 功能性全局變量的前面板圖 11 功能性全局變量的背面板新建一個(gè)VI調(diào)用上面的VI(稱為功能性全局變量),如圖 12所示,可以看出能夠輸出正確的值。圖 12 使用功能性全局變量由于每次讀和寫變量時(shí),都是取自于while循環(huán)中的移位寄存器,因此能夠避免了數(shù)據(jù)拷貝的問題(當(dāng)然,全局性功能變量VI不能夠設(shè)置為Reentrant可重載的)。由于功能性全局變量VI中加入了“錯(cuò)誤簇”端子,因此使用ErrorIn和ErrorOut能夠很好地避免“競爭冒險(xiǎn)”問題。從理論上說,功能性全局變量能夠完全取代傳統(tǒng)的全局變量。由于加入了“錯(cuò)誤簇”和移位寄存器,避免了數(shù)據(jù)的重復(fù)拷貝。同時(shí),使用枚舉型控件(可以設(shè)置為Type Def.控件)能夠使得整個(gè)程序結(jié)構(gòu)更加清晰、明了,實(shí)現(xiàn)模塊化程序設(shè)計(jì)的目的。

        關(guān)鍵詞: 局域變量全局變量功能

        版權(quán)聲明:
            凡注明來網(wǎng)絡(luò)消費(fèi)網(wǎng)的作品,版權(quán)均屬網(wǎng)絡(luò)消費(fèi)網(wǎng)所有,未經(jīng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明"來源:網(wǎng)絡(luò)消費(fèi)網(wǎng)"。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
            除來源署名為網(wǎng)絡(luò)消費(fèi)網(wǎng)稿件外,其他所轉(zhuǎn)載內(nèi)容之原創(chuàng)性、真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請讀者僅作參考并自行核實(shí)。
        熱文

        網(wǎng)站首頁 |網(wǎng)站簡介 | 關(guān)于我們 | 廣告業(yè)務(wù) | 投稿信箱
         

        Copyright © 2000-2020 www.fnsyft.com All Rights Reserved.
         

        中國網(wǎng)絡(luò)消費(fèi)網(wǎng) 版權(quán)所有 未經(jīng)書面授權(quán) 不得復(fù)制或建立鏡像
         

        聯(lián)系郵箱:920 891 263@qq.com

        備案號:京ICP備2022016840號-15

        營業(yè)執(zhí)照公示信息

        国产亚洲欧美在线观看| 久久精品国产亚洲av麻豆小说| 亚洲美女视频一区二区三区| 亚洲欧洲日本在线观看 | 亚洲成a人片在线观看精品| 亚洲无码高清在线观看| 亚洲成AV人片久久| 亚洲伦乱亚洲h视频| 久久久亚洲欧洲日产国码二区| 成人婷婷网色偷偷亚洲男人的天堂 | 亚洲人成人无码网www电影首页| 亚洲精品国产日韩| 国产亚洲福利在线视频| 亚洲另类图片另类电影| 久久久久久a亚洲欧洲aⅴ| 亚洲欧美成aⅴ人在线观看| 亚洲电影一区二区三区| 浮力影院亚洲国产第一页| 亚洲另类无码专区首页| 亚洲精品色播一区二区 | 亚洲第一成年网站视频 | 久久国产精品亚洲一区二区| 亚洲精品视频在线看| 精品国产亚洲男女在线线电影 | 亚洲国产高清美女在线观看 | 国产亚洲精品影视在线产品| 美国毛片亚洲社区在线观看| 五月婷婷亚洲综合| 亚洲私人无码综合久久网| 亚洲日本国产精华液| 亚洲18在线天美| 亚洲精品视频在线观看免费| 亚洲国产精品成人综合久久久| 2020国产精品亚洲综合网| 亚洲AV无码专区在线观看成人| 亚洲人成伊人成综合网久久| 亚洲中文字幕无码爆乳| 亚洲&#228;v永久无码精品天堂久久 | 亚洲精品永久在线观看| 亚洲成AV人网址| 国产亚洲综合一区柠檬导航|