LabVIEW新手5大錯誤
錯誤使用局部變量
本文引用地址:http://www.ex-cimer.com/article/167320.htmLabVIEW編程中另一個常見的錯誤是過度使用局部變量。局部變量是共享內(nèi)存中的一個區(qū)域,用于在計算機程序不同部分之間傳遞數(shù)據(jù)。局域變量通常用于文本編程語言,具有非常強大的功能,但如果出現(xiàn)競爭條件,就會產(chǎn)生問題。
對于其他編程語言來說,通過變量傳遞數(shù)據(jù)是必需的,而LabVIEW則提供了一種數(shù)據(jù)流方法,可將數(shù)據(jù)從程序的一個部分移動到另一個部分。LabVIEW固有的并行性機制決定著用戶不能過度使用變量,因為同一時間內(nèi)通常會有多個不同的位置的程序訪問共享內(nèi)存。如果過度使用變量,則會出現(xiàn)某個讀/寫操作贏了“競爭”,而其他操作則輸了“競爭”,丟失數(shù)據(jù)的操作會被忽視,因此在LabVIEW中過度使用變量可能會最終導致數(shù)據(jù)丟失。
您可以通過多種方法安全地將數(shù)據(jù)從LabVIEW程序的一個部分傳遞到另一個部分,包括連線、隊列、事件、通知、功能全局變量等等。每個機制都是針對特定情況設計的,但都具有消除競爭條件的功能。
忽略代碼模塊化
通常情況下,新LabVIEW用戶創(chuàng)建的是“即寫即忘”應用程序去完成簡單的任務,而沒有考慮到以后是否會用到這些代碼。隨著編程工作越來越多,他們會發(fā)現(xiàn)自己一遍又一遍地重寫同一段代碼。而如果在編程同時創(chuàng)建一個可復用于其他應用的模塊化子VI,就可以節(jié)省大量的開發(fā)時間。
如果您知道代碼的特定部分將會重用于同一應用程序,或感覺該部分代碼可能會用于未來的應用程序,那么您應該花一點時間將該部分代碼變成一個子VI。如果要使某部分代碼成為一個子VI,您需要做的主要是添加一個文檔、使用“接線端”、禁用某些VI屬性。創(chuàng)建子VI的最簡單方法之一是高亮標記程序框圖中的某部分代碼,然后從菜單欄中選擇“編輯>>創(chuàng)建子VI”。這樣這部分代碼就會放到一個單獨的VI,然后使用“接線端”。您仍然需要為圖標添加說明,并將文檔記述添加到程序框圖和VI屬性中,然后取消某些VI設置,但“編輯>>創(chuàng)建子VI”可幫助您很好地了解代碼的模塊化功能。
代碼模塊化時必須取消的一項設置是“允許調(diào)試”。 您可在“VI屬性(文件>>VI屬性)”下的“執(zhí)行”目錄中找到此選項。代碼完全正常運行無需再使用高亮執(zhí)行等調(diào)試功能時,在執(zhí)行設置中取消“允許調(diào)試”,然后再次運行VI。這樣做的好處是由于在編譯過程中進行了優(yōu)化,應用程序的運行速度可能加快,而且由于啟動調(diào)試的代碼被關閉,VI所占的磁盤物理空間也相應減少了。
創(chuàng)建龐大繁瑣的程序框圖
許多新LabVIEW用戶都會把程序框圖編寫得非常繁瑣龐大。對于一些復雜的應用程序,我們難免需要編寫較大的程序框圖,但龐大的程序框圖從一定程度上也可以表明該程序缺乏編程架構。如果沒有一個基本的架構,要長期維護該程序是非常困難的,而且如果以后要添加新功能也會非常困難。正如只有一個好的框架才能建造一棟結構合理的房子,一個好的編程架構可以為您構建應用程序提供了一個安全可靠的框架。
幾乎所有的程序員都會發(fā)現(xiàn)常見的框架中,軟件架構是非常有用的。實際上LabVIEW中的許多架構,如生產(chǎn)者/消費者和狀態(tài)機,與其他編程語言非常相似。
了解LabVIEW的架構可以縮短開發(fā)時間和提高應用程序的可擴展性。 LabVIEW 2012包含了模板和項目范例,使理解架構變得更加容易。模板解釋了不同的架構及應用。項目范例則是基于模板的更大型應用程序,演示了如何使用模板來應對實際的挑戰(zhàn)。您可以將硬件加入到范例項目中,或者需要時可將項目范例作為一個整體應用程序,同時項目范例具有開放性且文檔記述也很完整,所以您可針對具體應用進行自定義。
評論