當程序越寫越大的時候,我們會發現代碼界面會比較亂(線太多),那要怎么做可以讓代碼更簡潔一點,我只管直接調用某個功能函數,而不需要在一個VI上面去實現這個功能函數呢?——子VI。好比C語言里面的Main函數,只管調用實現功能的函數,讓主代碼整體邏輯清晰明了,而復雜的處理和運算過程就交給里面的函數去實現。
這里拿個簡單的例子,一通百通。如之前的加法程序,只有一個VI,然后VI里面的邏輯就是為了實現加法的功能,如果我們要增加減法,乘法和除法等運算,就要把所有這些邏輯全部寫一個VI里面(這里是因為程序實現邏輯簡單,所以視覺效果可能沒那么好,當要實現一個邏輯復雜的功能時,界面的可閱讀和美觀性就凸顯出來了)。
1、主程序的功能是選擇一個計算方式(加減乘除),按下確定按鍵后執行對應的計算功能,我們先搭建好下面主程序的框架。跟第二章中新建工程的操作一樣,我們先新建工程,並新建一個名為calc的VI。
3、添加枚舉變量,右鍵 編程->數值->枚舉變量;點擊枚舉變量右鍵->>編輯項;
雙擊項,添加加減乘除四個項,並點擊確定。
添加完后右鍵枚舉變量->轉換為輸入控件,這時在前面板可以看到這個控件了(變量只有轉換成輸入輸出控件的時候,才能在前面板顯示出來,否則就是一個常量,用戶無法在界面上對該變量進行操作)。連接該枚舉變量到條件框,條件框自動識別枚舉中的變量條件。
左鍵點擊黑色的下三角,我們發現只有兩個條件項,因為條件框默認只有兩個條件,我們需要手動添加。
右鍵下三角->為每個值添加分支,再點擊下三角時,就出現四個條件項啦,每個條件項對應一個條件分支框圖。這時就可以上我們的加減乘除的子VI了。
4、我們先再項目工程的文件夾下新建一個subvi文件夾專門用來放工程的子VI,並在項目中新建VI,命名為add
相同的操作,新建多另外三個VI,分別命名為sub,multi,devi。右鍵添加文件夾(自動更新),在彈出的文件夾選項中選擇我們新建的subvi文件夾。
我們會發現項目中多了一個subvi的文件夾,里面包含了我們剛新建的四個子VI。添加文件有四個選項,其中文件和文件(快照)不會實時更新我們的VI,需要手動更新,一般都添加“文件夾(自動更新)”,這樣我們如果更改了子VI后,工程會自動更新。
5、隨后雙擊指定的子VI,進入對應的程序框圖實現各個子VI的功能:
保存各個子VI,隨后進入到各個子VI的前面板。
調用子VI相當於C語言中調用子函數一樣,如果子函數有輸入輸出,則需要聲明輸入的參數和返回一個輸出,Labview的參數輸入和返回值的聲明如下圖所示,進入前面板后,前面板右上角有一個格子狀的圖標,這個圖標就是用來向外界聲明輸入參數和輸出返回值的,一般我們將左側的參數格子設為輸入,右側的格子設為輸出,將格子綁定輸入輸出的操作:鼠標移動到圖標里面的一個小格后點擊一下,再移動到前面板的控件上點擊一個對應的控件,這樣格子就和控件綁定在一起了,相同的操作綁定另外兩個控件,其中C控件是顯示控件,是a+b后輸出的值,應選擇右側的格子與之綁定。
綁定后如下圖所示,為了在調用子函數的時候好識別一些,我們會給自定義圖標的樣式,方便我們調用和識別,右鍵選中格子右側的VI圖標,選擇編輯圖標。
配置如下所示,然后鼠標選擇圖標框框的一個邊角往上拉,覆蓋掉之前的圖形(后續有專門的一章來描述如何編輯各種圖標樣式),
然后給圖標內部寫入文本,方便后續調用時,識別子VI的功能。另外三個子VI的操作相同,如下圖所示:
6、回到主VI中,我們准備調用剛編輯好的子VI,在程序框圖中右鍵->編程->選擇子VI,添加對應文件夾中我們想要添加的VI,如add.vi。
將子VI分別放置在對應的條件分支框圖中,其他子VI操作一致。
7、添加輸入輸出變量,右鍵生成a,b輸入控件以及c顯示控件,將輸入變量和輸出變量分別連接到各個子VI上。
8、我們發現連接后,連接線和條件框的交接處,左側和右側的不一樣。左側是實心的,右側是空心的。這是因為這個節點還有其他分支沒有連上,如果連完將變成實心。
9、目前基本功能是實現了,但是我們要的點擊一個按鍵后才進行計算,而不是一輸入參數就計算。操作方式跟第二章的一致,直接外接一個布爾控件的條件結構就可以了。在布爾控件的true條件分支下執行加減乘除的計算功能。最后調整一下界面,我們調用子VI的功能就完成啦!
不需要一頭扎進Labview書籍,前期最主要的是培養興趣和了解labview在我們以后發展的定位,等有了興趣,有了基礎,再借助書籍讓自己進一步升華即可。前期,跟着老曹的入門目錄學習就可以了。下一章給大家介紹一個功能強大的結構--事件結構,可以理解為單片機里面的中斷事件。
原創不易,一鍵三連啦,若有不對或者講解不到位的地方,歡迎在下方評論,我會及時更改!