一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

LabVIEW調(diào)用動態(tài)連接庫DLL文件的方法

 lgk88888 2018-09-07

LabVIEW是一種圖形化編程語言,具有簡單易學(xué)、形象直觀的特點。同時,LabVIEW為一種通用的、完善的高級編程語言,具有強大的外部接口能力,可以實現(xiàn)LabVIEWCBasic、Matlab等編程語言,甚至與外部應(yīng)用軟件(如Word、Excel等)之間的通信,達(dá)到代碼復(fù)用及提高開發(fā)效率的目的。通過動態(tài)連接庫DLL文件實現(xiàn)LabVIEW中與外部程序的接口技術(shù),是最常用的一種方式,通過這種技術(shù)可以編寫出功能更加強大的應(yīng)用軟件。

相對于其它編程語言,在LabVIEW中調(diào)用DLL文件是比較簡單的。下面通過一個例子說明在LabVIEW平臺中調(diào)用DLL文件的編程方法。

調(diào)用DLL例子

本例調(diào)用C語言編寫的DLL文件“MyDll.dll”里的函數(shù)“MyFunc”,其函數(shù)聲明原型如圖1所示: 

  1  MyFunc”函數(shù)的原型聲明

該函數(shù)實現(xiàn)的功能為,產(chǎn)生一個初始值為x0、間隔為deltx、長度為length的一維數(shù)組y,并給出該數(shù)組的最后一個值lastData和函數(shù)的運行狀態(tài)信息status。從函數(shù)的聲明中可以看出,該函數(shù)中數(shù)據(jù)類型涉及到了“double”類型、“int”類型和“char”類型(對應(yīng)LabVIEW的字符串型),在參數(shù)傳遞中也涉及到了值傳遞(x0、deltxlength)和指針(y、lastData、status)傳遞方式,較為復(fù)雜。為便于理解,圖2給出了該函數(shù)的C語言實現(xiàn)代碼。

 

  2  MyFunc”函數(shù)的實現(xiàn)代碼

該例調(diào)用DLL函數(shù)后程序運行前面板如圖3所示,在前面板上放置了3個輸入型控件和3個顯示型控件,分別對應(yīng)“MyFunc”函數(shù)的6個參數(shù)。當(dāng)改變參數(shù)x0、deltxlength的值時,程序?qū)崟r顯示出y、lastData、status的值。

 

3  調(diào)用DLL的參數(shù)傳遞測試的前面板

程序框圖如圖4所示,在參數(shù)x0deltxlength的值改變事件中調(diào)用DLL文件“MyDll.dll”里的“MyFunc”函數(shù)計算y、lastData、status的值。

 

  4  調(diào)用DLL的參數(shù)傳遞測試的程序框圖

該例能否正確運行,關(guān)鍵在于在調(diào)用庫函數(shù)的配置對話框中,對該函數(shù)的輸入輸出參數(shù)進(jìn)行正確配置。從該函數(shù)的原型聲明中可以看出,該函數(shù)的調(diào)用規(guī)范上,本例需設(shè)置為C”調(diào)用方式,如圖5所示。

 

 5  MyFunc”函數(shù)調(diào)用規(guī)范設(shè)置為“C”方式

在調(diào)用庫函數(shù)“參數(shù)”選項卡中,“MyFunc”函數(shù)本身返回值為“void”,所以,其返回類型設(shè)置為空即可。對其它6個參數(shù)設(shè)置如下:

x0:“類型”設(shè)為“數(shù)值”;“數(shù)據(jù)類型”設(shè)為“8字節(jié)雙精度”選項;“傳遞”設(shè)為“值”;

deltx:同x0設(shè)置;

length:“類型”設(shè)為“數(shù)值”;“數(shù)據(jù)類型”設(shè)為“有符號32位整型”選項;“傳遞”設(shè)為“值”;

y:該參數(shù)為指向“double”的指針類型,對應(yīng)LabVIEW的一維數(shù)組。所以,“類型”設(shè)為“數(shù)組”;“維數(shù)”設(shè)為1;“數(shù)據(jù)類型”設(shè)為“8字節(jié)雙精度”;“數(shù)組格式”設(shè)為“數(shù)組數(shù)據(jù)指針”;最小尺寸設(shè)為“<None>”;

