本節書摘來自異步社群《labview 虛拟儀器程式設計從入門到精通(第二版)》一書中的第2章,第2.5節,作者 林靜 , 林振宇 , 鄭福仁,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
labview 虛拟儀器程式設計從入門到精通(第二版)
如果控件的設定不能滿足使用的要求,也可以在目前控件的基礎上自定義控件。對labview提供的輸入控件和顯示控件都可以進行個性化自定義,以形成豐富多彩的外觀風格和特殊的視覺效果,這種定制又是對現有控件集合的擴充。使用者定制好的控件還可以儲存下來用于其他vi的前面闆。對使用者定制的控件也可以建立為一個圖示,并添加到labview系統的控件模闆中。
1.自定義控件基本操作
labview提供的自定義控件面闆,類似于vi的前面闆,但是沒有程式框圖。打開自定義控件面闆的方法有兩種。
在建立菜單中選擇“其他檔案”>>“自定義控件”,打開自定義控件面闆後再由控件面闆向裡面調用控件。
在vi前面闆上放置控件,右鍵單擊該控件,選擇快捷菜單中的進階>>自定義…,可以打開該控件的自定義控件面闆。
下面以儀表控件為例,自定義該控件。
在vi前面闆上放置儀表控件,單擊該控件,選擇進階>>自定義…,彈出儀表控件的自定義面闆,如圖2-27所示。
面闆上有一個類似扳手1的圖示,表示目前處于編輯模式,此時隻能進行一般的屬性設定。單擊這個圖示變為鑷子形狀1,即進入自定義控件模式,如圖2-28所示。此時控件的各個部件即成為各自獨立的部件,對每個部件進行的修改不會對其他部件造成影響。自定義模式顯示了控件的所有部件,包括在編輯模式中隐藏的任何部件,如名稱标簽或數值控件上的基數。由于控件的各個部件互相脫離,是以在自定義模式下無法對控件的值進行操作或修改。

