《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計應(yīng)用 > LabVIEW新手5大錯誤
LabVIEW新手5大錯誤
摘要: 雖然NI LabVIEW軟件長期以來一直幫助工程師和科學(xué)家們快速開發(fā)功能測量和控制應(yīng)用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應(yīng)用程序,就馬上可以發(fā)現(xiàn)用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數(shù)據(jù)流背后的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質(zhì)量。
關(guān)鍵詞: 虛擬儀器 LabView 編程語言
Abstract:
Key words :

 

雖然NI labview/zhs/">LabVIEW軟件長期以來一直幫助工程師和科學(xué)家們快速開發(fā)功能測量和控制應(yīng)用,但不是所有的新用戶都會遵循LabVIEW編程的最佳方法。LabVIEW圖形化編程比較獨特,因為只需看一眼用戶的應(yīng)用程序,就馬上可以發(fā)現(xiàn)用戶是否遵循編碼的最佳方法。有些用戶會犯這些錯誤是因為他們沒有真正理解LabVIEW框圖數(shù)據(jù)流背后的原理,而有些用戶則是不知道哪些特性可提高LabVIEW編程質(zhì)量。

本文介紹了經(jīng)驗欠缺的LabVIEW程序員最經(jīng)常犯的一些編程錯誤,同時也提供了采用正確LabVIEW編程方法的建議。

圖1. LabVIEW新手典型“杰作”

過度使用平鋪式順序結(jié)構(gòu) 

許多LabVIEW新手并不完全了解“數(shù)據(jù)流”執(zhí)行背后的概念,而這些概念卻是LabVIEW編程的基礎(chǔ)。其中一個現(xiàn)象是用戶往往在程序框圖中過度使用平鋪式順序結(jié)構(gòu)。用戶經(jīng)常依賴平鋪式順序結(jié)構(gòu)來實現(xiàn)程序框圖的代碼串行執(zhí)行,而不是使用數(shù)據(jù)流和節(jié)點之間的連線。

圖2. 用戶往往過度依賴平鋪式順序結(jié)構(gòu),而沒有充分理解數(shù)據(jù)流編程概念。

數(shù)據(jù)流編程是指只有在所需的數(shù)據(jù)輸入全部到達(dá)時,框圖上的節(jié)點(子VI、本原、結(jié)構(gòu)等)才開始執(zhí)行。 這對于使用LabVIEW的程序員來說非常有用,因為獨立的進(jìn)程本身就可以實現(xiàn)并行運行,而命令式語言卻需要額外的設(shè)置才能實行并行執(zhí)行。隨著計算機CPU的不斷增多,LabVIEW可自動分解并行流程,提高代碼性能,而無需用戶編寫任何額外代碼。而強行使用平鋪式順序結(jié)構(gòu)來執(zhí)行程序框圖不僅會限制并行運行,還會喪失這一優(yōu)勢。限制程序框圖中不必要的結(jié)構(gòu)有助于提高整體可讀性和保持更簡潔的框圖。

錯誤連線可以有效地實現(xiàn)程序框圖上的數(shù)據(jù)流,而不需要依靠平鋪式順序結(jié)構(gòu),此外錯誤連線還有助于實現(xiàn)錯誤處理策略。

何時應(yīng)該使用平鋪式順序結(jié)構(gòu)?

通過平鋪式順序結(jié)構(gòu)來執(zhí)行程序框圖有助于代碼性能的基準(zhǔn)測試。通過使用框架內(nèi)具有時間計數(shù)器的順序結(jié)構(gòu),您可以決定兩個時間計數(shù)器之間代碼執(zhí)行所花費的時間。這是一般數(shù)據(jù)流執(zhí)行所無法實現(xiàn)的。

圖3. 平鋪式順序結(jié)構(gòu)和時間計數(shù)器VI有助于代碼的基準(zhǔn)測試。

關(guān)于數(shù)據(jù)流編程的更多信息,請訪問在線自學(xué)培訓(xùn)(ni.com/self-paced-training)LabVIEW核心課程1的“數(shù)據(jù)流”。購買LabVIEW或具有標(biāo)準(zhǔn)服務(wù)項目(ni.com/ SSP)會員資格的用戶可以免費參加在線自學(xué)培訓(xùn)。

 

錯誤使用局部變量

