LabVIEW程序風(fēng)格協(xié)定I
好的程序,必須具有統(tǒng)一的風(fēng)格。
項目開發(fā)中,經(jīng)常存在多人共同開發(fā)同一程序的情況。風(fēng)格不一致,導(dǎo)致的結(jié)果是程序可讀性差,難于維護(hù)。為了避免這些問題,做為一個系統(tǒng)軟件工程工作者,需要在工程項目開始之前有一套團(tuán)隊成員彼此遵守的開發(fā)風(fēng)格指導(dǎo)。
工程項目的成功與否,一下幾個方面是必須注意的:
簡潔整齊的界面
團(tuán)隊開發(fā)人員易讀的Block Diagram
整個項目開發(fā)文檔
根據(jù)經(jīng)驗,需要在一下幾方面進(jìn)行統(tǒng)一的規(guī)定
I. 目錄結(jié)構(gòu)
II. 前端面板風(fēng)格
III.結(jié)構(gòu)圖形風(fēng)格
IX. 圖標(biāo)和連接塊風(fēng)格
X 菜單格式
XI 模塊定義
XII 整體結(jié)構(gòu)樣式
I.目錄結(jié)構(gòu)
把VI組織到文件系統(tǒng)中可以反映工程項目的等級結(jié)構(gòu)。把最高一層VI直接放在根目錄下。如程序放在D:Program中放主程序main.vi。把子VI放在子目錄中,并注意歸類,歸類必須反映所有組成模塊的特性,如設(shè)備驅(qū)動,程序配置,文件I/O等等。
整個工程建立一個目錄,并給該目錄一個有意義的名字,如下圖1所示。保存主VI在該目錄下,子VI放在子目錄下。如果子VI還有子VI,在其下面繼續(xù)建立子目錄。
當(dāng)建立目錄后,把各個VI和子VI規(guī)范化。什么樣的VI放在什么樣的目錄下。圖1給出了一個參考目錄。
圖1 參考目錄結(jié)構(gòu)
命名VI,VI庫以及目錄的時候,盡量避免使用不被所有文件系統(tǒng)所接受的字符,比如“/”,“”,“:”“~”。
避免在整個程序結(jié)構(gòu)中使用相同的文件名。因為在內(nèi)存中一次只能有一個給定的名字。如果內(nèi)存中存在某個文件名的VI,而又試圖去載入另外一個具有相同文件的VI,VI會提示你是否替換已存在的VI。這樣會導(dǎo)致整個程序出現(xiàn)難以預(yù)料的問題。如果打算備份VI文件的話,請務(wù)必確定把他們備份到正常搜索結(jié)構(gòu)之外,以便LabVIEW不會錯誤在內(nèi)存中調(diào)用這些VI。
避免在整個程序結(jié)構(gòu)中使用相同的文件名。因為在內(nèi)存中一次只能有一個給定的名字。如果內(nèi)存中存在某個文件名的VI,而又試圖去載入另外一個具有相同文件的VI,VI會提示你是否替換已存在的VI。這樣會導(dǎo)致整個程序出現(xiàn)難以預(yù)料的問題。如果打算備份VI文件的話,請務(wù)必確定把他們備份到正常搜索結(jié)構(gòu)之外,以便LabVIEW不會錯誤在內(nèi)存中調(diào)用這些VI。
II.前端面板風(fēng)格
前面板必須組織合理并且易用,因為用戶首先看到的就是前端面板。在設(shè)計前端面板時,時刻記住它會面對兩種使用者,最終用戶和開發(fā)人員。最終用戶看到的VI將是只能被其看到的前端界面,開發(fā)人員卻能看到更多的VI,某些VI并不在程序運(yùn)行中顯示出來。
字體和文字特征
不要使用太多的字體或字體樣式。把VI字體限制在三個以內(nèi)-Application,System,dialog-除非你需要對界面進(jìn)行特殊的修飾,不得不使用特殊的字體。
對這三種標(biāo)準(zhǔn)字體實際顯示是根據(jù)操作系統(tǒng)平臺的不同而不同的。例如,當(dāng)使用Windows時,偏好和顯卡驅(qū)動設(shè)置會影響到字體的大小。根據(jù)這些不同,在不同的系統(tǒng)上文字可能顯示的更大或者更小。為了避免或者彌補(bǔ)這一情況,盡力給字體一些空間,并且在控件的快捷菜單中選中Size to Text選項。使用回車符來進(jìn)行多行輸入,盡力避免調(diào)整文字框大小。
為了避免由于在不同平臺上標(biāo)簽的相互重疊,在控件間預(yù)留額外的空隙。例如,如果標(biāo)簽在控件的左邊,調(diào)整標(biāo)簽到左邊并且在其右邊預(yù)留一些空間。如果你居中標(biāo)簽在控件之上或之下,同樣對標(biāo)簽也要居中。字體在前面板是最不好調(diào)整的,所以盡量在開始的時候就在目標(biāo)機(jī)上進(jìn)行字體位置的設(shè)置。
顏色
很多開發(fā)者為了是界面更加漂亮,在沒有美術(shù)基礎(chǔ)之上,添加過多的顏色。如果做的好,能給用戶帶來清晰明了的指示。但實際情況往往相反。所以建議美術(shù)功底不深的開發(fā)人員盡量少使用過多的顏色來修飾界面。顏色轉(zhuǎn)移用戶對重要的信息的注意。比如,黃色,綠色,亮橙色的背景會使得用戶不易看清紅色警示。
WarningWarningWarning
另外一個問題是一些用戶平臺沒有開發(fā)人員所用平臺那么多顏色。少使用顏色,增加黑色,白色,灰色的使用幾率。以下是一些在使用顏色時簡單指導(dǎo):
1)不要使用那些和設(shè)備指示一樣或相近的顏色。人對某些顏色往往時不敏感的,這樣會造成識別上的失誤,可能導(dǎo)致嚴(yán)重后果。同樣的,多曲線圖顯示白色或黑色的背景上會失去某些曲線的信息。使用不同的線型來替代不同的顏色表示不同曲線。
2)對前面板背景色和用戶控件前景色盡力使用system顏色,或者symbolic顏色。System顏色會根據(jù)不同計算機(jī)上系統(tǒng)顏色來進(jìn)行調(diào)整。以獲得最佳的顯示效果。
3)背景盡量使用淺灰色,白色,或者柔和的顏色。
取色器第一排包括不太顯眼的顏色適合用在前面板背景和一般的控件上。第二排顏色包括更亮的顏色,可用在需要重要突出的控件上。當(dāng)個控件特別重要時候,選擇明亮顯眼的顏色,例如錯誤提示。
4)使用協(xié)調(diào)的顏色。
5)及時在不同平臺上檢查VI的顏色的協(xié)調(diào)性。
圖形和自定義控件
你可以通過導(dǎo)入圖形來提高前面板的功能。你可以導(dǎo)入位圖,Windows圖形文件,文本控件來做為前面板的背景,pict rings中的項目,以及做為自定義控件和指示器的一部分,如下圖2所示。
圖2 在Pict Ring中使用導(dǎo)入圖片的例子
當(dāng)你在另外一個平臺上載入導(dǎo)入的圖片時,請記得注意看看是否正常顯示。
導(dǎo)入過多的圖形圖片會是系統(tǒng)顯示更新速度受到一定影響。確保你沒有把指示器和控制控件放在圖形控件上。那樣的話,控件在指示器更新數(shù)值后并不會重畫。
提示 如果你必須在控件下面使用大圖片作為背景,好的辦法就是把它分割為好幾部分,分別導(dǎo)入。太大的圖片通常會花去過多的時間重畫。
布局
前面板界面布局盡可能的簡潔。例如,可是使用菜單來減少簇的使用。在用戶直接面對的最上層VI,把最重要的控件放在最顯眼的位置。使用排列和分布下拉菜單來統(tǒng)一整個界面的布局。
避免控件與控件相互重疊,包括他們標(biāo)簽,數(shù)字顯示,以及其他一些部位,除非你想從重疊中達(dá)到某種特殊效果。重疊會使得控件在重畫時出現(xiàn)閃爍的現(xiàn)象。
使用修飾,如下圖所示。用簇把相關(guān)信息都集中起來。但不要用簇來美化界面。
圖4 幫助說明色彩設(shè)置
大小和位置
前面板對大多數(shù)用戶可能使用的標(biāo)準(zhǔn)分辨率必須有所適應(yīng)。盡量使窗口趨于小型化,前提是不要使控件過于擁擠而犧牲了簡潔的界面。如果VI在通用用戶顯示器上顯示,而用戶大多用的都是高分辨率的情況,那就可以設(shè)計一個較大的界面。如果是開發(fā)商用程序,一定要記住有些顯示器會有分辨率限制,特別是LCD顯示器和觸摸屏。
前面板應(yīng)該開在屏幕的左上角,這樣可以便于小屏幕的用戶使用。在好幾個界面同時出現(xiàn)并可以同時操作的時候,注意不要使一個界面全部覆蓋下一個界面,至少讓用戶能看到每個界面的某一小塊,便于能都直接調(diào)出該界面。前面板在打開的時候使其居于屏幕中心。居中能是的不同分辨率下的用戶都能很容易的看到前面板。該設(shè)置在VI properties->Window Appearance->Cutomize Window Appearance->Auto Center。前面提到的屏幕位置設(shè)置可通過設(shè)置VI的Panel Bounds來達(dá)到。
標(biāo)簽
在Context Help窗口顯示標(biāo)簽作為連接塊的一部分。如果缺省值是重要的信息,把值放在用標(biāo)簽表示的名字旁邊的括弧中。如果可能的話盡量把單位也包括在其中。連接快終端的必須,推薦,可選三個設(shè)置會影響到Context Help窗口中輸入輸出的外觀。
控制和指示的名字需要文字來描述其作用。如果控制對用戶來說是可見的,可用Captions(標(biāo)題說明)來顯示更長的描述信息,這樣可使用較短的標(biāo)簽。這樣可節(jié)省Block diagram珍貴的空間。例如,當(dāng)Ring或者Slide有電壓,歐姆,和電流三個選項,需要選擇一個作為他們的可見名字。可用Caption來表示“選擇單位”。并且在程序中可用屬性節(jié)點(diǎn)來改變Captions的值。注意在程序運(yùn)行中,Caption的值是可以更改的,而標(biāo)簽則不行。
對于布爾控件,給每個狀態(tài)一個確定的名字來表示。對于Checkboxes和Radio按鈕,用戶可以點(diǎn)擊控件的布爾文字,而布爾控件的值相應(yīng)的作出改變。布爾控件中的Free Labels可以使得每個變換的意思明了,如圖5所示。
圖5 Free Label
路徑和字符
當(dāng)指定文件和文件夾路徑時,使用路徑控件或者指示器。路徑控件和指示器工作原理同字符類似,但是LabVIEW根據(jù)你使用的平臺的標(biāo)準(zhǔn)語法來格式化路徑。取保你在文件路徑控件的瀏覽按鈕中正確設(shè)置了瀏覽選項。例如,如果用戶需要選擇文件夾,務(wù)必使在瀏覽選項對話框中的選擇模式選項設(shè)成現(xiàn)有目錄(Existing dir)。
在Block diagram中使用路徑常量和路徑數(shù)據(jù)類型來表示一個常數(shù)路徑值。路徑常量和數(shù)據(jù)類型使用平臺制定的符號來表示路徑,不像字符串常量和數(shù)據(jù)類型。
枚舉類型控件和Ring控件
你可以在程序運(yùn)行中改變一個枚舉類型控件的字符串標(biāo)簽,因為字符串標(biāo)簽是數(shù)據(jù)類型的一部分。當(dāng)使用枚舉類型控件,務(wù)必進(jìn)行控件類型定義。建立類型定義可以避免你每次在枚舉類型控件中增加和刪除一條項目時候從新書寫代碼。
枚舉類型控件使得Block diagram代碼更易閱讀,因為當(dāng)你連接一個枚舉類型控件至Case結(jié)構(gòu)時,其字符串標(biāo)簽會顯示在選中標(biāo)簽中。
Ring控件在前面板中能和用戶交互,這是很有用的,你可以編程改變字符串標(biāo)簽的值。你可能想要使用Ring控件來替代一個布爾控件,因為如果你決定改變控件來表達(dá)兩個以上的選項,在Ring控件中你能很容易的添加選項。
缺省值和范圍
為了避免用戶輸入錯誤的數(shù)據(jù),你可以在Block diagram中檢查數(shù)據(jù)的可靠性,或者右鍵單擊控件,選擇數(shù)據(jù)范圍來設(shè)置控件值的范圍大小在指定的范圍:最小值,最大值和增加幅度。
給控件設(shè)置合理的缺省值。一個VI在以缺省值運(yùn)行的時候應(yīng)避免出錯。切記把缺省值寫在控件標(biāo)簽的括弧中。在沒有特殊原因的情況下,不要為如Graphs,數(shù)組,字符串指示器設(shè)置缺省值,這樣在保存VI的時候會浪費(fèi)磁盤控件。
靈活的使用缺省值。在像寫字符到文件這類高級文件VI的情況的時候,缺省值是一個空的路徑,它會強(qiáng)制顯示一個文件對話框。這樣可以省掉使用布爾開關(guān)。
屬性節(jié)點(diǎn)
使用屬性節(jié)點(diǎn)能讓用戶在前面板更多的反饋,使得VI易用性增強(qiáng)。以下是使用屬性節(jié)點(diǎn)來改善程序的例子:
1)把文本焦點(diǎn)設(shè)置到主要的,最常用的控件上。
2)禁止或隱藏當(dāng)前沒有使用或者非法的控件。
3)通過加亮控件來指導(dǎo)用戶使用程序。
4)出現(xiàn)錯誤的時候可通過改變窗口顏色來提醒用戶。
你可以通過使用控件reference來修改前面板控件。使用控件refnum控件來傳遞前面板控件的references給其他VI。在你傳遞完一個控件reference給子VI后,使用屬性節(jié)點(diǎn)和調(diào)用節(jié)點(diǎn)來讀寫屬性和調(diào)用前面板控件的方法??丶eferences減少了Block diagram的混亂。
鍵盤導(dǎo)航
一些用戶更樂于使用鍵盤。在某些環(huán)境下,例如工廠,只有鍵盤可用。及時鼠標(biāo)可用,盡量給你的VI設(shè)置鍵盤快捷方式。鍵盤快捷方式使VI使用更加方便。
注意前面板上按鈕的key navigation選項。為按鈕設(shè)置Tab順序,順序按照從左到右從上到下的原則。把“回車鍵”設(shè)為前面板的缺省鍵盤快捷方式,通常一般是“確認(rèn)”按鈕。然而,如果前面板有多行字符串控件,你也許不會使用回車鍵作為你的缺省鍵盤快捷方式。
如果前面板有“取消”按鈕,可設(shè)
同時也要考慮到使用鍵焦點(diǎn)來程序設(shè)置在開啟前面板時哪個控件獲得焦點(diǎn)。
對話框
對話框用來有效的獲得用戶的設(shè)置和配置信息。在對話框中使用對話框控件來提示用戶配置和設(shè)定選項??紤]使用tab控件,這樣可以使得在小的區(qū)域內(nèi)顯示更多的內(nèi)容,并且減少了界面混亂的可能性。
當(dāng)前許多程序使用對話框來顯示提示信息給用戶,但是決不要過多的使用這類對話框。使用狀態(tài)欄來顯示不是太重要的警告信息。
測控程序界面
測控程序的界面,目前位置沒有統(tǒng)一的約定,但是在眾多的測控程序,我們可以總結(jié)出一套大家能普遍遵守的界面布局格式。
圖6 程序主界面
一般在主界面,把重要幾組數(shù)據(jù)用Chart的形式實時的顯示出來。Chart右邊列出這幾組數(shù)據(jù)的具體數(shù)值,一般用Table或者M(jìn)ulticolumn Listbox來顯示。其中如果有多組數(shù)據(jù)無法同時顯示,可使用Tab控件。這樣能在主界面上顯示較多的信息。界面的左下角為測試信息一欄,這里由用戶輸入。程序的右下部為控制部分,一些簡單的控制按鈕可以放在這里,便于用戶操控。最下面一排可以顯示一些狀態(tài)信息。