新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > LabVIEW程序的調(diào)試方式

LabVIEW程序的調(diào)試方式

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏



圖 7 Breakpoint Manager對(duì)話框

1.4高亮工具(Highlight)

高亮工具是LabVIEW相對(duì)于傳統(tǒng)的文本式語(yǔ)言的IDE環(huán)境所獨(dú)有的調(diào)試工具,也是數(shù)據(jù)流程序設(shè)計(jì)思想的一種體現(xiàn)。打開工具欄中的Highlight工具(如圖 8所示)并單擊“Run”按鈕,程序開始在Highlight模式下運(yùn)行。此時(shí)根據(jù)數(shù)據(jù)流的運(yùn)行順序,LabVIEW將在各個(gè)節(jié)點(diǎn)的輸入和輸出的端子上顯示當(dāng)前端子上的數(shù)據(jù),并且以小圓點(diǎn)的方式顯示數(shù)據(jù)流的執(zhí)行方式。程序員可以比較清楚地觀察到數(shù)據(jù)流的走向以及源代碼的執(zhí)行情況,這極大地方便了LabVIEW開發(fā)者對(duì)某部分代碼的詳細(xì)調(diào)試。


圖 8 Highlight工具
對(duì)初學(xué)者而言,這種調(diào)試方式無(wú)疑是直觀和清楚的。但是同時(shí)對(duì)一些VI也會(huì)帶來(lái)一些影響,如某些對(duì)時(shí)間有著嚴(yán)格控制的VI。由于在Highlight模式中,LabVIEW會(huì)減慢程序執(zhí)行的速度,因此有些與時(shí)間有關(guān)的事件或者Bug會(huì)被掩蓋和忽略。這也是為什么有時(shí)候程序在Highlight模式下運(yùn)行正常,而回到普通模式時(shí)卻無(wú)法返回正確的結(jié)果。此時(shí),就需要使用Breakpoint和Probe工具(下一小節(jié)介紹)聯(lián)合調(diào)試,找到程序出現(xiàn)問(wèn)題的原因。

1.5探針工具(Probe)

探針并不是LabVIEW所特有的調(diào)試工具,在很多的文本式語(yǔ)言的IDE中都存在著Watch窗口用來(lái)實(shí)時(shí)監(jiān)視某些變量的值,LabVIEW中的探針與此類似,也是用來(lái)實(shí)時(shí)監(jiān)測(cè)程序背面板中任一連接線(不是任一節(jié)點(diǎn))上的值。
右擊源代碼中任一連線處,選擇Probe菜單項(xiàng)將彈出當(dāng)前位置的探針,如圖 9所示。LabVIEW會(huì)自動(dòng)判斷當(dāng)前位置的數(shù)據(jù)類型從而調(diào)用不同的探針以顯示當(dāng)前位置的數(shù)據(jù)。當(dāng)VI的背面板關(guān)閉時(shí),那么該VI中所有的探針窗口也會(huì)自動(dòng)關(guān)閉。運(yùn)行VI,當(dāng)運(yùn)行到探針的位置時(shí)將在探針窗口中立即顯示當(dāng)前的值。


圖 9 Probe工具
為了定位到錯(cuò)誤源或者找到某一時(shí)刻的運(yùn)行結(jié)果,往往程序員需要配合斷點(diǎn)和探針工具,在適當(dāng)?shù)奈恢迷黾訑帱c(diǎn),而適當(dāng)?shù)奈恢眉尤胩结??;蛘咧苯釉O(shè)置探針工具,讓探針捕獲到某一特定的條件是程序暫停運(yùn)行。如在圖 9中,選擇Custom Probe>>Conditional String Probe菜單項(xiàng)將彈出圖 10所示的探針窗口。在Condition頁(yè)中,可以設(shè)置程序暫停的條件。當(dāng)滿足該條件時(shí),程序?qū)⒘⒓丛诋?dāng)前探針位置暫停。


圖 10 Conditional String Probe
從圖 9和圖 10可以看出,探針的主要功能就是將當(dāng)前連線上的數(shù)據(jù)以控件(Indicator)的形式表示出來(lái)。由于在LabVIEW中,數(shù)據(jù)的顯示方式是可以自定義的,如使用Type Def.控件修改某些控件的外觀或者將String控件以****的密碼方式顯示,因此LabVIEW提供了自定義探針技術(shù)允許程序員根據(jù)實(shí)際情況使用任意預(yù)定義的探針。
在圖 9的快捷菜單中選擇Custom Probe>>New…菜單項(xiàng),將彈出圖 11所示的自定義探針向?qū)?。程序員可以選擇從現(xiàn)有的探針文件(從后面可以看出,事實(shí)上也是一個(gè)vi文件)新建探針或者直接新建一個(gè)空的探針。選擇“Create a new probe”項(xiàng)。


圖 11 Create New Probe_1
單擊Next按鈕進(jìn)入圖 12所示的界面。Filename表示探針文件的名字;Window title and shortcut menu name表示探針VI的標(biāo)題欄名字同時(shí)也是使用探針時(shí)出現(xiàn)在快捷菜單中的名字;Directory to save the probe表示探針的存儲(chǔ)位置。