LabVIEW編程中另一個常見的錯誤是過度使用局部變量。局部變量是共享內(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中過度使用變量可能會最終導(dǎo)致數(shù)據(jù)丟失。

您可以通過多種方法安全地將數(shù)據(jù)從LabVIEW程序的一個部分傳遞到另一個部分,包括連線、隊列、事件、通知、功能全局變量等等。每個機制都是針對特定情況設(shè)計的,但都具有消除競爭條件的功能。

關(guān)于在LabVIEW程序內(nèi)正確移動數(shù)據(jù)的更多信息,請訪問在線自學(xué)培訓(xùn)(ni.com/self-paced-training)LabVIEW核心課程1的“局域變量”和LabVIEW核心課程2的“通知、隊列和事件”。

忽略代碼模塊化

通常情況下,新LabVIEW用戶創(chuàng)建的是“即寫即忘”應(yīng)用程序去完成簡單的任務(wù),而沒有考慮到以后是否會用到這些代碼。隨著編程工作越來越多,他們會發(fā)現(xiàn)自己一遍又一遍地重寫同一段代碼。而如果在編程同時創(chuàng)建一個可復(fù)用于其他應(yīng)用的模塊化子VI,就可以節(jié)省大量的開發(fā)時間。

如果您知道代碼的特定部分將會重用于同一應(yīng)用程序,或感覺該部分代碼可能會用于未來的應(yīng)用程序,那么您應(yīng)該花一點時間將該部分代碼變成一個子VI。如果要使某部分代碼成為一個子VI,您需要做的主要是添加一個文檔、使用“接線端”、禁用某些VI屬性。創(chuàng)建子VI的最簡單方法之一是高亮標(biāo)記程序框圖中的某部分代碼,然后從菜單欄中選擇“編輯>>創(chuàng)建子VI”。這樣這部分代碼就會放到一個單獨的VI,然后使用“接線端”。您仍然需要為圖標(biāo)添加說明,并將文檔記述添加到程序框圖和VI屬性中,然后取消某些VI設(shè)置,但“編輯>>創(chuàng)建子VI”可幫助您很好地了解代碼的模塊化功能。


圖4. 采用正確的LabVIEW代碼模塊化操作可以幫助您節(jié)省大量開發(fā)時間。

代碼模塊化時必須取消的一項設(shè)置是“允許調(diào)試”。 您可在“VI屬性(文件>>VI屬性)”下的“執(zhí)行”目錄中找到此選項。代碼完全正常運行無需再使用高亮執(zhí)行等調(diào)試功能時,在執(zhí)行設(shè)置中取消“允許調(diào)試”,然后再次運行VI。這樣做的好處是由于在編譯過程中進(jìn)行了優(yōu)化,應(yīng)用程序的運行速度可能加快,而且由于啟動調(diào)試的代碼被關(guān)閉,VI所占的磁盤物理空間也相應(yīng)減少了。

關(guān)于代碼模塊化的更多信息,請訪問在線自學(xué)培訓(xùn)LabVIEW核心課程1的“理解模塊化”。

創(chuàng)建龐大繁瑣的程序框圖

許多新LabVIEW用戶都會把程序框圖編寫得非常繁瑣龐大。對于一些復(fù)雜的應(yīng)用程序,我們難免需要編寫較大的程序框圖,但龐大的程序框圖從一定程度上也可以表明該程序缺乏編程架構(gòu)。如果沒有一個基本的架構(gòu),要長期維護(hù)該程序是非常困難的,而且如果以后要添加新功能也會非常困難。正如只有一個好的框架才能建造一棟結(jié)構(gòu)合理的房子,一個好的編程架構(gòu)可以為您構(gòu)建應(yīng)用程序提供了一個安全可靠的框架。

幾乎所有的程序員都會發(fā)現(xiàn)常見的框架中,軟件架構(gòu)是非常有用的。實際上LabVIEW中的許多架構(gòu),如生產(chǎn)者/消費者和狀態(tài)機,與其他編程語言非常相似。

了解LabVIEW的架構(gòu)可以縮短開發(fā)時間和提高應(yīng)用程序的可擴(kuò)展性。LabVIEW 2012包含了模板和項目范例,使理解架構(gòu)變得更加容易。模板解釋了不同的架構(gòu)及應(yīng)用。項目范例則是基于模板的更大型應(yīng)用程序,演示了如何使用模板來應(yīng)對實際的挑戰(zhàn)。您可以將硬件加入到范例項目中,或者需要時可將項目范例作為一個整體應(yīng)用程序,同時項目范例具有開放性且文檔記述也很完整,所以您可針對具體應(yīng)用進(jìn)行自定義。

圖5. LabVIEW 2012中的模板和項目范例使得理解軟件架構(gòu)變得非常輕松。

關(guān)于LabVIEW架構(gòu)的更多信息,請訪問在線自學(xué)培訓(xùn)(ni.com/self-paced-training) for LabVIEW核心課程2的“設(shè)計模式”。

不重視文檔記錄

優(yōu)秀的代碼文檔可以有效地幫助他人理解自己寫的程序。遺憾的是,許多程序員通常在開發(fā)周期末期功能開發(fā)結(jié)束之后才開始進(jìn)行文檔撰寫。這使得用于對代碼進(jìn)行文檔記錄的時間變得非常少。正確的做法應(yīng)該是在開發(fā)過程中就需抽出時間來開始進(jìn)行文檔記錄。文檔對于編程人員自身也非常有用,尤其是當(dāng)他們過段時間回來看代碼卻不記得當(dāng)初他們?yōu)槭裁催x擇某些代碼時。程序員經(jīng)常會一邊喝著咖啡,一邊熬夜編程,這往往會出現(xiàn)“短暫失憶”。而文檔則可以幫助程序員進(jìn)行回憶。

