基于LabVIEW與USB的虛擬儀器接口設計

1.2 軟件設計方案
為了能夠在LabVIEW中充分利用其他編程語(yǔ)言的優(yōu)勢,LabVIEW提供了強大的外部程序接口能力。這些接口包括DLL,C語(yǔ)言接口(CIN),ActiveX,.NET,DDE,Matlab等。通過(guò)DLL,可以方便地調用c,VC,VB等編程語(yǔ)言編寫(xiě)的程序以及Windows自帶的大量API函數。動(dòng)態(tài)鏈接庫(Dynamic LinkLibrary,DLL)是一個(gè)可以多方共享的程序模塊,內部對共享的例程和資源進(jìn)行了封裝。動(dòng)態(tài)鏈接庫文件的擴展名一般是.dll,DLL和可執行文件(exe)非常相似,最大的區別在于DLL雖然包含了可執行代碼卻不能單獨執行,必須由Windows應用程序直接或間接調用。
因此,開(kāi)發(fā)上層應用軟件的首要工作是DLL動(dòng)態(tài)鏈接庫的開(kāi)發(fā),在這里DLL動(dòng)態(tài)鏈接庫采用VC++6.0進(jìn)行開(kāi)發(fā)。LabVIEW調用DLL示意圖如圖4所示,由于DLL能夠調用API函數與USB設備進(jìn)行通信,而采用NI公司的虛擬儀器軟件開(kāi)發(fā)平臺LabVIEW可以充分發(fā)揮虛擬儀器的靈活性。因此,將兩者優(yōu)勢結合起來(lái),該設計的虛擬示波器用戶(hù)控制面板具有界面友好,操作直觀(guān)等優(yōu)點(diǎn),通過(guò)面板上的各種控件便可實(shí)現數據的采集、存儲、再現及分析等功能。
2 軟件設計
軟件設計是虛擬儀器開(kāi)發(fā)的必備環(huán)節?;贚abVIEW與USB的虛擬儀器的軟件設計分為4部分:主機操作系統上的客戶(hù)驅動(dòng)程序、主機應用程序、Ez-USB FX2的固件程序以及FPGA軟件。
2.1 驅動(dòng)程序
主機軟件部分包括USB客戶(hù)驅動(dòng)程序和主機應用程序。USB客戶(hù)驅程序是支持即插即用功能的標準WDM驅動(dòng)程序,它為實(shí)現控制傳輸、中斷傳輸和批傳輸提供了標準接口函數。一般情況下Cypress公司所提供的客戶(hù)驅動(dòng)程序已經(jīng)能夠滿(mǎn)足需求,如果有特別的需求,可以在其基礎上開(kāi)發(fā)自己的驅動(dòng)程序。
2.2 應用程序LabVIEW調用DLL
主機應用程序是系統與用戶(hù)的接口,需要一個(gè)圖形用戶(hù)界面來(lái)控制所調用的函數,這里采用LabVIEW來(lái)編寫(xiě)應用程序。它通過(guò)調用DLL與驅動(dòng)程序進(jìn)行通信,以完成對外設的數據傳輸。在編寫(xiě)用戶(hù)程序時(shí),首先要建立與外設的連接,然后才能實(shí)施數據的傳輸。在DLL程序中主要用到2個(gè)API函數:一是利用Create-File得到USB句柄;二是利用DeviceIoControl來(lái)向設備驅動(dòng)程序發(fā)送請求,完成在EZ-USB FX2中數據批傳輸的讀取與寫(xiě)入。
采用LabVIEw來(lái)設計這里的應用程序,關(guān)鍵是通過(guò)Call Library Function節點(diǎn)來(lái)調用前面所編寫(xiě)DLL文件中的各個(gè)函數。該節點(diǎn)位于Functions Palette的Connectivity |Libraries Executables | Call LibraryFunction Node,如圖5所示。
通過(guò)CLF節點(diǎn)來(lái)調用前面所編寫(xiě)的DLL步驟如下:
(1)單擊該節點(diǎn)將其放置在程序框圖中,此時(shí)該節點(diǎn)沒(méi)有與任何DLL連接;
(2)右擊該節點(diǎn)并選擇Configure選項或者直接雙擊該節點(diǎn)可以打開(kāi)庫函數配置對話(huà)框;
(3)在該模塊的屬性設置中選擇DLL文件中所包含的某個(gè)函數,然后再設置好函數的返回類(lèi)型和參數類(lèi)型。這樣就可以使LabVIEW調用DLL文件中的一個(gè)函數(針對DLL中的每個(gè)函數都需要設置一個(gè)CallLibrary Function Node)。最后把該模塊的另一端連接到顯示模塊,就可以顯示從USB接口讀進(jìn)的數據。
評論