LabVIEW與C接口設(shè)計方法
Labview提供支持VXI總線、GPIB總線、RS?232串行總線接口硬件的驅(qū)動程序庫,但它對物理內(nèi)存的操作受到限制,且對硬件操作的實時性不好。但它提供了CIN(CODeInterfaceNode)節(jié)點。用戶可在LabVIEW中確定CIN節(jié)點的入口與出口參數(shù)個數(shù)類型,在C編譯環(huán)境下,生成.lsb文件,然后在LabVIEW中對CIN節(jié)點選擇Loadcinobjectcode,最后將該節(jié)點封裝成一個VI,由主程序調(diào)用。采用CIN節(jié)點,也可充分利用Win95支持多線程的功能,提高運行效率,利用主線程監(jiān)控各子線程,有效地避免因硬件通信錯誤而導致程序被掛起的現(xiàn)象,同時,可充分利用Win95有效的內(nèi)存管理技術(shù),提高數(shù)據(jù)處理及運算速度。
2.1VI設(shè)計
首先在塊流圖(BlockDiagram)上放置一個CINVI,然后通過CIN彈出菜單中的AddParameter增加接線端子(Terminal),通過接線端子來標識CIN的輸入和輸出。接線端子通常有輸入輸出接線端子(Input?OutputTerminal)和輸出接線端子(Output?OnlyTerminal),在缺省情況下,接線端子是輸入輸出接線端子,其左邊是輸入,而右邊是輸出。在生成的代碼中,與輸入輸出接線端子對應的是一個參數(shù),通過該參數(shù),數(shù)據(jù)輸入CIN,CIN可以使用該參數(shù)的值或修改參數(shù)的值能夠由該參數(shù)返回;如果輸入輸出接線端子的右邊沒有使用,即只有輸入,則CIN只能使用該參數(shù)的值而不能修改它。對于輸出接線端子,它只有輸出端,沒有輸入端。由LabVIEW在內(nèi)存中設(shè)置空間保存CIN的返回值。在定義了CIN接線端子后,將設(shè)定的數(shù)據(jù)控制器(Control,連接輸入)、數(shù)據(jù)指示器(Indicator,連接輸出)與對應的接線端子用線(Wire,代表數(shù)據(jù)流)連接起來,這樣將確定所生成代碼中的參數(shù)類型。
上面的過程只是定義了CIN的內(nèi)部接口,還必須定義VI的編程接口,即肖像/連接器,通過它才能在程序中調(diào)用設(shè)計好的VI。在肖像/連接器的設(shè)計中,盡量使所畫的肖像能夠表達出所設(shè)計的VI的功能,采用在肖像上標識該VI名稱的方法。連接器則是標明肖像的輸入輸出屬性,數(shù)據(jù)和信息通過連接器的端點在兩個VI間傳遞。這樣就設(shè)計好了一個VI,但要給它裝入目標代碼后才能執(zhí)行。
2.2生成.c文件
在設(shè)計好CINVI后,可用LabVIEW生成C語言格式的.c文件。下面是我們設(shè)計的StdCMD.VI所生成的StdCMD.c文件:
在所生成的文件中,自動包含了文件extcode.h,它是定義能夠被CIN使用的基本數(shù)據(jù)類型和外部子程序的頭文件。如果設(shè)計的CIN代碼含有系統(tǒng)調(diào)用,還必須包含文件hosttype.h。當CIN代碼執(zhí)行時,LabVIEW調(diào)用CINRun函數(shù),通過CINRun函數(shù)的參數(shù)傳遞VI的輸入輸出值。LabVIEW定義的程序返回值是MgErr數(shù)據(jù)類型,在執(zhí)行完CIN代碼后,LabVIEW能夠檢查返回值并確定代碼執(zhí)行是否有錯誤。
2.3用戶代碼設(shè)計
在CINRun函數(shù)體內(nèi)編寫用戶代碼是實現(xiàn)所設(shè)計的CINVI功能的關(guān)鍵。在我們所設(shè)計的5個VI中,這部分代碼的編寫主要是利用設(shè)計好的驅(qū)動程序完成多機測控系統(tǒng)的控制任務,將驅(qū)動程序的接口函數(shù)封裝在VI內(nèi),在用LabVIEW編制測試軟件時,通過調(diào)用VI來實現(xiàn)對多機測控系統(tǒng)的控制操作。
2.4編譯代碼生成.lsb文件
在Windows95/98下,利用VisualC+5.0IDE編譯設(shè)計代碼,具體操作過程如下:
(1)創(chuàng)建一個新的DLL項目。在VisualC++5.0IDE環(huán)境中選擇菜單命令File
New…..在彈出的對話框中New:域中選擇ProjectWorkspace項,按OK鍵。在接著彈出的對話框中Type:域中選擇Dynamic?LinkLibrary項,在Name:域中輸入StdCMD(該項目的名稱),在Platforms:域中選擇Win32(表示將要生成的DLL是32位的),在Location:域中輸入(或按Browser…鍵,選擇)源代碼文件所在的路徑(注:編譯過程中生成的中間文件和可執(zhí)行代碼也會產(chǎn)生在這個路徑下),按Create…鍵完成DLL項目的創(chuàng)建。
評論