如何用Labview調用C語言_第1頁
如何用Labview調用C語言_第2頁
如何用Labview調用C語言_第3頁
如何用Labview調用C語言_第4頁
如何用Labview調用C語言_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精品Labview調用C語言的方法CIN(CodeInterfaceNode)節(jié)點是LabVIEW中用來調用C/C+代碼的功能節(jié)點。它與動態(tài)鏈接庫的不同之處在于,它能夠將代碼集成在VI中作為單獨的一個VI發(fā)布,而不需要多余的文件。另外,它提供了函數(shù)入口,它可以根據用戶提供的輸入輸出自動生成函數(shù)入口代碼,從而使用戶專心關注代碼功能而不用為函數(shù)聲明、定義等語句費心。因此CIN節(jié)點與DLL在不同的場合有不同的優(yōu)勢,但是CIN節(jié)點的使用比調用DLL要復雜得多。由于LabVIEW中數(shù)據的存儲格式遵循了C語言中數(shù)據的存儲格式,并且二者完全相同,所以用戶可以向CIN傳遞任意復合的數(shù)據結構。另外,CIN比圖形

2、化語言可獲得更高的執(zhí)行效率。注意:對于完全相同的代碼,CIN和DLL的執(zhí)行效率是完全一樣的。如果要使用CIN節(jié)點,你必須安裝了C編譯器。在Windows下,CIN支持以下編譯器:MicrosoftVisualC+SymantecCCIN節(jié)點必須調用.lsb文件。.lsb文件是通過外部編譯器與CINTools工具結合將C代碼編譯生成的。下面我們通過一個StepbyStep的實例來看如何在LabVIEW中實現(xiàn)CIN節(jié)點調用,本例所用外部編譯器為MicrosoftVisualC+6.0。第一步:在程序框圖放置一個空CIN節(jié)點;CIN節(jié)點位于FunctionsPalette的Connectivity-

3、>Libraries&Executables->CodeInterfaceNode。第二步:創(chuàng)建CIN節(jié)點的輸入輸出端口;初始情況下,CIN只有一對端口:一個輸入端口和一個輸出端口。向下拉大節(jié)點邊框或右擊節(jié)點端口選擇AddParameter,可以為節(jié)點增加輸入輸出端口。CIN節(jié)點的端口都是成對出現(xiàn)的,因為CIN節(jié)點端口傳遞的是指針,所以該參數(shù)既可以作為輸入又可以作為輸出。如果不需要輸入,則可以右擊該輸入端口選擇OutputOnly,這時候該對端口的左側端口變?yōu)榛疑砻鬟@對端口僅用作輸出。本例實現(xiàn)的功能為c=a+b,因此需要兩個輸入端口:a,b;一個輸出端口c。設置好端口后

4、,在前面板窗口創(chuàng)建兩個NumericControl(分別命名為a和b)和一個NumericIndicator(命名為c)。分別將a,b與輸入端口連接,c與輸出端口連接,如圖3所示??梢钥吹?,端口會自動根據輸入參量的類型與之匹配。圖2設置CIN節(jié)點端口圖3CIN節(jié)點端口與控件連接雖然控件與端口已經連接,但是此時的CIN節(jié)點并不具備任何功能,因為它還沒有裝載.lsb文件。因此此時VI是不可運行的,即Run按鈕處于Broken狀態(tài)c下面的任務就是創(chuàng)建.c源文件,并編譯為.lsb文件,最后加載到節(jié)點上。第三步:創(chuàng)建.c源文件右擊CIN節(jié)點選擇Create.cFile,在彈出的對話框中保存文件,這里文件

5、名命名為CINExample_add.c。打開該文件可以看到LabVIEW已經自動添加了一些代碼用于包含庫以及函數(shù)聲明等,內容如下:include"extcode.h"MgErrCINRun(float64*a,float64*b,float64*c);MgErrCINRun(float64*a,float64*b,float64*c)returnnoErr;用戶可以在“”處添加函數(shù)所需的C代碼。頭文件“extcode.h”是LabVIEW自帶的一個頭文件,位于.LabVIEW8.2cintools目錄下。它定義了CIN和外部程序所用到的基本數(shù)據類型和許多函數(shù)等。其中定義的

