国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法

      文檔序號:8208969閱讀:1289來源:國知局
      一種基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法
      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及動態(tài)鏈接的調(diào)用方法。更具體地,涉及一種基于圖形化編程語言 LabVIEW的動態(tài)鏈接庫的調(diào)用方法。
      【背景技術(shù)】
      [0002] 動態(tài)鏈接庫是一種在運行時連接的可執(zhí)行代碼和數(shù)據(jù)模塊,是Microsoft Windows系統(tǒng)操作系統(tǒng)的重要組成部分,是一種特殊的且現(xiàn)在廣為應(yīng)用的函數(shù)庫。動態(tài)鏈接 庫DLL雖不是exe文件,但它屬于Windows可執(zhí)行文件。DLL由可執(zhí)行模塊組成,為進(jìn)程提 供數(shù)據(jù)、代碼和資源。與編譯時使用的靜態(tài)鏈接庫不同的是,動態(tài)鏈接庫獨立于激活它們的 可執(zhí)行文件,調(diào)用的地址轉(zhuǎn)換是在加載時解決的。與靜態(tài)連接庫相比,動態(tài)連接庫不管被多 少個程序設(shè)計,內(nèi)存中都只有一個DLL的副本,因此提高了內(nèi)存的使用率和程序運行速度, 而且各個DLL文件可以方便的獨立修改和測試,模塊化更強(qiáng)。
      [0003] 動態(tài)鏈接庫DLL是一種可執(zhí)行模塊,往往以單獨的文件形式存在,在Windows下的 后綴名一般為.dll。動態(tài)鏈接庫有兩種使用方法:一個是靜態(tài)調(diào)用,另外一種是動態(tài)調(diào)用。 DLL的靜態(tài)調(diào)用類似于靜態(tài)庫的用法,程序一啟動就把DLL中的代碼裝入內(nèi)存。DLL的動態(tài) 調(diào)用稍微麻煩一點,但是它更加靈活,可以更為有效地使用內(nèi)存。動態(tài)鏈接庫技術(shù)是一種在 程序需要的時候才將有關(guān)代碼裝入內(nèi)存的技術(shù)。實際當(dāng)中動態(tài)鏈接庫的可執(zhí)行代碼存在 于.dll文件中,而.dll文件是由編譯器直接生成的。一個函數(shù)被編譯運行后,其可執(zhí)行指 令便存在于內(nèi)存中了,而這段可執(zhí)行指令在內(nèi)存中的開始地址,是可以通過函數(shù)名得到的。 因此,只要把某個函數(shù)名所指單元開始的一段內(nèi)存內(nèi)容寫入文件,便得到了一個簡單的動 態(tài)鏈接庫文件。
      [0004] 動態(tài)鏈接庫代碼在運行時間加載的特性很重要。一個大型程序如果不使用動態(tài)鏈 接庫,那么當(dāng)這個程序的某一個功能需要升級或改進(jìn),必須寫一些源代碼,然后將整個程序 編譯,連接形成一個新的可執(zhí)行文件,最終給客戶重新安裝使用。這個過程需要花費很長時 間,哪怕只是給這個大型程序多寫一行代碼??墒?,如果采用大量動態(tài)鏈接庫構(gòu)建整個應(yīng)用 程序,那么只需要改寫需要升級的動態(tài)鏈接庫的源代碼,重新編譯連接后,發(fā)送給客戶,客 戶所做的僅僅是覆蓋原來的動態(tài)鏈接庫即可,不需要重新安裝整個應(yīng)用程序,因此使用動 態(tài)鏈接庫構(gòu)建整個應(yīng)用程序是模塊化設(shè)計程序的一個重要特點。
      [0005] 從編程的角度,DLL應(yīng)用程序需要知道DLL文件導(dǎo)出的API函數(shù)才能調(diào)用。所以 DLL文件本身并不可以運行,需要應(yīng)用程序調(diào)用。程序的發(fā)布上,DLL和靜態(tài)lib也是有差 別的。對于靜態(tài)1 ib,程序在編譯成可執(zhí)行文件時會把靜態(tài)鏈接庫中的程序拷進(jìn)可執(zhí)行文件 中,所以lib文件是不用同可執(zhí)行文件一同發(fā)布的。而鏈接到動態(tài)庫DLL中時要通過一個 lib文件,lib文件保存了函數(shù)或類在DLL中的入口地址,可執(zhí)行文件中相應(yīng)存放的也是函 數(shù)地址,所以DLL和lib要同可執(zhí)行文件一起發(fā)布。實際上只要遵循約定的DLL接口規(guī)范 和調(diào)用方式,用各種語言編寫的DLL都可以相互調(diào)用。Windows提供的系統(tǒng)DLL,其中包括 了 Windows的API,在任何開發(fā)環(huán)境中都能被調(diào)用。
      [0006] LabVIEW是美國國家儀器公司NI推出的32位的標(biāo)準(zhǔn)虛擬儀器開發(fā)平臺。它是一 套專門為數(shù)據(jù)采集與儀器控制、數(shù)據(jù)分析與數(shù)據(jù)表達(dá)而設(shè)計的圖形化編程環(huán)境,同時是基 于圖形化編程語言--G-language的全新編程方法。
      [0007] LabVIEW具有各種各樣、功能強(qiáng)大的函數(shù)庫,包括數(shù)據(jù)采集、GPIB、儀器控制、數(shù)據(jù) 分析、信號處理、數(shù)據(jù)顯示及數(shù)據(jù)存儲等功能。并且提供強(qiáng)大的數(shù)學(xué)分析庫,涵蓋統(tǒng)計、估 計、回歸分析、線形代數(shù)、信號生成算法、時域和頻域算法等眾多科學(xué)領(lǐng)域。因此LabVIEW在 包括航空、航天、通信、汽車和醫(yī)學(xué)等眾多領(lǐng)域得到了廣泛的應(yīng)用,己成為測試與測量領(lǐng)域 的工業(yè)標(biāo)準(zhǔn)。但LabVIEW也存在不足,如不擅長于完成大量數(shù)據(jù)處理的任務(wù);實現(xiàn)底層操作 能力不強(qiáng)等。在LabVIEW開發(fā)環(huán)境中若遇到這類問題。就可通過LabVIEW的高級應(yīng)用,將 其不擅長或不易實現(xiàn)的任務(wù)通過能夠或更適于完成此類任務(wù)的其它語言來實現(xiàn)。
      [0008] 因此,需要提供一種基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法。

      【發(fā)明內(nèi)容】

      [0009] 本發(fā)明的目的在于提供一種基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法。
      [0010] 為達(dá)到上述目的,本發(fā)明采用下述技術(shù)方案:
      [0011] 一種基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法,該方法包括如下步驟:
      [0012] S1、確定動態(tài)鏈接庫DLL文件的位置、函數(shù)原型,以及函數(shù)的參數(shù)及類型;
      [0013] S2、選取函數(shù)調(diào)用的方式;
      [0014] S3、利用LabVIEW中調(diào)用庫函數(shù)節(jié)點CLF提取DLL文件中的函數(shù);
      [0015] S4、基于LabVIEW的規(guī)范配置DLL文件中的函數(shù);
      [0016] S5、輸入被調(diào)用的函數(shù)名,得到基于LabVIEW配置完成的函數(shù)的形參類型和返回 值類型;
      [0017] S6、將CLF中的節(jié)點和與其數(shù)據(jù)類型節(jié)點相對應(yīng)的屬性結(jié)點連接,完成利用 LabVIEW的代碼設(shè)計。
      [0018] 優(yōu)選地,步驟S1中函數(shù)的參數(shù)及類型包括返回的數(shù)據(jù)的類型以及形參和實參的 數(shù)據(jù)類型。
      [0019] 優(yōu)選地,步驟S2中函數(shù)調(diào)用的方式為C語言中stdcall調(diào)用方式。
      [0020] 優(yōu)選地,步驟S3中CLF包括輸入端和輸出端,CLF具有函數(shù)的可擴(kuò)展功能,可顯示 已連線的輸入端和輸出端的數(shù)據(jù)類型。
      [0021] 優(yōu)選地,步驟S5中的返回值為DLL中函數(shù)的返回值。
      [0022] 本發(fā)明的有益效果如下:
      [0023] 本發(fā)明所述技術(shù)方案適用于LabVIEW中動態(tài)鏈接庫的調(diào)用方法,應(yīng)用了 LabVIEW 中"調(diào)用庫函數(shù)節(jié)點"實現(xiàn)了動態(tài)鏈接庫的調(diào)用基于LabVIEW的動態(tài)鏈接庫的應(yīng)用,一方面 通過LabVIEW中使用CLF--Call Library Function函數(shù)來調(diào)用其它語言產(chǎn)生的動態(tài)鏈 接庫函數(shù),從而完成LabVIEW無法勝任的工作。例如LabVIEW無法識別的采集卡的驅(qū)動。另 一方面由于LabVIEW在測試與測量領(lǐng)域的強(qiáng)大功能,因此可以利用LabVIEW生成各種相關(guān) 動態(tài)鏈接庫函數(shù),方便其它語言程序調(diào)用,從而彌補(bǔ)它們在測試、信號分析領(lǐng)域的函數(shù)和功 能模塊較少的不足,以及程序編制難度較大等缺點,提高了程序開發(fā)的效率,增加了應(yīng)用軟 件的功能。
      【附圖說明】
      [0024] 下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進(jìn)一步詳細(xì)的說明。
      [0025] 圖1示出調(diào)用庫函數(shù)節(jié)點CLF具體函數(shù)示意圖。
      [0026] 圖2示出LabVIEW調(diào)用動態(tài)鏈接庫的配置示意圖。
      [0027] 圖3示出PmacSelect函數(shù)動態(tài)鏈接庫的配置圖。
      [0028] 圖4示出LabVIEW使用的PmacSelect子函數(shù)具體內(nèi)容示意圖。
      [0029] 圖5示出OpenPmacDevice函數(shù)動態(tài)鏈接庫的配置圖。
      [0030] 圖6示出LabVIEW使用的OpenPmacDevice子函數(shù)具體內(nèi)容示意圖。
      [0031] 圖7示出PmacGetControlResponseA函數(shù)動態(tài)鏈接庫的配置圖。
      [0032] 圖8不出LabVIEW使用的PmacGetControlResponseA子函數(shù)具體內(nèi)容不意圖。
      [0033] 圖9示出基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法流程圖。
      【具體實施方式】
      [0034] 為了更清楚地說明本發(fā)明,下面結(jié)合優(yōu)選實施例和附圖對本發(fā)明做進(jìn)一步的說 明。附圖中相似的部件以相同的附圖標(biāo)記進(jìn)行表示。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,下面所具 體描述的內(nèi)容是說明性的而非限制性的,不應(yīng)以此限制本發(fā)明的保護(hù)范圍。
      [0035] 本實施方式提供的基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法,包括如下步驟:
      [0036] S1、確定動態(tài)鏈接庫DLL文件的位置、函數(shù)原型,以及函數(shù)的參數(shù)及類型,函數(shù)的 參數(shù)及類型包括返回的數(shù)據(jù)類型及形參和實參的數(shù)據(jù)類型;對應(yīng)了調(diào)用庫函數(shù)節(jié)點中路徑 輸入?yún)?shù),即需要確定調(diào)用的動態(tài)鏈接庫的路徑,在實際的調(diào)用過程中需要選擇所要調(diào)用 的庫函數(shù)在程序框圖中所指定的鏈接路徑,當(dāng)鏈接路徑選擇后就會在調(diào)用庫函數(shù)節(jié)點上顯 示該輸入端的連線;
      [0037] S2、選取函數(shù)調(diào)用的方式,調(diào)用函數(shù)的方式是采用C語言中stdcall調(diào)用方式,其 中LabVIEW和32位系統(tǒng)C語言Win32數(shù)據(jù)類型對照表如表1所示;
      [0038] 表 1
      【主權(quán)項】
      1. 一種基于UbVIEW的動態(tài)鏈接庫的調(diào)用方法,其特征在于,該方法包括如下步驟: 51、 確定動態(tài)鏈接庫化L文件的位置、函數(shù)原型,W及函數(shù)的參數(shù)及類型; 52、 選取函數(shù)調(diào)用的方式; 53、 利用UbVIEW中調(diào)用庫函數(shù)節(jié)點化F提取化L文件中的函數(shù); 54、 基于UbVIEW的規(guī)范配置化L文件中的函數(shù); 55、 輸入被調(diào)用的函數(shù)名,得到基于UbVIEW配置完成的函數(shù)的形參類型和返回值類 型; 56、 將CLF中的節(jié)點和與其數(shù)據(jù)類型節(jié)點相對應(yīng)的屬性結(jié)點連接,完成利用UbVIEW的 代碼設(shè)計。
      2. 根據(jù)權(quán)利要求1所述的基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法,其特征在于,所述步 驟S1中函數(shù)的參數(shù)及類型包括返回的數(shù)據(jù)的類型W及形參和實參的數(shù)據(jù)類型。
      3. 根據(jù)權(quán)利要求1所述的基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法,其特征在于,所述步 驟S2中函數(shù)調(diào)用的方式為C語言中stdcall調(diào)用方式。
      4. 根據(jù)權(quán)利要求1所述的基于UbVIEW的動態(tài)鏈接庫的調(diào)用方法,其特征在于,所述 步驟S3中CLF的具體函數(shù)的參數(shù)包括;路徑輸入?yún)?shù)、錯誤輸入?yún)?shù)、庫函數(shù)的范例輸入?yún)?數(shù)、路徑輸出參數(shù)、錯誤輸出參數(shù)、返回值和庫函數(shù)的范例輸出參數(shù)。
      5. 根據(jù)權(quán)利要求1所述的基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法,其特征在于,所述步 驟S3中CLF包括輸入端和輸出端,CLF具有函數(shù)的可擴(kuò)展功能,可顯示已連線的輸入端和 輸出端的數(shù)據(jù)類型。
      6. 根據(jù)權(quán)利要求1所述的基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法,其特征在于,所述步 驟S5中的返回值為化L中函數(shù)的返回值。
      【專利摘要】本發(fā)明公開一種基于LabVIEW的動態(tài)鏈接庫的調(diào)用方法,包括:確定動態(tài)鏈接庫DLL文件的位置、函數(shù)原型,以及函數(shù)的參數(shù)及類型;選取函數(shù)調(diào)用的方式;利用LabVIEW中調(diào)用庫函數(shù)節(jié)點CLF提取DLL文件中的函數(shù);基于LabVIEW的規(guī)范配置DLL文件中的函數(shù);輸入被調(diào)用的函數(shù)名,得到基于LabVIEW配置完成的函數(shù)的形參類型和返回值類型;將CLF中的節(jié)點和與其數(shù)據(jù)類型節(jié)點相對應(yīng)的屬性結(jié)點連接,完成利用LabVIEW的代碼設(shè)計。本發(fā)明所述技術(shù)方案通過LabVIEW中使用CLF來調(diào)用其它語言產(chǎn)生的動態(tài)鏈接庫函數(shù),從而完成LabVIEW無法勝任的工作,提高了程序開發(fā)的效率。
      【IPC分類】G06F9-46
      【公開號】CN104536812
      【申請?zhí)枴緾N201410838583
      【發(fā)明人】楊金濤, 馬永光
      【申請人】北京無線電計量測試研究所
      【公開日】2015年4月22日
      【申請日】2014年12月30日
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1