在LabVIEW下使用ZLGCAN接口函數(shù)庫
圖2.6在前面板上創(chuàng)建VCI_CAN_OBJ結(jié)構(gòu)的簇
此時,簇殼內(nèi)的成員的數(shù)據(jù)類型都為默認的Double類型。在簇殼內(nèi)的邊框上彈出快捷菜單,選擇Representation。在下一級子菜單中選擇與VCI_CAN_OBJ結(jié)構(gòu)成員類型一致的類型。
圖2.7設(shè)置成員類型
2.2調(diào)用VCI庫函數(shù)
在LabVIEW中調(diào)用VCI庫函數(shù)的過程比較簡單。LabVIEW在Advanced函數(shù)子模板中提供了CallingLibraryFunctionNode,只要知道動態(tài)連接庫里被導出的函數(shù)名稱及其參數(shù),就可以通過CallingLibraryFunctionNode調(diào)用。ZLGVCI函數(shù)庫已經(jīng)提供了庫里的函數(shù)聲明,因此,在LabVIEW中使用VCI函數(shù)庫將通過CallingLibraryFunctionNode來實現(xiàn)。
以調(diào)用VCI_OpenDevice函數(shù)為例。在LabVIEW圖形代碼窗口中放上調(diào)用庫函數(shù)節(jié)點,用鼠標雙擊節(jié)點或使用快捷菜單命令Configure彈出如圖2.8所示的對話框。
圖2.8調(diào)用庫函數(shù)1
單擊Browse…按鈕,打開一個文件對話框,找到ControlCAN.dll文件?;蛘咧苯虞斎霂煳募窂胶兔Q。
在FunctionName下拉列表框中照到VCI_OpenDevice函數(shù)?;蛑苯虞斎牒瘮?shù)名。
圖2.9調(diào)用庫函數(shù)2
在CallingConventions下拉列表框中選中stdcall(WINAPI),因為VCI庫函數(shù)使用的是stdcall調(diào)用約定。
Parameter框中的returntype不變。Type框中選Numeric。DataType框中選Unsigned32-bitInterger。即指定返回32位整形數(shù)。
單擊AddaParameterAfter按鈕,Parameter框中的選項變?yōu)閳D2.10所示。將缺省值agr1改為DevType,因為在VCI_OpenDevice函數(shù)聲明中定義了參數(shù)DevType。
圖2.10調(diào)用庫函數(shù)3
Type框中選Numeric,并在DataType框中選Unsigned32-bitInteger。表示將編程時指定的LabVIEW數(shù)據(jù)類型為32位無符號整型。Pass框中選擇Value。
同樣,按以上步驟添加DevIndex、Reserved參數(shù)。
單擊OK按鈕退出這個對話框。調(diào)用庫函數(shù)節(jié)點變?yōu)閳D2.11所示中的情況。圖中的參數(shù)端口由上到下分別為returntype、DevType、DevIndex和Reserved。每個端口均有一個輸入端和一個輸出端,左邊的端口為輸入端,右邊的端口位輸出端。因為第一個端口是函數(shù)的返回值,所以沒有輸入端,在圖中可以看到其輸入端為填充的藍色。其他端口則是函數(shù)的參數(shù),如果參數(shù)的類型是指針的話,可以通過參數(shù)的輸出端輸出數(shù)據(jù)。在其他情況下,不需要使用參數(shù)的輸出端。
圖2.11調(diào)用庫函數(shù)程序框圖
2.3應(yīng)用示例
應(yīng)用示例Demo演示了在LabVIEW7.0下如何使用VCI庫函數(shù)。其界面如圖2.12所示。
圖2.12demo界面
在Demo中實現(xiàn)了數(shù)據(jù)的收發(fā),并將在CAN總線上收發(fā)的數(shù)據(jù)在列表示圖中顯示。Demo程序當中有3個主要的While循環(huán):主循環(huán)、發(fā)送數(shù)據(jù)循環(huán)和接收數(shù)據(jù)循環(huán)。這三個循環(huán)是并行運行的。其中,主循環(huán)處理與用戶交互的界面,并通過用戶事件TREvent與發(fā)送數(shù)據(jù)循環(huán)和接收數(shù)據(jù)循環(huán)通信。
評論