圖 12 Create New Probe_2
單擊Save按鈕,LabVIEW會(huì)自動(dòng)生成圖 13所示的探針VI。不要?jiǎng)h除界面上的任何控件:
  1. String型控件表示探針位置當(dāng)前的數(shù)值;
  2. Boolean型控件表示條件斷點(diǎn),當(dāng)該值被設(shè)置為TRUE時(shí),程序?qū)⒃诋?dāng)前的斷點(diǎn)處暫停。
實(shí)際上,程序員可以任意修改這兩個(gè)控件的外觀,如設(shè)置為自定義類型、修改控件的Label或Caption,甚至可以在當(dāng)前VI中加入新的控件。但是最好不要修改控件的類型和Connection(輸入輸出連接端子)定義方式,因?yàn)長(zhǎng)abVIEW會(huì)根據(jù)控件的類型選擇在不同的位置調(diào)用不同的探針VI。


圖 13 String Probe_Custom.vi
本例將修改String Probe_Custom.vi(下載)使得程序以不同的方式顯示String的值,并且設(shè)置為當(dāng)值為“Hello”時(shí)暫停程序運(yùn)行。如圖 14所示,加入適當(dāng)?shù)拇a,并調(diào)整Probe的前面板窗口大?。ㄟ@也是最終探針的顯示大小)。


圖 14 修改后的String Probe_Custom.vi
新建一個(gè)VI,并加入一個(gè)String控件,此時(shí)在右鍵快捷菜單中選擇Custom Probe>> My First String Probe菜單項(xiàng),如圖 15所示。


圖 15 調(diào)用String Probe_Custom探針
此時(shí),LabVIEW會(huì)自動(dòng)調(diào)用String Probe_Custom.vi,并以探針窗口的樣式顯示,如圖 16所示。在運(yùn)行VI前修改Display Style中的值并運(yùn)行VI,那么String顯示框?qū)⒆詣?dòng)以相應(yīng)的方式顯示數(shù)值。


圖 16 String Probe_Custom探針窗口
從上面的調(diào)用過(guò)程可以看出,LabVIEW中的探針實(shí)際上是對(duì)VI的調(diào)用。因此,在編輯探針VI時(shí)需要遵循以下的原則:
  1. 不要在探針VI中加入任何等待或長(zhǎng)時(shí)間執(zhí)行的代碼,如循環(huán)、事件、隊(duì)列等,否則LabVIEW在運(yùn)行時(shí)會(huì)自動(dòng)掛起。
  2. 不要修改探針VI的默認(rèn)屬性,如設(shè)置為Modal等。但是可以修改它的標(biāo)題欄和大小。
只有當(dāng)程序運(yùn)行到探針位置時(shí),探針窗口才顯示當(dāng)前運(yùn)行值,并且這些值在連線中不會(huì)保存。也就是說(shuō)如果需要探測(cè)某個(gè)位置的值必須要在運(yùn)行之前在該位置加入探針,否則如果是在程序運(yùn)行之后再次加入探針,那么這些新加入的探針將無(wú)法顯示程序之前的運(yùn)行值。
LabVIEW提供了一種工具允許程序中的連接線保留上一次的運(yùn)行值。單擊圖 17中的“Retain Wire Values”按鈕打開該工具,此時(shí)LabVIEW將保留當(dāng)前VI上一次的運(yùn)行值。當(dāng)VI運(yùn)行完成后,再次添加探針,則探針會(huì)自動(dòng)立即顯示該位置上一次的運(yùn)行值。當(dāng)然,這也會(huì)影響程序運(yùn)行的效率,因此當(dāng)VI退出內(nèi)存時(shí),LabVIEW會(huì)自動(dòng)關(guān)閉該工具。


圖 17 Retain Wire Values工具

1.6VI窗口管理(VI Windows)

在調(diào)試過(guò)程中,為了追蹤子VI的運(yùn)行狀態(tài),經(jīng)常需要打開很多的VI窗口。往往在關(guān)閉這些窗口時(shí)反復(fù)地按下“Ctrl + W”鍵,LabVIEW提供了同時(shí)關(guān)閉這些VI的方法。單擊Windows>>All Windows…(快捷點(diǎn)是Ctrl + Shift + W)菜單項(xiàng),將彈出圖 18所示的VI窗口管理對(duì)話框。選擇需要關(guān)閉的窗口(可以使用Ctrl鍵或Shift鍵多選),單擊“Close Windows”按鈕就可以關(guān)閉選擇的窗口。


圖 18 VI窗口管理
【小技巧】
在LabVIEW中,按下Ctrl + Tab鍵能夠在不同的LabVIEW窗口之間切換(Windows的Alt + Tab鍵是在所有的窗口之間切換)。

1.7小結(jié)

在實(shí)際的應(yīng)用中,程序員通常將上述多種調(diào)試工具綜合起來(lái)使用。根據(jù)多種提示和輔助信息可以快速地定位錯(cuò)誤源,并觀察部分代碼執(zhí)行的詳細(xì)過(guò)程,最終排除錯(cuò)誤,達(dá)到調(diào)試程序的目的。

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: LabVIEW程序調(diào)試方

評(píng)論


技術(shù)專區(qū)

關(guān)閉