前言:
為了在LabVIEW中能夠調用其他語言編寫的程序,其提供了強大的外部程序接口能力,這些接口包括DLL、C語言接口(CIN)、 ActiveX、NET. DDE、MATLAB等。通過DLL,用戶能夠方便地調用C、VC、VB等編程語言編寫的程序。因此,本章通過示例來學習如何調用外部dll。動態鏈接庫(Dynamic Link Library,DLL)是一個可以多方共享的程序模塊,內部對共享的例程和資源進行了封裝。動態鏈接庫文件的擴展名一般是.dll,DLL 和可執行文件(EXE)非常類似,最大的區別在於DLL雖然包含了可執行代碼卻不能單獨執行, 必須由Windows應用程序直接或間接調用。
一、示例1
本節我們通過調用外部鏈接庫的方式,來實現:輸入一個 Double 型數組數組及其長度,輸出一個整型數組。該整型數組中每個元素對應輸入數組中每個元素求平方后的基數。
1.1 生成DLL文件
首先我們在VS2015中新建一個項目,寫入算法代碼並生成目標DLL文件,生成DLL文件有兩種方法:
(1)方法一:
新建一個win32項目:
在應用程序向導中將應用程序類型選擇為DLL:
在源文件中的ArrayFloor1d中編寫代碼:
在項目中添加一個新項:
選擇添加一個模塊定義文件:
在模塊定義文件寫入:
選擇重新生成解決方案,就可以在項目文件中得到DLL文件:
(2)方法二:
新建一個win32項目:
在應用程序向導中將應用程序類型選擇為DLL:
在ArrayFloor1d中直接寫入如下代碼,無需在新建模塊定義文件:
重新生成解決方案,即可在項目文件中找到DLL文件:
1.2 編寫LabVIEW程序
在前面板上編寫程序:
通過外部編譯器(例如Visual C++)將代碼編譯為動態鏈接庫DLL文件后,在調用庫函數對話框中指定該動態鏈接庫的地址,選擇函數名:
線程設置可以任意,調用規范必須設置為C。
在參數頁中設置函數返回值類型為Void,添加input參數為 —維雙精度浮點型數組,數組格式為數組數據指針。添加input length為整型傳值參數, 添加output參數為一維32位整型數組,如下所示:
配置好參數后,就需要要添加輸入輸出,由於Output用於得到函數汁算結果,因此輸入時只需要輸入一個常數初始化數組即可。
運行程序,可以在前面板看到:
二、學以致用
本節我們通過仿真信號函數來產生一個帶白噪聲的正弦信號,然后調用C語言寫的一階簡單低通濾波算法來處理該信號。首先仿真信號函數在函數面板中的位置為:
我們在VS2015中新建一個項目,編寫一階簡單低通濾波算法的代碼:
然后生成目標DLL文件:
然后在labVIEW中新建一個空白 VI,編寫如下代碼:
然后在調用庫函數對話框進行參數的配置:
這里需要格外注意:我在C語言的程序中對形參使用了double,int,float等類型的數據類型:
它們在labVIEW中有對應的數據類型:
這個數據類型一定要配置正確,否則程序就會出錯。
配置完成以后,我們就可以運行程序,在前面板觀察: