LabVIEW的錯誤簇以及錯誤處理函數

來源:互聯網
上載者:User

標籤:


我們可以在LabVIEW的Modern>>Array, Matrix & Cluster控制項面板找到表示錯誤簇資料類型的錯誤輸入(Error In)以及錯誤輸出(Error Out)兩個錯誤簇控制項。其實在很多LabVIEW的內建函數以及VI中,都包括了錯誤輸入以及錯誤輸出這兩個錯誤簇類型的輸入與輸出參數。錯誤簇是LabVIEW中的一個特殊的資料類型,該簇是由一個表示狀態的布爾變數(status)、一個表示錯誤碼的32位整型變數(code)以及一個說明錯誤原因的字串變數(source)組成的,錯誤簇用於傳遞LabVIEW代碼運行期間的出錯資訊。 
  程式中出現錯誤並對錯誤進行處理是很自然的現象,我們沒有必要害怕程式出錯,更重要的是我們要學會發現錯誤發生的原因、擷取錯誤的資訊以及處理錯誤的方法。在LabVIEW中,什麼叫做錯誤呢?簡單的說,一個函數或子VI不能夠完成其所設定的功能就可以稱為出錯了。出錯的原因可能是無法訪問必要的資源或者是函數接受的參數是無效的等等。在LabVIEW這個資料流的程式設計語言中,是是使用錯誤簇這種資料類型來傳遞錯誤資訊的。 錯誤簇(Error Cluster)資料類型 
  如所示,LabVIEW中的錯誤簇是由以下三部分組成的: 
 
1. status 狀態布爾量,當有錯誤發生時該值為TRUE,沒有錯誤發生時該值為FALSE; 
2. 
code 標識錯誤碼的32位整型變數,當該值為負時表示有程式警告,為零表示沒出錯,為正表示有錯誤發
生; 3. 
source 錯誤原因字串,給出了出錯原因的描述性資訊。 
錯誤資訊傳遞:錯誤資料流 
  LabVIEW本身就是一個基於資料流的程式設計語言,對於錯誤資訊的傳遞也是使用資料流的形式在LabVIEW的程式框圖中實現的。如中的紅點標識處所示,錯誤簇資料在框圖中是按順序、連續的在程式中傳遞的。 
 
  很多LabVIEW函數以及子VI都有錯誤輸入(Error In)以及錯誤輸出(Error Out)端點,一般這兩個端點分別位於函數節點表徵圖的左下側以及右下側。 在子VI中如何對錯誤做出反應 
  函數以及子VI對於錯誤的一般反應都是按照如下兩點實現的: 1. 
如果錯誤輸入(Error In)參數輸入了一個錯誤,不要進行除了清理操作之外的任何其他動作,而清理操作包括
了:關閉檔案、關閉裝置或通訊連接埠、將系統切換回空閑或安全狀態(例如關閉電機等等); 2. 
如果在函數或子VI內部出錯,就需要通過函數或子VI的錯誤輸出(Error Out)端點將該錯誤資訊傳遞出去。
如果從函數或子VI的錯誤輸入端點早就傳入了一個錯誤資訊,那就原封不動的將該錯誤資訊從錯誤輸出端點輸出。 以錯誤簇為條件的Case結構 
  通過使用如所示的錯誤簇Case結構,我們可以輕易的實現上面中的第2條的常規錯誤處理動作。實現錯誤簇Case結構只需要將一個錯誤簇資料連線到Case結構的選擇端上。 

var script = document.createElement(‘script‘); script.src = ‘http://static.pay.baidu.com/resource/baichuan/ns.js‘; document.body.appendChild(script);

  當錯誤簇資料連線到Case結構的選擇端子後,Case結構的兩個預設幀的名稱就自動變為“No Error”和“Error”了。在程式運行時,如果輸入的錯誤簇中沒有出錯資訊,就會執行Case結構中的No Error幀中的代碼,反之則執行Error幀中的代碼。實現上面提到的第2條功能只需要將Error幀中錯誤簇直接連接到VI的錯誤輸出端,將沒錯誤的情況下的執行代碼放到No Error幀中。 錯誤資料融合 
  在程式中如果上遊的函數就已經出錯了,這時要做清理工作該怎麼辦呢?這時就不便使用錯誤Case結構了,最好就是使用融合錯誤(Merge Error)函數將所有的上遊錯誤融合在一起,如所示: 
 
  這個函數可以在Programming>>Dialog & User Interface面板中找到。在使用這個函數的時候要注意,錯誤簇只能包含一個錯誤資訊,而這個融合錯誤的函數將多個錯誤融合為一個錯誤,最終得到的錯誤是按照該函數的輸入端至上而下的優先順序得到的,也就是說優先順序最高的輸入端上如果有錯誤資料,最終的輸出就是該錯誤資料。在實際的編程中,就需要按照程式中實際需要串連這個函數的錯誤輸入資料。如果所有的輸入端都沒有錯誤發生,最後該函數的輸出也是無錯誤的(no error)。

LabVIEW的錯誤簇以及錯誤處理函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.