lastData:該參數(shù)在C語言中聲明為“double &lastData”,為引用傳遞方式,對應(yīng)LabVIEW中指向“double”類型的指針方式。所以,“類型”設(shè)為“數(shù)值”;“數(shù)據(jù)類型”設(shè)為“8字節(jié)雙精度”;“傳遞”設(shè)為“指針”;

status:該參數(shù)在C語言中聲明為“Char* status”,即指向字符的指針,實際對應(yīng)LabVIEW的字符串方式。所以,“類型”設(shè)為“字符串”;“字符串格式”設(shè)為“C字符串指針”;最小尺寸設(shè)為“<None>”。

參數(shù)正確配置后,在圖4程序框圖中,需要說明的是,對于參數(shù)ystatus,由于在本質(zhì)上都是一維數(shù)組,且參數(shù)設(shè)置的最小尺寸本例都設(shè)為了“<None>”,所以需在程序框圖中顯式的預(yù)先分配一段不小于函數(shù)中需要的內(nèi)存大小的空間。另外,從“MyFunc”函數(shù)的C語言實現(xiàn)代碼中也可以看出,對于這兩個參數(shù),“MyFunc”函數(shù)中并沒有分配新的內(nèi)存空間,而是直接利用了外部傳入的參數(shù)地址來進(jìn)行對這兩個參數(shù)的讀或?qū)懖僮鳌1纠校?/font>y參數(shù)使用了“初始化數(shù)組”函數(shù)生成了一個初始值為0、長度為“length”的雙精度一維數(shù)組連接到該參數(shù)作為內(nèi)存的初始化,status參數(shù)使用了字符串常量連接到該參數(shù)作為內(nèi)存的初始化。當(dāng)然,對這兩個參數(shù),也可以在庫函數(shù)的配置對話框中直接指明其需要的大小,如對于y參數(shù),最小尺寸可以設(shè)為“length”的值,對于status參數(shù),最小尺寸可以設(shè)為具體的值,如512,這樣設(shè)置以后,在程序框圖中就可以不必對這兩個參數(shù)作代碼的初始化了。

結(jié)論

由上面的例子可以看出,LabVIEW中調(diào)用動態(tài)連接庫DLL文件中函數(shù)的編程并不復(fù)雜,關(guān)鍵是要知道被調(diào)用函數(shù)的名稱,并且保證輸入、輸出參數(shù)的順序及數(shù)據(jù)類型要配置正確即可。

備注

大家如果有興趣的話可以加關(guān)注并私信回復(fù):LabVIEW001,則可獲得該文章的DLL文件及LabVIEW原程序下載鏈接。歡迎加關(guān)注,共同交流。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    91精品国产品国语在线不卡| 高清亚洲精品中文字幕乱码| 尤物久久91欧美人禽亚洲| 国内九一激情白浆发布| 色婷婷在线精品国自产拍| 91久久精品国产一区蜜臀| 日韩精品视频高清在线观看| 国产一区二区三中文字幕 | 亚洲中文字幕视频在线播放| 日本人妻精品中文字幕不卡乱码 | 欧美日韩国产精品黄片| 欧美日韩国产精品第五页| 欧美日韩国产的另类视频| 99久久国产精品免费| 大尺度激情福利视频在线观看| 91国内视频一区二区三区| 日本三区不卡高清更新二区| 亚洲av日韩av高潮无打码| 精品一区二区三区人妻视频| 国产传媒欧美日韩成人精品| 欧美丝袜诱惑一区二区| 久久亚洲精品成人国产| 中国美女草逼一级黄片视频| 超碰在线免费公开中国黄片| 欧美日韩国产一级91| 伊人网免费在线观看高清版| 麻豆精品在线一区二区三区| 精品al亚洲麻豆一区| 91久久国产福利自产拍| 久热人妻中文字幕一区二区| 91欧美日韩中在线视频| 国产目拍亚洲精品区一区| 绝望的校花花间淫事2| 日韩一级一片内射视频4k| 五月激情五月天综合网| 精品女同在线一区二区| 精品少妇一区二区三区四区| 91国内视频一区二区三区| 国产精品伦一区二区三区四季 | 久久精品免费视看国产成人| 亚洲男人天堂网在线视频|