在LabVIEW下使用ZLGCAN接口函數(shù)庫(kù)
在主循環(huán)中使用事件驅(qū)動(dòng)機(jī)制處理用戶在前面板的操作。打開(kāi)設(shè)備的程序框圖如圖2.13所示。在圖中調(diào)用VCI_OpenDevice函數(shù)打開(kāi)設(shè)備,如果打開(kāi)成功,則調(diào)用VCI_InitCAN函數(shù)初始化設(shè)備,成功的話就處理一下前面板控件的狀態(tài)。
圖2.13打開(kāi)設(shè)備框圖
圖2.14所示是接收數(shù)據(jù)的程序框圖。接收數(shù)據(jù)的過(guò)程是在一個(gè)while循環(huán)中,這個(gè)循環(huán)在程序已開(kāi)始時(shí)就一直運(yùn)行,直到前面板上的stop按鈕被按下并在其ValueChange事件中使stop2的值變?yōu)镕alse時(shí)才停止。在循環(huán)當(dāng)中,只有設(shè)備已經(jīng)啟動(dòng)時(shí)才會(huì)進(jìn)行讀操作。在Demo中VCI_Reveive函數(shù)一次只讀取一幀,輸出的數(shù)據(jù)保存到VCI_CAN_OBJ_R結(jié)構(gòu)中,如果VCI_Reveive函數(shù)執(zhí)行成功的話,就把接收到的數(shù)據(jù)通過(guò)事件傳遞給主循環(huán)處理。
圖2.14接收數(shù)據(jù)
發(fā)送數(shù)據(jù)的過(guò)程與接收數(shù)據(jù)的過(guò)程相似。當(dāng)前面板上的Transmit按鈕被按下時(shí),才會(huì)把VCI_CAN_OBJ_T結(jié)構(gòu)中的數(shù)據(jù)通過(guò)VCI_Transmit函數(shù)發(fā)送到CAN總線上。發(fā)送成功后,生成一個(gè)TREvent事件,并通過(guò)這個(gè)事件把VCI_CAN_OBJ_T結(jié)構(gòu)的內(nèi)容傳遞給主循環(huán)顯示。
圖2.15發(fā)送數(shù)據(jù)
3、VCI函數(shù)調(diào)用參考
在LabVIEW中使用CallingLibraryFunctionNode調(diào)用VCI庫(kù)函數(shù)的配置如下各表所示。
3.1VCI_OpenDevice
3.2VCI_CloseDevice
3.3VCI_InitCan
3.4VCI_ReadBoardInfo
3.5VCI_ReadErrInfo
3.6VCI_ReadCanStatus
評(píng)論