進(jìn)度條,是一個(gè)非常重要的UI元素。 工控軟件里有些任務(wù)耗時(shí)很長,為了不讓用戶感覺等待的過程過于漫長,也為了告訴用戶軟件還在正常運(yùn)行、及時(shí)告訴用戶完成到什么程度了、大概還要多久可以完成,我們有必要給軟件設(shè)計(jì)一個(gè)進(jìn)度條。 本篇推送里我們介紹兩種實(shí)現(xiàn)進(jìn)度條的方式:
使用LabVIEW自帶的Horizontal Progress Bar控件。
使用WF Progress Bar插件。
1.Horizontal Progress Bar控件
Horizontal Progress Bar是LabVIEW自帶的進(jìn)度條控件,本質(zhì)上是個(gè)數(shù)值顯示控件,位于Numeric控件分類里。根據(jù)使用習(xí)慣的不同,大致上有以下幾種使用方式。
1)直接使用Horizontal Progress Bar 直接把代表進(jìn)度的數(shù)值寫給Horizontal Progress Bar。 例如下面這個(gè)代碼,task i表示第i項(xiàng)任務(wù),我們等待一下,模擬這個(gè)任務(wù)需要耗費(fèi)點(diǎn)時(shí)間。這樣這個(gè)進(jìn)度條隨著任務(wù)的執(zhí)行就可以自動(dòng)更新進(jìn)度了。進(jìn)度條的數(shù)據(jù)類型、最小值、最大值都可以在屬性里設(shè)置。
上面這個(gè)進(jìn)度條實(shí)現(xiàn)方式非常簡單,但是缺點(diǎn)也很明顯:我們需要通過屬性節(jié)點(diǎn)或者局部變量來更新進(jìn)度條,不能在子VI內(nèi)更新。
2)SubVI + Horizontal Progress Bar控件 為解決子VI內(nèi)更新進(jìn)度的問題,我們可以設(shè)計(jì)一個(gè)專門用來更新進(jìn)度條的子VI,把指向Horizontal Progress Bar的引用作為參數(shù),在子VI內(nèi)更新進(jìn)度條的值。下面是更新進(jìn)度條值(進(jìn)度)的子VI代碼,比如我們命名為UpdateProgressBar.vi。
需要更新進(jìn)度的時(shí)候,調(diào)用這個(gè)VI即可。例如下面這個(gè)示例代碼。
3)全局變量+Horizontal Progress Bar控件 還有一種從各個(gè)層次VI變更主界面上進(jìn)度條的方式就是使用全局變量。另外設(shè)計(jì)一個(gè)線程,這個(gè)線程負(fù)責(zé)定期讀取全局變量的值并更新進(jìn)度條。 例如下面這個(gè)程序,我們調(diào)整Progress值時(shí)進(jìn)度條將同步變化。
代碼如下:
上圖中下面的線程會(huì)定去讀取Progress全局變量的值并更新進(jìn)度條顯示。
以上是進(jìn)度條位于主界面的情況,如果我們需要?jiǎng)討B(tài)彈出進(jìn)度條進(jìn)行提示呢?如果需要進(jìn)度條滾動(dòng)的同時(shí)給出文字提示呢?當(dāng)然我們可以利用Horizontal Progress Bar寫一些專用的VI。不過這需要花費(fèi)不少時(shí)間和精力。好在針對(duì)進(jìn)度條這樣一個(gè)經(jīng)常會(huì)用到的控件,已經(jīng)有人將其設(shè)計(jì)成標(biāo)準(zhǔn)插件了。
下面我們看看WF Progress Bar插件。
2.WF Progress Bar插件
在VI Package Manager里搜索progress,找到WF ProgressBar,按提示安裝好插件。
安裝好之后,我們可以在Addon里找到相關(guān)的函數(shù)和控件。
從Help菜單里打開Find Examples對(duì)話框,搜索Progress找到Progressbar test_WireFlow.vi。這是WF ProgressBar的示例項(xiàng)目。
下面這個(gè)GIF是Progressbar test_WireFlow.vi部分運(yùn)行情況,展示了WF ProgressBar的一部分效果。這里面包括開始階段Splash Screen的加載進(jìn)度條,都是WF ProgressBar插件實(shí)現(xiàn)的。
Progressbar test_WireFlow.vi主要代碼如下:
Splash Screen進(jìn)度條加載和顯示代碼:
實(shí)現(xiàn)步驟:
1)創(chuàng)建ProgressBar實(shí)例,打開Splash Screen前面板。
2)指定ProgressBar最小值、最大值。
3)更新進(jìn)度提示信息。
4)更新進(jìn)度值。
5)關(guān)閉進(jìn)度條窗口。
6)關(guān)閉進(jìn)度條對(duì)話(Session)。
3)和4)根據(jù)任務(wù)需要循環(huán)或順序執(zhí)行。
不同主題的進(jìn)度條加載和顯示代碼:
實(shí)現(xiàn)步驟:
1)創(chuàng)建ProgressBar示例,設(shè)定主題(樣式),但是不打開前面板。
2)填寫保持不變的提示信息。
3)設(shè)定ProgressBar最小值、最大值。
4)打開前面板。
5)更新進(jìn)度條提示信息。
6)更新進(jìn)度值。
7)關(guān)閉ProgressBar。
8)關(guān)閉對(duì)話(Session)。
WF ProgressBar進(jìn)度條的樣式是可以自定義的,詳細(xì)方法可參考WF ProgressBar的幫助文檔。 借助WF ProgressBar插件可以快速應(yīng)用專業(yè)的進(jìn)度條,讓軟件人機(jī)界面更加友好,感興趣的朋友不妨試一試。
以上是關(guān)于進(jìn)度條的一些知識(shí),簡單的和復(fù)雜的方法都介紹到了,稍加改變或變通就能夠滿足絕大多數(shù)應(yīng)用開發(fā)需求,希望能夠幫助到你。
審核編輯:劉清
-
LabVIEW
+關(guān)注
關(guān)注
1974文章
3656瀏覽量
324438
原文標(biāo)題:LabVIEW里進(jìn)度條的兩種高效實(shí)現(xiàn)方式
文章出處:【微信號(hào):傳感測控物聯(lián)網(wǎng),微信公眾號(hào):傳感測控物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論