一般情況下,相對于基于文本的程序,LabVIEW的圖形化特性使得程序閱讀更為容易,但是有效的文檔記錄可以減少“解碼”程序所需的時間。添加文檔注釋到程序框圖的最簡單方式是使用自由標(biāo)簽。您可以在框圖的空白位置雙擊左鍵,并輸入文字,添加注釋。然后,使用箭頭標(biāo)記來指向自由標(biāo)簽引用的特定代碼。如果需要添加圖片,則可將它們復(fù)制到剪貼板,然后粘貼到程序框圖中。物理系統(tǒng)圖片和數(shù)學(xué)公式均有助于清晰說明程序框圖內(nèi)的代碼上下文。


 

圖6.架構(gòu)正確且文檔記錄充分的代碼不僅可幫助其他人理解您的代碼,也可幫助您更好地理解自己的代碼。

對代碼進(jìn)行文檔記錄不僅只是針對復(fù)用程序庫,而應(yīng)該是針對每一個程序。當(dāng)一個人需要為其他人講解時,他對該主題將會有更深刻的理解。文檔記錄從本質(zhì)上看就是在迫使程序員進(jìn)行講解,以幫助他們更好地了解自己的代碼。

關(guān)于文檔記述的更多信息,請訪問在線自學(xué)培訓(xùn)LabVIEW核心課程1的“對代碼進(jìn)行文檔記錄”。

