大型的labview程序实例_【学院推荐】LabVIEW的核心要素——数据流
每天1小時(shí),龍哥教你學(xué)LabVIEW視覺,參與送福利:
1、低至兩折!全套課程眾籌價(jià):588元(原價(jià)2980元)
2、《LabVIEW視覺算子手冊(cè)》配套電子書
3、價(jià)值58元《LabVIEW機(jī)器視覺實(shí)用教程基礎(chǔ)篇》
知識(shí)
學(xué)習(xí)過LabVIEW的朋友都知道:LabVIEW是一個(gè)圖形化軟件開發(fā)環(huán)境,它所使用的編程語言是G語言,也稱為圖形化編程語言。由于LabVIEW是G語言中開發(fā)的比較早、且開發(fā)的最成功的,所以人們還是習(xí)慣上用LabVIEW來指代G語言。當(dāng)然,還有其它的G語言,比如像Agilent 的VEE等。
傳統(tǒng)文本編程語言根據(jù)指令的先后順序決定應(yīng)用程序執(zhí)行順序,也稱為:“控制流”;而LabVIEW則按照“數(shù)據(jù)流”的模式運(yùn)行VI。所謂數(shù)據(jù)流也就是說:當(dāng)所有的輸入端都具備了必要的輸入數(shù)據(jù)時(shí),程序框圖節(jié)點(diǎn)將運(yùn)行。節(jié)點(diǎn)在運(yùn)行時(shí)產(chǎn)生輸出數(shù)據(jù)并將該數(shù)據(jù)傳送給數(shù)據(jù)流路徑中的下一個(gè)節(jié)點(diǎn)。數(shù)據(jù)流經(jīng)節(jié)點(diǎn)的動(dòng)作決定了程序框圖上VI和函數(shù)的執(zhí)行順序。
使用LabVIEW進(jìn)行編程則必須按數(shù)據(jù)流的方式進(jìn)行程序設(shè)計(jì)。所以,養(yǎng)成良好的數(shù)據(jù)流編程習(xí)慣是非常必要的。那么根據(jù)數(shù)據(jù)流的特點(diǎn),編程時(shí)要注意哪些問題呢?
01
根據(jù)自然的數(shù)據(jù)的依賴關(guān)系,從左向右進(jìn)行程序設(shè)計(jì)
圖1數(shù)據(jù)依賴關(guān)系
圖1 可以清晰的表明數(shù)據(jù)流是依據(jù)數(shù)據(jù)依賴關(guān)系從左向右流動(dòng)的。“差”只有在“和”完成后才能得到;以此類推,“積”必須在“差”完成后獲得;而“商”也必須在得到“積”后獲得。所以,這里是利用數(shù)據(jù)依賴關(guān)系實(shí)現(xiàn)數(shù)據(jù)流的。圖1中的下圖比較好的呈現(xiàn)出數(shù)據(jù)流的關(guān)系,所以我們稱之為“好的習(xí)慣”,建議大家習(xí)慣用這種方式來進(jìn)行程序設(shè)計(jì)。
圖2 是一個(gè)數(shù)據(jù)采集任務(wù)設(shè)計(jì)的實(shí)例(良好的數(shù)據(jù)流概念)
圖2 數(shù)據(jù)采集任務(wù)設(shè)計(jì)
我們上面談到利用數(shù)據(jù)依賴關(guān)系很容易滿足數(shù)據(jù)流的要求(自然的數(shù)據(jù)依賴關(guān)系)那么,當(dāng)數(shù)據(jù)依賴關(guān)系不存在或不明顯時(shí),怎么辦?
02
利用強(qiáng)制數(shù)據(jù)依賴關(guān)系之一:順序結(jié)構(gòu)
如果我們想要知道一個(gè)vi的運(yùn)行時(shí)間可以通過下面的實(shí)例程序進(jìn)行測(cè)試,程序如圖3所示。這 里我們利用強(qiáng)制數(shù)據(jù)依賴關(guān)系“順序結(jié)構(gòu)”來滿足數(shù)據(jù)流的要求。這里待測(cè)vi我們用一個(gè)“等 待”函數(shù)來代替。
圖3強(qiáng)制人工數(shù)據(jù)依賴關(guān)系“順序結(jié)構(gòu)”
順序結(jié)構(gòu)確保:第一幀:開始計(jì)時(shí),第二幀:運(yùn)行“等待”函數(shù)或待測(cè)vi,第三幀:停止計(jì)時(shí)并顯示結(jié)果。
這里要注意兩點(diǎn):
第一:Windows操作系統(tǒng)的定時(shí)精度為:1mS。所以,測(cè)量結(jié)果會(huì)出現(xiàn)100±1mS。
第二:如果vi的運(yùn)行時(shí)間很短小于1mS,可在第二幀內(nèi)的vi外面加個(gè)N次的for循環(huán)增加運(yùn)行時(shí)間。然后,在結(jié)果中再除個(gè)N。
現(xiàn)在,我們用“等待下一個(gè)整數(shù)倍毫秒”(定時(shí)選板)函數(shù)來替代“等待”函數(shù),運(yùn)行后會(huì)發(fā)生什么情況?這應(yīng)該對(duì)理解這兩個(gè)函數(shù)的不同會(huì)有所幫助。
03
利用人工數(shù)據(jù)依賴關(guān)系之二:引用句柄
對(duì)于引用句柄LabVIEW的幫助文檔是這樣介紹的:引用句柄可作為對(duì)象(例如,文件、設(shè)備或網(wǎng)絡(luò)連接)的唯一標(biāo)識(shí)。可使用不同類型的引用句柄控件將引用句柄輸入或輸出VI。
由于引用句柄是一個(gè)打開對(duì)象的臨時(shí)指針,因此它僅在對(duì)象打開期間有效。如關(guān)閉對(duì)象,LabVIEW會(huì)將引用句柄與對(duì)象分開,引用句柄隨即失效。如再次打開對(duì)象,LabVIEW將創(chuàng)建一個(gè)與第一個(gè)引用句柄不同的新引用句柄。LabVIEW將為引用句柄指向的對(duì)象分配內(nèi)存空間。關(guān)閉引用句柄,該對(duì)象就會(huì)從內(nèi)存中釋放。
由于LabVIEW可以記住每個(gè)引用句柄所指的信息,如讀取或?qū)懭氲膶?duì)象的當(dāng)前地址和用戶訪問情況,因此可以對(duì)單一對(duì)象執(zhí)行并行但相互獨(dú)立的操作。如一個(gè)VI多次打開同一個(gè)對(duì)象,那么每次的打開操作都將返回一個(gè)不同的引用句柄。VI結(jié)束運(yùn)行時(shí)LabVIEW會(huì)自動(dòng)關(guān)閉引用句柄,如果用戶在結(jié)束使用引用句柄時(shí)就立即將其關(guān)閉,可最有效地利用內(nèi)存空間和其它資源,這是一個(gè)良好的編程習(xí)慣。關(guān)閉引用句柄的順序與打開時(shí)相反。例如,如果獲得了對(duì)象A的一個(gè)引用句柄,然后對(duì)對(duì)象A調(diào)用方法使獲得對(duì)象B的引用句柄,請(qǐng)先關(guān)閉對(duì)象B的引用句柄然后再關(guān)閉對(duì)象A的引用句柄。
圖4引用句柄的幾個(gè)示例
關(guān)于引用句柄我們要注意的是:“引用句柄”是有“生命周期“的。從我們打開引用句柄開始,它就進(jìn)入新的“生命周期”,直道關(guān)閉“引用句柄”后它的“生命周期”結(jié)束。如果一個(gè)引用句柄的生命周期無限長(zhǎng),那么就意味著發(fā)生了“內(nèi)存泄露”。所以使用時(shí)必須注意“打開”與“關(guān)閉”必須是成雙成對(duì)出現(xiàn)的。
對(duì)于本地變量和全局變量來講,因無法保證數(shù)據(jù)按數(shù)據(jù)流的方式工作,所以要盡量避免大量使用。由于順序結(jié)構(gòu)是強(qiáng)制數(shù)據(jù)流也盡量甚用。
上面我們分別介紹了實(shí)現(xiàn)或確保數(shù)據(jù)流編程的幾個(gè)方法,供大家參考,希望對(duì)大家能有一定的幫助。
掃碼進(jìn)入LabVIEW專屬技術(shù)交流群
獲取更多學(xué)習(xí)資料
相關(guān)課程推薦:
《龍哥手把手教你學(xué)LabVIEW視覺設(shè)計(jì)》
https://mp.weixin.qq.com/s/IVvrzHu9rwoEfBA7IKXbAg
https://mp.weixin.qq.com/s/WANlR2ph-6hNJ-TICXOptw
總結(jié)
以上是生活随笔為你收集整理的大型的labview程序实例_【学院推荐】LabVIEW的核心要素——数据流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王小川 python_Python与量化
- 下一篇: 手游传奇架设教程_问道手游如何多开?