6、某些常量和數(shù)據類型可能會與系統(tǒng)頭文件相沖突,因此在使用系統(tǒng)頭文件并進行系統(tǒng)調用時,需要將cintools目錄下的hosttype.h文件也包含進來。include“hosttype.h”必須緊跟著include“extcode.h”語句,然后才能用include語句包含系統(tǒng)頭文件。當CIN節(jié)點執(zhí)行時,LabVIEW將調用CINRun函數(shù)。CINRun函數(shù)將CIN節(jié)點的輸入輸出作為參數(shù)看待。此外,還可以添加一些其它的后臺例行程序(Routines):CINLoad,CINSave,CINUnload,CINAbort,CINInit,CINDispose和CINProperties。它們分別在不

7、同的時刻執(zhí)行。例如CINLoad在第一次載入VI時執(zhí)行。缺省情況下是不執(zhí)行任何內容的,如果你需要在VI載入時執(zhí)行某段程序,則可以把該段程序添加在CINLoad例程中。編寫CINLoad例程的代碼如下:CINMgErrCINLoad(RsrcFilereserved)Unused(reserved);returnnoErr;通常情況下,我們只需要編寫CINRun函數(shù)。本例中,只需要將.c源文件中的CINRun函數(shù)改寫如下:MgErrCINRun(float64*a,float64*b,float64*c)*c=*a+*b;returnnoErr;改寫后保存該文件就完成了.c源文件的編寫,下面我們

8、通過VisualC+6.0集成開發(fā)環(huán)境來編譯該源文件。第四步:編譯.c源文件為.lsb文件1. 打開VC+6.0,在主窗口菜單中選擇File->New.,在彈出的對話框選擇Win32Dynamic-LinkLibrary,設置ProjectName為CINExample_add,并在Location欄設置該Project所在路徑,如圖4所示。點擊OK按鈕后,在接下來的對話框中選擇Finish按鈕,在接著彈出的信息提示對話框中點擊OK,就成功創(chuàng)建了一個空的DLLProject圖4VC中創(chuàng)建新DLLProject對話框2. 將前面創(chuàng)建的CINExample_add.c源文件與LabVIEW8

9、.2cintools目錄下的cin.obj,labview.lib,lvsb.lib,lvsbmain.def添加到Project中。添加方法是在VC+主菜單中選擇Project->AddToProject->Files。3. 選擇Project->Settings,在彈出對話框的Settingsfor欄中選擇AllConfigurations,然后選擇C/C+tab頁,選擇Category欄為Preprocessor,將LabVIEW8.2cintools目錄添加到Additionalincludedirectories中,如圖5所示。圖5將cintools目錄添加到搜索目

10、錄中4. 仍然在上面的對話框中選擇Category為CodeGeneration,設置Structmemberalignment為1byte。設置Userun-timelibrary為MultithreadedDLL。5. 選擇CustomBuildtab頁,在Commands欄中輸入:"cintools所在目錄lvsbutil"$(TargetName)-d"$(WkspDir)$(OutDir)”,在Outputs欄中輸入:”$(OutDir)$(TargetName).lsb:如圖6所示。這一步就是利用LabVIEW的CINTools工具包中的lvsbuti

11、l工具將VC+生成的DLL文件轉換為CIN節(jié)點能夠使用的.lsb文件。圖6設置CustomBuild為Ivsbutil6. 點擊OK按鈕完成配置后,點擊VC+工具欄中的Build按鈕,編譯工程。編譯過程中,VC+首先創(chuàng)建一個DLL文件,然后調用Ivsbutil工具將這個DLL文件轉換為.lsb文件。編譯完成后,打開工程目錄下的Debug文件夾,我們可以看到新生成的.lsb文件:CINExample_add.lsb。下面就可以將該文件加載到CIN節(jié)點中了。第五步:加載.lsb文件到CIN節(jié)點回到LabVIEW程序中,右擊第二步中創(chuàng)建的CIN節(jié)點,選擇LoadCodeResource,在彈出的文件選擇對話框中雙擊選擇剛才創(chuàng)建好的CINExample_add.lsb文件,這就完成了.lsb文件的加載過程。這時候VI窗口工具欄中的Run按鈕也變?yōu)榭蓤?zhí)行狀態(tài)。運行VI可以得到預期結果,如圖7所示。abc94=6圖7利用CIN節(jié)點進行加法運算到此為止,我們就完成了一個CIN節(jié)點的創(chuàng)建過程。其實LabVIEW提供了大量的外部函數(shù)供CIN節(jié)點調用,這些函數(shù)涵蓋了從底層字節(jié)操作到數(shù)據排序、內存管理等各個方面。這些函數(shù)都在一個稱為Managers的庫中管理。在C代碼中通過調

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論