LabVIEW旨在幫助工程師和科學(xué)家更成功地應(yīng)對全球最嚴(yán)峻的挑戰(zhàn)。LabVIEW社區(qū)擁有龐大的工程師和科學(xué)家會員,為其提供了一個有效的平臺來與他人分享知識。如果您愿意分享自己所犯過的新手錯誤,請發(fā)布到bit.ly/lvrookiemistakes

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲福利视频专区| 亚洲激情另类| 欧美不卡高清| 欧美一区二区视频在线| 亚洲一区二区三区四区中文| 亚洲日本va午夜在线电影| 欧美在线亚洲一区| 亚洲嫩草精品久久| 亚洲制服av| 一区二区三区欧美在线观看| 亚洲欧洲一区二区三区在线观看| 韩日成人av| 国产一区视频在线看| 国产日韩欧美精品综合| 国产精品日韩专区| 国产精品国产精品| 国产精品国产亚洲精品看不卡15| 欧美欧美天天天天操| 欧美精品久久一区| 欧美激情亚洲国产| 欧美电影美腿模特1979在线看| 久久综合给合| 免费观看成人网| 欧美xxxx在线观看| 欧美精品xxxxbbbb| 欧美日韩精品免费观看视一区二区| 欧美二区在线看| 欧美大片第1页| 欧美精品七区| 欧美日韩一区二区三区免费看| 欧美日韩国产成人在线91| 欧美视频一区二| 国产精品入口福利| 国产亚洲精品自拍| 精品福利免费观看| 亚洲高清免费视频| 日韩小视频在线观看专区| 一区二区欧美日韩视频| 亚洲一区二区三区乱码aⅴ| 亚洲免费小视频| 欧美一区免费视频| 最新成人av在线| 在线性视频日韩欧美| 午夜精品福利在线观看| 久久精品免费观看| 你懂的国产精品| 欧美久久久久免费| 国产精品美女久久久久久2018| 国产美女在线精品免费观看| 狠狠色狠狠色综合日日小说| 91久久精品美女高潮| 一区二区三区毛片| 欧美亚洲专区| 亚洲理伦在线| 亚洲欧美电影院| 久久免费黄色| 欧美成人免费全部观看天天性色| 欧美精品午夜视频| 国产日韩高清一区二区三区在线| 国内精品久久久久久久影视麻豆 | 欧美在线一二三四区| 亚洲精品色婷婷福利天堂| 亚洲一区二区三区免费视频| 久久精品一区四区| 欧美精品久久久久久久| 国产伦精品一区二区三区高清版| 激情校园亚洲| 在线视频日本亚洲性| 亚洲福利视频专区| 亚洲欧美一区二区精品久久久| 久久综合久久综合久久| 国产精品久久久久久久免费软件| 一区二区亚洲精品| 亚洲私人影吧| 亚洲人成网在线播放| 欧美在线二区| 欧美视频专区一二在线观看| 黄色一区三区| 亚洲一二三级电影| 亚洲毛片在线免费观看| 久久国内精品视频| 欧美亚洲成人精品| 亚洲国产精品ⅴa在线观看| 午夜精品一区二区三区电影天堂| 99这里只有久久精品视频| 久久精品国产一区二区电影| 欧美午夜欧美| 亚洲国产清纯| 欧美中文字幕视频| 亚洲女同同性videoxma| 欧美极品一区二区三区| 国语自产精品视频在线看| 亚洲午夜久久久久久久久电影网| 91久久线看在观草草青青| 欧美怡红院视频一区二区三区| 欧美精品一区二区三区一线天视频| 国产午夜精品久久久久久久| 中文欧美日韩| 亚洲最新色图| 欧美国产国产综合| 依依成人综合视频| 欧美淫片网站| 欧美一级电影久久| 欧美视频网站| 99人久久精品视频最新地址| 日韩视频一区二区三区在线播放免费观看 | 亚洲天堂av高清| 欧美区在线观看| 亚洲国产三级| 亚洲日本成人网| 榴莲视频成人在线观看| 国内自拍一区| 欧美在线观看你懂的| 久久国产精品99国产| 国产精品永久免费观看| 亚洲午夜日本在线观看| 亚洲综合精品自拍| 国产精品高潮呻吟久久| 一本在线高清不卡dvd| 一区二区三区黄色| 欧美日韩精品系列| 亚洲免费av电影| 一区二区三区欧美在线观看| 欧美日韩a区| 91久久午夜| av不卡在线观看| 欧美日韩免费看| 中日韩男男gay无套| 亚洲欧美一区二区三区在线| 国产精品影音先锋| 欧美一区在线直播| 久久综合色播五月| 亚洲国产高清高潮精品美女| 亚洲美女福利视频网站| 欧美日韩理论| 一区二区日韩免费看| 亚洲欧美另类在线| 国产日韩综合| 久久精品视频导航| 欧美成人a∨高清免费观看| 亚洲人成人99网站| 亚洲一级黄色片| 国产精品免费区二区三区观看| 亚洲一级黄色av| 久久aⅴ国产欧美74aaa| 黑人一区二区三区四区五区| 最新亚洲一区| 欧美性一区二区| 亚洲欧美日韩网| 久久久青草青青国产亚洲免观| 伊人伊人伊人久久| 中文欧美日韩| 国产日韩综合一区二区性色av| 久久精品夜色噜噜亚洲a∨| 欧美黄色一级视频| 亚洲一区二区三区欧美| 久久久久国产一区二区三区| 亚洲第一视频| 亚洲自拍高清| 好吊视频一区二区三区四区| 亚洲伦理中文字幕| 国产精品一区二区男女羞羞无遮挡 | 欧美一区二区免费观在线| 免费人成精品欧美精品| 日韩亚洲欧美一区| 久久国产手机看片| 亚洲欧洲偷拍精品| 欧美专区福利在线| 亚洲国产天堂网精品网站| 午夜精品国产更新| 亚洲国产精品va在线看黑人| 亚洲欧美清纯在线制服| 永久域名在线精品| 在线视频日本亚洲性| 国产在线精品一区二区中文| 日韩视频在线观看一区二区| 国产精品一区二区三区四区 | 亚洲精品一区二区三区福利| 欧美伊人久久大香线蕉综合69| 在线观看日韩av电影| 亚洲伊人观看| 亚洲第一成人在线| 欧美一区二区高清| 91久久国产自产拍夜夜嗨| 欧美一区二区三区啪啪| 亚洲国产专区| 久久国产综合精品| 一区二区三区国产精品| 狂野欧美激情性xxxx| 亚洲综合电影| 欧美日韩国产在线| 亚洲国产精品精华液2区45| 国产精品毛片大码女人| 亚洲精品中文字| 韩国一区二区三区在线观看| 亚洲欧美日韩另类| 亚洲日韩欧美视频| 蜜桃精品久久久久久久免费影院| 亚洲欧美日韩国产综合精品二区| 欧美精品一区二区精品网 |