labview中dll的調(diào)用(包括生成dll)
點(diǎn)擊Destination>> Scale.dll,點(diǎn)擊,可選擇需要保存的路徑。然后再點(diǎn)擊Support Directory,這是指明了DLL支持文件的路徑(比如數(shù)據(jù)文件之類的放在哪個文件夾),選擇默認(rèn)即可:
圖13 Destination頁面
Category中的Source Files可供用戶對打包VI的屬性和密碼做一些設(shè)置;Advanced和Additional Exclusions可以做一些高級的設(shè)置,這些均按默認(rèn)值即可。Version Information可讓用戶填寫版本號、名稱、版權(quán)、公司等信息:
圖14 Version Information
點(diǎn)擊Run-Time Languages,可對支持語言進(jìn)行選擇,默認(rèn)即可。點(diǎn)擊Preview>>Generate Preview,可以預(yù)覽到結(jié)果:
圖15 預(yù)覽生成
點(diǎn)擊Build,彈出生成狀態(tài)對話框:
圖16 生成狀態(tài)框
點(diǎn)擊Done,生成完成,打開DLL文件保存的路徑查看:
圖17 DLL文件保存路徑
LabVIEW調(diào)用DLL文件
LabVIEW可以方便地調(diào)用DLL文件,這些DLL文件可以是其他編譯工具,如VC,生成的。
LabVIEW可以直接通過CLN節(jié)點(diǎn)來調(diào)用DLL文件,以前面生成的Scale.dll文件為例?,F(xiàn)有一個內(nèi)部定時連續(xù)采集程序,通過調(diào)用該DLL文件,使讀取的值為實(shí)際采集值的10倍(圖18)。
圖18 連續(xù)采集程序
方法一
在程序框圖放入Call Library Function Node,雙擊彈出對話框。在Function頁面的Library name or path中給入生成的Scale.dll文件的路徑,F(xiàn)unction name選擇Scale,其他選項(xiàng)默認(rèn)。
圖19 Function頁面
由于是LabVIEW生成的DLL文件,在Parameters頁面不需要做改動,但是由于VI還有一路輸出,所以還需要添加一個參數(shù)y,作為DLL文件的輸出。
如果是C語言等非LabVIEW生成的DLL函數(shù),需要將retuen type的type選項(xiàng)和Data type選項(xiàng)改成函數(shù)定義的參數(shù)類型,對于函數(shù)里輸入的參數(shù)也都需要自行添加。Callbacks和Error Checking則不需要改動。
圖20 Parameters頁面
點(diǎn)擊“OK”,將生成的CLN的輸入段連接到DAQmx Read.vi,return type輸出連接到波形圖表上,即可實(shí)現(xiàn)采集值放大10倍的功能。
圖21 完成后的程序
方法二
LabVIEW中還有一種方法可以調(diào)用DLL文件,在VI的選項(xiàng)欄,依次選擇Tools——Import——Shared Library(.dll),彈出Import Shared Library對話框。
圖22 生成Import Shared Library對話框
選擇Create VIs for a shared library,點(diǎn)擊Next,在Shared Library(.dll) Files中輸入Scale.dll文件的路徑,Head(.h) File里填寫頭文件的路徑。
圖23 選擇DLL文件路徑和頭文件路徑
點(diǎn)擊Next,如果DLL文件中依賴其他的一些DLL文件,需要在Include Paths中填寫這些文件的路徑。其他選項(xiàng)可以根據(jù)客戶需求設(shè)置,一般默認(rèn)即可。這樣一直點(diǎn)擊Next到最后,選擇Open the generated library,點(diǎn)擊Finish。這樣可以生成一個.lvlib格式的庫文件,里面包含了Scale.vi,這是將調(diào)用該DLL文件的方法封裝好的VI,只留下輸入和輸出接口,方便運(yùn)用到LabVIEW的程序中。直接將Scale.vi拖放到剛才的連續(xù)采集中即可完成方法一的功能。
圖24 完成的程序
VC調(diào)用LabVIEW生成的DLL文件
剛才介紹了LabVIEW調(diào)用DLL文件的方法,使用VC調(diào)用LabVIEW生成的DLL文件也很簡單。還是以之前生成Scale 的DLL文件為例,不同的是采集電壓程序使用的是C語言的例程,但和LavVIEW實(shí)現(xiàn)的功能相同。
首先將先前生成Scale DLL文件時,路徑下所有的文件全部復(fù)制粘帖到C語言例程的文件夾下。打開連續(xù)采集程序,點(diǎn)擊狀態(tài)欄的Project——Settings,在Project Settings對話框中加載入Scale.lib的靜態(tài)鏈接庫。
在程序中鍵入#include "Scale.h",以便引入該DLL函數(shù)。下面是C程序的代碼,功能是有限點(diǎn)采集電壓,通過Scale.dll文件實(shí)現(xiàn)采樣值放大10倍的功能。加粗部分是因?yàn)檎{(diào)用DLL文件所做的改動。
#include
#include "NIDAQmx.h"
#include "Scale.h"
#define DAQmxErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error; else
int main(void)
{
int32 error=0;
TaskHandle taskHandle=0;
int32 read;
float64 data[1000];
char errBuff[2048]={