labview庫函數調用節點(Call Library Node)

來源:互聯網
上載者:User
 以傳遞整型參數為例:在參數配置面板,我們可以選擇值傳遞(Pass Value)或選擇指標傳遞(Pass Pointer to Value)。
    當選擇了值傳遞時,庫函數調用節點是不會改變該參數的內容的。如果我們在該庫函數調用節點參數的左側接線端引入輸入資料,在輸出端引出輸出參數,那麼輸出資料其實是直接由輸入資料引出的,LabVIEW不會在這個節點處開闢緩衝。
    在指標傳遞方式時,LabVIEW則認為傳入的資料會被改變。如果輸入資料同時還要發往其它節點,LabVIEW會在此處開闢緩衝,為輸入資料作一個副本。選用指標傳遞方式,庫函數調用節點的每一對接線端也同樣是緩衝重用的。就是說,庫函數調用節點的輸出值是直接存放在輸入值的緩衝空間的。
如果一個參數只用作輸出,我們通常會在庫函數調用節點的輸入接線端為它建立一個輸入常數,這個常數的地址空間並不能直接被利用,它只是為庫函數調用節點開闢的緩衝而設定的初始值。不接輸入常數,LabVIEW也會為此參數開闢一塊緩衝。但是,這樣每次傳入的參數值都會有變化。例5,庫函數調用節點調用的函數功能是為把輸入的值加1,然後輸出。圖5-a中的輸出值永遠都是1,而圖5-b,每次運行輸出結果都會比前次增加1。這是因為庫函數調用節點每個指標傳遞的參數的輸入輸出用的是同一塊緩衝,即每次運行輸入值是上回的輸出值。

圖5: 庫函數調用節點


    我們可以利用圖5-c的例子證明LabVIEW某些節點是緩衝重用的。每次運行5-c的例子,輸出結果都會比前次增加2。這是因為樣本中的參數接線端以及“+1”節點的輸入輸出端所使用的都是同一緩衝。    如果,庫函數調用節點中某個參數只有輸入鏈進去,沒有輸出。那麼,LabVIEW 是假設你調用的函數不會修改這個參數的。LabVIEW 不會為這個資料做拷貝,它會重用這個資料的緩衝。但如果你調用的函數修改的這個資料,你的程式就會面臨這樣一個潛在的危險:這個資料可能被程式其它部分的代碼使用了,在那裡,你看不出這個資料有任何被改動的地方,但它在運行時卻不是你期望的數值。因為這個資料所在的緩衝,被程式其它一個地方的一個庫函數調用節點給重用了,而這個節點又偷偷摸摸的修改了它。
    在圖5中的樣本中,如果庫函數調用節點輸出的參數是個數組或者字串,那麼就必須為它相對應的輸入端聯入一個與輸出資料大小一致的數組或字串。否則,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.