面闆上的每個白色線框是原來控件的一個零件,可以分别進行編輯。
右鍵單擊數字顯示件,替換為水準指針滑動杆,并調整到合适的大小,然後移動該滑動杆到底部,如圖2-29所示。
單擊鑷子圖示,使之轉換為編輯模式,并儲存該控件為儀表.ctl。
建立一個新的vi,打開控件選闆,單擊“選擇控件”,在彈出的選框中選擇“儀表.ctl”,定義前後的儀表控件如圖2-30所示。
2.向自定義輸入控件和顯示控件添加外觀部件
可使用控件編輯器視窗在編輯模式或自定義模式下向自定義控件添加圖形、文本或修飾。如從剪貼闆粘貼一個圖形或一段文本,用标簽工具建立一個标簽,或從修飾選闆選擇一個修飾,則該操作對象便成為控件的一個新的修飾部件,并同控件一起出現在前面闆上。在控件編輯器視窗中,可移動部件位置、調整部件大小、改變層疊次序或替換新的修飾部件。在前面闆上使用自定義控件時,可對任何添加到控件上的修飾部件進行大小調整,但不能改變這些添加的修飾部件的位置。
注
打開菜單欄檢視>>工具選闆,單擊a辨別,可以在程式框圖或前面闆寫入注釋文字,該工具即為标簽工具。
自定義外觀部件的模式快捷菜單項。外觀部件可在不同場合顯示單個或多個各自獨立的圖形。要自定義外觀部件,應把控件編輯器視窗切換至自定義模式并右鍵單擊需自定義的外觀部件,外觀部件快捷菜單中出現的選項取決于該外觀部件的類型。
具有單個圖形的外觀部件。在部件單元上單擊滑鼠右鍵,可以打開單個圖形的外觀部件快捷菜單,如圖2-31所示。
具有單個圖形的外觀部件的快捷菜單包含以下幾個選項。
複制至剪貼闆:将部件的圖形副本放置到剪貼闆上。将一個圖形複制到剪貼闆後,右鍵單擊一個部件,從快捷菜單中選擇從剪貼闆導入圖檔,可将圖形導入部件。
從剪貼闆導入圖檔:用剪貼闆上的圖形替換外觀部件目前使用的圖形。例如,可為一個布爾開關的打開或關閉狀态導入圖形。如剪貼闆不含有圖形,則從剪貼闆導入圖檔選項不可用。
以相同大小從剪貼闆導入:用剪貼闆上的圖形替換外觀部件目前使用的圖形,縮放導入的圖形使之适合部件的大小。如剪貼闆不含有圖形,則以相同大小從剪貼闆導入選項不可用。
從檔案導入:從檔案對話框中選擇圖形以替換外觀部件目前使用的圖形。
以相同大小從檔案導入:從檔案對話框中選擇圖形以替換外觀部件目前使用的圖形,縮放導入的圖形使之适合部件的大小。
還原:不改變部件的位置将其還原到原來的外觀。如在前面闆上打開某個控件的控件編輯器視窗并對其部件進行改動,則從其快捷菜單中選擇還原将還原該部件在前面闆上的外觀。如在控件編輯器視窗中打開自定義的控件,則還原選項不可用。
原始大小:将部件的圖形恢複至其原始大小,便于從其他應用程式中導入圖形并調整圖形大小。有些從其他應用程式導入的圖形經大小調整後顯示的效果不如其原始圖形,此時需要将導入的圖形恢複至其原始大小,以提高其顯示的品質。如不導入圖形,則原始大小選項不可用。
也可以剪貼闆上的圖像替換修飾部件所使用的圖形,即選中一個修飾部件,再選擇編輯>>粘貼。如需以一個檔案中的圖像替換修飾部件所使用的圖形,可右鍵單擊該修飾部件,然後從快捷菜單中選擇從檔案導入。
下面舉一個布爾控件的例子來說明如何在控件上貼上圖檔令其更加美觀。
從控件選闆中選擇停止控件放置于前面闆上,并進入自定義控件界面,單擊扳手圖示,進入自定義狀态。滑鼠右鍵單擊停止圖檔,在彈出的快捷菜單上選擇“以相同大小從檔案導入”,如圖2-32所示,在彈出的圖檔選擇框中選擇所要粘貼的圖檔,單擊“确定”按鈕,完成圖檔導入操作。完成後的停止控件如圖2-33所示。
3.具有多個相關圖形的外觀部件
單擊剛才完成的停止控件,會發現停止控件的另一個狀态的圖檔并沒有相應修改,這是因為布爾控件的外觀部件具有多個相關圖形以表示不同的狀态,這些不同的圖形大小、顔色相同。對外觀部件的目前圖形進行移動或調整大小時,該部件的其他圖形也将随之移動或大小成比例改變。布爾開關有4個不同的圖形,第1個圖形表示狀态為false;第2個圖形表示狀态為true;第3個圖形表示釋放時切換的狀态,即從true到false的過渡狀态;第4個圖形表示“釋放時觸發”的狀态,即從false到true的過渡狀态。當布爾控件處于“釋放時切換”或“釋放時觸發”的狀态時,布爾控件的值将在滑鼠按鈕被釋放時才改變。在單擊滑鼠按鈕和釋放滑鼠按鈕兩個動作之間,布爾控件将顯示作為過渡狀态的第3個或第4個圖形。
對于具有多個相關圖形的外觀部件,其快捷菜單不僅包含了具有單個圖形的外觀部件的所有菜單選項,還包含了圖檔項的選項。從快捷菜單中選擇圖檔項可顯示一個外觀部件名下所有的圖形,如圖2-34所示,目前圖形外部圍有深色邊框,導入圖形僅改變目前圖形。如需為其他圖形導入圖形,應右鍵單擊部件,從快捷菜單中選擇圖檔項,從中選擇需導入的新圖形後将其導入。
選擇下一個圖檔項,重複以相同大小從檔案導入動作,可以編輯布爾控件的4個不同動作的圖檔,編輯完成後的效果如圖2-35所示。
儲存該控件,并用滑鼠右鍵單擊,可以觀察4個不同動作對應的不同圖檔。
4.自定義類型和嚴格自定義類型
在vi中使用自定義輸入控件或顯示控件後,該vi中自定義控件的執行個體與所儲存的控件間的連接配接将不複存在。自定義輸入控件或顯示控件的每個執行個體是一個單獨、獨立的副本,是以改變自定義控件并不影響正在使用該自定義控件的vi。如需使自定義輸入控件或顯示控件的執行個體與自定義輸入控件或顯示控件檔案相連接配接,可将該自定義輸入控件或顯示控件另存為一個自定義類型或嚴格自定義類型。一個自定義類型或嚴格自定義類型的所有執行個體與其原始檔案相連。
将自定義輸入控件或顯示控件另存為一個自定義類型或嚴格自定義類型後,對該自定義類型或嚴格自定義類型所做的任何資料類型改動将對所有使用這些自定義類型或嚴格自定義類型的vi執行個體造成影響。與此同時,對嚴格自定義類型所做的外觀改動也将影響前面闆上該嚴格自定義類型的所有執行個體。
進入自定義類型和嚴格自定義類型控件的方式是在自定義控件頁面單擊輸入控件下拉清單,從中選擇自定義類型或嚴格自定義類型,如圖2-36所示。
假如有一個控件在程式中會多次使用到,并且如果修改其中一個需要程式中應用到的該控件全部都修改時,應用自定義類型控件或嚴格自定義類型控件可以令程式編寫更加友善。
(1)自定義類型
自定義類型為自定義輸入控件或顯示控件的每個執行個體指定了正确的資料類型。如自定義類型的資料類型發生改變,則該自定義類型的所有執行個體将自動更新。換言之,在使用了該自定義類型的每個vi中,各執行個體的資料類型将改變。然而,由于自定義類型僅規定了資料類型,僅有資料類型那部分的值被更新,例如,數值控件中的資料範圍便不是資料類型的一部分,是以,數值控件的自定義類型并不定義該自定義類型執行個體的資料範圍。同時,由于下拉清單控件各選項的名稱沒有定義其資料類型,是以在自定義類型中對下拉清單控件中各選項的名稱進行改動,将不會改變自定義類型執行個體中各項的名稱。如在一個枚舉型控件的自定義類型中改變其選項名稱,由于選項名稱也是枚舉型控件資料類型的一部分,是以其執行個體将更新。自定義類型執行個體可擁有其唯一的标簽、描述、預設值、大小和顔色等,或設定其風格為輸入控件或顯示控件,如滑動杆或旋鈕。
如果改變一個自定義類型的資料類型,labview将盡可能把該自定義類型執行個體的原有預設值轉換為新的資料類型。如資料類型被改為一個不相容的類型,數值控件被替換為字元控件,則labview将無法保留執行個體的預設值。如自定義類型的資料類型被改為其先前所無法相容的資料類型,則labview将會把新的資料類型設定為執行個體的預設值。例如,自定義類型從數值改為字元串,則labview将把與先前數值型資料類型相關的所有預設值替換為空字元串。
(2)嚴格自定義類型
嚴格自定義類型将把執行個體除了标簽、描述和預設值外每個方面強制設定為與嚴格自定義類型相同。對于自定義類型,嚴格自定義類型的資料類型将在任何使用該嚴格自定義類型的場合下保持不變。嚴格自定義類型嚴格自定義類型可使用的也對其他值進行了定義,如對數值控件及下拉清單控件中控件名稱的範圍檢查。vi伺服器屬性僅限于對控件外觀産生影響的屬性,包括可見、禁用、鍵選中、閃爍、位置和邊界等。
将執行個體與嚴格自定義類型移除連接配接,可阻止自定義類型執行個體進行自動更新。
下面舉一個枚舉控件的例子來說明嚴格自定義類型的應用。
假設需要建立一個指令枚舉變量,該指令可能有4條,對于枚舉變量和發送到端口的指令建立一個連接配接關系。首先要對枚舉變量進行嚴格自定義。
打開枚舉變量的自定義框,按照圖2-37編輯枚舉變量的項,儲存該枚舉控件。
打開程式框圖,單擊選擇vi,在彈出的框中選擇該控件,可以馬上看見已經編輯好的該枚舉控件放置于程式框圖中,接着建立該枚舉控件與指令的關系,按照圖2-38編寫程式框圖。
将該枚舉變量與條件結構連接配接,條件結構會自動産生兩個分支,然後單擊條件結構邊框,添加新的條件分支,直至枚舉變量的項目全部編輯完成。
這樣處理完之後,當需要輸入指令字元串時,就不需要直接輸入繁瑣的字元串,隻要調用該vi,并從枚舉變量的項目中選擇具體項目,這樣即可将複雜的指令字元串轉換為簡單明了的指令名稱。是以,當該枚舉變量改動時,程式中所有應用到該枚舉變量的執行個體都會做相應的修改。應用該枚舉變量前後程式框圖如圖2-39所示,從右邊的程式框圖中可以明顯看出該vi的功能是發送端口。
(3)阻止自定義類型執行個體的自動更新
右鍵單擊執行個體,取消快捷菜單中勾選的從自定義類型自動更新選項,可阻止當自定義類型的資料類型改變時,自定義類型的某個執行個體進行自動更新。取消勾選從自定義類型自動更新選項,可阻止執行個體在自定義類型的資料類型發生改變時自動更新,但仍保留執行個體與自定義類型的連接配接。如需斷開執行個體與自定義類型的連接配接,可右鍵單擊執行個體,從快捷菜單中選擇斷開連接配接自定義類型選項。
如果禁用自定義類型執行個體的自動更新并改變執行個體的資料類型,則該執行個體将模糊顯示且運作按鈕顯示為斷開。如需啟用該執行個體,可右鍵單擊該執行個體,從快捷菜單中選擇從自定義類型更新或斷開連接配接自定義類型選項。選擇從自定義類型更新選項,将把執行個體的資料類型改為自定義類型的資料類型;選擇斷開連接配接自定義類型選項,将使執行個體與自定義類型間永久地移除連接配接。
當自定義類型的資料類型被更改後,打開含有該自定義類型執行個體的vi,所有自動更新被禁用的執行個體将模糊顯示。同時,運作按鈕也以斷開顯示。如需啟用該執行個體,可右鍵單擊該執行個體,從快捷菜單中選擇從自定義類型更新或斷開連接配接自定義類型選項,如圖2-40所示。