新聞中心

EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > labview中dll的調(diào)用(包括生成dll)

labview中dll的調(diào)用(包括生成dll)

作者: 時間:2017-01-09 來源:網(wǎng)絡(luò) 收藏

  點(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]={