can-bus通用測試軟件及接口函數(shù)庫使用手冊_第1頁
can-bus通用測試軟件及接口函數(shù)庫使用手冊_第2頁
can-bus通用測試軟件及接口函數(shù)庫使用手冊_第3頁
can-bus通用測試軟件及接口函數(shù)庫使用手冊_第4頁
can-bus通用測試軟件及接口函數(shù)庫使用手冊_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、目 錄1.使用說明1設(shè)備操作1設(shè)備類型選擇1濾波設(shè)置2啟動CAN2獲取設(shè)備信息3發(fā)送數(shù)據(jù)3輔助操作3幀ID顯示方式3幀ID顯示格式4繼續(xù)顯示發(fā)送和接收的數(shù)據(jù)4暫停顯示發(fā)送和接收的數(shù)據(jù)4滾動4顯示幀數(shù)4Language4測試1.1.1.1.1.1.1.2.1.1.3.1.1.4.1.1.5.1.2.1.2.1.1.2.2.1.2.3.1.2.4.1.2.5.1.2.6.1.2.7.2.接口函數(shù)庫說明及其使用52.1.2.2.2.3.接口卡設(shè)備類型定義5錯誤碼定義5函數(shù)庫中的數(shù)據(jù)結(jié)構(gòu)定義6VCI_BOARD_INFO6VCI_CAN_OBJ62.3.1.2.3.2.2.3.3.2.3.4.2.3.

2、5.2.3.6.2.3.7.VCI_CAN_SUS7VCI_ERR_INFO8VCI_INIT_CONFIG8CHGDESIPANDPORT9VCI_FILTER_RECORD10接口庫函數(shù)說明10VCI_OpenDevice10VCI_CloseDevice12VCI_InitCan13VCI_ReadBoardInfo18VCI_ReadErrInfo19VCI_ReadCanS us23VCI_GetReference24VCI_SetReference28VCI_GetReceiveNum33VCI_ClearBuffer34VCI_StartCAN35VCI_ResetCAN37VC

3、I_Transmit38VCI_Receive39接口庫函數(shù)使用方法402.4.2.4.1.2.4.2.2.4.3.2.4.4.2.4.5.2.4.6.2.4.7.2.4.8.2.4.9.2.4.10.2.4.11.2.4.12.2.4.13.2.4.14.2.5.12.5.1.2.5.2.VC調(diào)用動態(tài)庫的方法40VB調(diào)用動態(tài)庫的方法40接口庫函數(shù)使用流程412.6.3.Linux下動態(tài)庫的使用423.1.驅(qū)動程序的安裝42USBCAN驅(qū)動的安裝42PCI5121 驅(qū)動的安裝42動態(tài)庫的安裝42動態(tài)庫的調(diào)用及編譯423.1.1.3.1.2.3.2.3.3.21.測試使用說明CAN-bus 通用

4、測試是一個專門用來對所有的ZLGCAN 系列板卡進(jìn)試的工具,此作簡單,容易上手,通過運(yùn)用此下:可以非常方便的對板卡進(jìn)試,從而熟悉板卡的性能,其主界面如1.1.1.1.1.設(shè)備操作設(shè)備類型選擇在進(jìn)行操作之前,首先得從“類型”菜單中選擇您想要操作的設(shè)備類型,如下圖所示:此時會彈出“選擇設(shè)備”框:1在這個框中您可以選擇您要打開的設(shè)備索引號和CAN 通道,以及設(shè)置 CAN 的初始化參數(shù),然后點(diǎn)“確定”按鈕來打開設(shè)備操作窗口(或者也可以點(diǎn)擊“確定并啟動 CAN”按鈕打開設(shè)備操作窗口并自動打開設(shè)備和啟動CAN 通道)。1.1.2.濾波設(shè)置接著,設(shè)備操作窗口中可以點(diǎn)擊“濾波設(shè)置”按鈕進(jìn)行濾波設(shè)置(如果不需要

5、設(shè)置濾波,可以略過此步驟):此時會彈出“濾波設(shè)置”框:在其中先選擇濾波模式,然后通過設(shè)定濾波器來設(shè)置需要過濾的CAN 幀。1.1.3.啟動CAN點(diǎn)擊“啟動”按鈕啟動CAN 通道,此時接收到的CAN 數(shù)據(jù)將會自動在數(shù)據(jù)列表中顯示:21.1.4.獲取設(shè)備信息在啟動 CAN 通道后,您可以選擇“設(shè)備操作”菜單中的“設(shè)備信息”選項(xiàng)來獲得當(dāng)前設(shè)備的詳細(xì)信息。1.1.5.發(fā)送數(shù)據(jù)當(dāng)您啟動CAN 成功后,在下圖中設(shè)置好您要發(fā)送的CAN 幀的各項(xiàng)參數(shù),然后點(diǎn)擊“發(fā)送”按鈕就可以發(fā)送數(shù)據(jù)了(其中發(fā)送格式下拉框中的自發(fā)自收選項(xiàng)表示發(fā)送出去的 CAN 幀自己也能收到,這個選項(xiàng)在測試的時候才需用到,在實(shí)際的應(yīng)用中請選

6、用正常發(fā)送):您還可以點(diǎn)擊“高級操作”幀(最多可設(shè)置 10 幀):進(jìn)入高級操作頁面,在此頁面您可以設(shè)置每次發(fā)送多個不同的 CAN1.2.輔助操作本中還設(shè)置了一些輔助操作,以方便您能夠更好的觀察和分析CAN 數(shù)據(jù):1.2.1.幀ID顯示方式幀ID 有三種顯示方式:二進(jìn)制、十進(jìn)制和進(jìn)制,可根據(jù)需要自行設(shè)定。31.2.2.幀ID顯示格式幀ID 顯示格式有兩種:真實(shí)ID 和兼容 SJA1000 格式。1.2.3.繼續(xù)顯示發(fā)送和接收的數(shù)據(jù)選擇此選項(xiàng)后,接收和發(fā)送都臺進(jìn)行,其數(shù)據(jù)在屏幕上顯示出來。1.2.4.暫停顯示發(fā)送和接收的數(shù)據(jù)選擇此選項(xiàng)后,接收和發(fā)送都在進(jìn)行,其數(shù)據(jù)不在屏幕上顯示出來。1.2.5.滾

7、動選擇此選項(xiàng)后,當(dāng)前數(shù)據(jù)列表中的最后一行總是可見。1.2.6.顯示幀數(shù)設(shè)定數(shù)據(jù)列表的顯示幀數(shù)。1.2.7.Language選擇語言。42.接口函數(shù)庫說明及其使用2.1.接卡設(shè)備類型定義各個接口卡的類型定義如下:2.2.錯誤碼定義5名稱值描述ERR_CAN_OVERFLOW0 x00000001CAN 控制器內(nèi)部 FIFO 溢出ERR_CAN_ERRALARM0 x00000002CAN 控制器錯誤ERR_CAN_PASSIVE0 x00000004CAN 控制器消極錯誤ERR_CAN_LOSE0 x00000008CAN 控制器仲裁丟失ERR_CAN_BUSERR0 x00000010CAN

8、控制器總線錯誤ERR_CAN_BUSOFF0 x00000020CAN 控制器總線關(guān)閉ERR_DEVICEOPENED0 x00000100設(shè)備已經(jīng)打開ERR_DEVICEOPEN0 x00000200打開設(shè)備錯誤ERR_DEVICENOTOPEN0 x00000400設(shè)備沒有打開ERR_BUFFEROVERFLOW0 x00000800緩沖區(qū)溢出ERR_DEVICENOTEXIST0 x00001000此設(shè)備不存在設(shè)備名稱設(shè)備類型號PCI51211PCI98102USBCAN13USBCAN24PCI98205CAN2326PCI51107CANlite(CANmini)8ISA96209I

9、SA542010PC104-CAN11CANET-UDP12DNP981013PCI984014PC104-CAN215PCI9820I16CANET-TCP17PEC-992018PCI-5010-U19USBCAN-E20USBCAN-2E21PCI-5020-U22口2.3.函數(shù)庫中的數(shù)據(jù)結(jié)構(gòu)定義2.3.1.描述VCI_BOARD_INFOVCI_BOARD_INFO 結(jié)構(gòu)體包含 ZLGCAN 系列接口卡的設(shè)備信息。結(jié)構(gòu)體將在 VCI_ReadBoardInfo函數(shù)中被填充。成員hw_Ver硬件版本號,用 16 進(jìn)制表示。比如 0 x0100 表示 V1.00。fw_Ver固件版本號,用

10、 16 進(jìn)制表示。dr_Ver驅(qū)動程序版本號,用 16 進(jìn)制表示。in_Ver接口庫版本號,用 16 進(jìn)制表示。irq_Num板卡所使用的中斷號。can_Num表示有幾路CAN 通道。str_Serial_Num此板卡的序列號。str_hw_Type硬件類型,比如“USBCAN V1.00”(注意:包括字符串結(jié)束符0)。系統(tǒng)保留。2.3.2.描述VCI_CAN_OBJ6typedef struct _VCI_BOARD_INFO USHORT hw_Ver;USHORT fw_Ver;USHORT dr_Ver;USHORT in_Ver; USHORT irq_Num; BYTEcan_Nu

11、m;CHARstr_Serial_Num20; CHARstr_hw_Type40; USHORT4; VCI_BOARD_INFO, *PVCI_BOARD_INFO;ERR_LOADKERNELDLL0 x00002000裝載動態(tài)庫失敗ERR_CMDFAILED0 x00004000執(zhí)行命令失敗錯誤碼ERR_BUFFERCREATE0 x00008000內(nèi)存不足ERR_CANETE_PORTOPENED0 x00010000端口已經(jīng)被打開ERR_CANETE_INDEXUSED0 x00020000設(shè)備索引號已經(jīng)被占用VCI_CAN_OBJ 結(jié)構(gòu)體在 VCI_Transmit 和VCI_R

12、eceive 函數(shù)中被用來傳送CAN 信息幀。成員ID報(bào)文ID。TimeStamp接收到信息幀時的時間標(biāo)識,從CAN 控制器初始化開始計(jì)時。TimeFlag是否使用時間標(biāo)識,為 1 時 TimeStamp 有效,TimeFlag 和 TimeStamp 只在此幀為接收幀時有意義。SendType發(fā)送幀類型,=0 時為正常發(fā)送,=1 時為單次發(fā)送,=2 時為自發(fā)自收,=3 時為單次自發(fā)自收,只在此幀為發(fā)送幀時有意義。RemoteFlag是否是ExternFlag幀。是否是擴(kuò)展幀。DataLen數(shù)據(jù)長度(AccCodeAccCode 對應(yīng) SJA1000 中的四個寄存器 ACR0,ACR1,ACR

13、2,ACR3,其中高字節(jié)對應(yīng) ACR0,低字節(jié)對應(yīng) ACR3;AccMask 對應(yīng) SJA1000 中的四個寄存器 AMR0,AMR1,AMR2,AMR3,其中高字節(jié)對應(yīng) AMR0,低字節(jié)對應(yīng)AMR3。(請看表后說明)pInitConfig-AccMaskpInitConfig-保留pInitConfig-Filter濾波方式,1 表示單濾波,0 表示雙濾波pInitConfig-Timing0定時器 0pInitConfig-Timing1定時器 1pInitConfig-Mode模式,0 表示正常模式,1 表示只聽模式DWORD stdcall VCI_InitCan(DWORD DevT

14、ype, DWORD DevIndex, DWORD CANIndex, PVCI_INIT_CONFIGpInitConfig);RTR 對應(yīng) VCI_CAN_OBJ 中的RemoteFlag當(dāng)濾波方式為單濾波,接收幀為擴(kuò)展幀時:當(dāng)濾波方式為雙濾波,接收幀為標(biāo)準(zhǔn)幀時:14當(dāng)濾波方式為雙濾波,接收幀為擴(kuò)展幀時:15返回值為 1 表示操作成功,0 表示操作失敗。(注:在 CANET-E 中無此函數(shù))示例16#include ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;n= 9600;/ Baudra

15、te VCI_INIT_CONFIG vic;DWORD dwRel;dwRel = VCI_OpenDevice(nDeviceType, nDeviceInd, n); if (dwRel != SUS_OK)MessageBox(_T(打開設(shè)備失敗!), _T(警告), MB_OK|MB_ICONQUESTION);17return FALSE;dwRel = VCI_InitCAN(nDeviceType, nDeviceInd, nCANInd, &vic); if (dwRel = SUS_ERR)VCI_CloseDevice(nDeviceType, nDeviceInd);

16、MessageBox(_T(初始化設(shè)備失敗!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;2.4.4.描述VCI_ReadBoardInfo此函數(shù)用以獲取設(shè)備信息。參數(shù)DevType設(shè)備類型號。DevIndex設(shè)備索引號,比如當(dāng)只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當(dāng)為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)pInfo用來設(shè)備信息的 VCI_BOARD_INFO 結(jié)構(gòu)指針。返回值為 1 表示操作成功,0 表示操作失敗。(注:在 CANET 中無此函數(shù))示例18#in

17、clude ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;VCI_INIT_CONFIG vic; VCI_BOARD_INFO vbi;DWORD dwRel;bRel = VCI_ReadBoardInfo(nDeviceType, nDeviceInd, nCANInd, &vbi);DWORD stdcall VCI_ReadBoardInfo(DWORD DevType, DWORD DevIndex, PVCI_BOARD_INFO pInfo);2.4.5.描述VCI_ReadErrI

18、nfo此函數(shù)用以獲取最后一次錯誤信息。參數(shù)DevType設(shè)備類型號。DevIndex設(shè)備索引號,比如當(dāng)只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當(dāng)為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。 (注:當(dāng)要設(shè)備錯誤的時候,此參數(shù)應(yīng)該設(shè)為1。比如當(dāng)調(diào)用VCI_OpenDevice,VCI_CloseDevice 和VCI_ReadBoardInfo 這些與特定的第幾路CAN 操作無關(guān)的操作函數(shù)失敗后,調(diào)用此函數(shù)來獲取失敗錯誤碼的時候應(yīng)該把CANIndex 設(shè)為1。)pErrInfo用來錯誤信息的

19、VCI_ERR_INFO 結(jié)構(gòu)指針。pErrInfo-ErrCode 可能為下列各個錯誤碼的多種組合之一:返回值為 1 表示操作成功,0 表示操作失敗。備注當(dāng)(PErrInfo-ErrCode&0 x0004)=0 x0004 時,存在CAN 控制器消極錯誤。PErrInfo-Passive_ErrData0錯誤代碼捕捉位功能表示錯誤代碼類型功能說明19位ECC.7位ECC.6功能Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0錯誤代碼類型錯誤屬性錯誤段表示ErrCodePassive_ErrDataArLost_ErrData錯誤描述0 x0100無無設(shè)備已經(jīng)打開0 x020

20、0無無打開設(shè)備錯誤0 x0400無無設(shè)備沒有打開0 x0800無無緩沖區(qū)溢出0 x1000無無此設(shè)備不存在0 x2000無無裝載動態(tài)庫失敗0 x4000無無表示為執(zhí)行命令失敗錯誤0 x8000無內(nèi)存不足0 x0001無無CAN 控制器內(nèi)部 FIFO 溢出0 x0002無無CAN 控制器錯誤0 x0004有,具體值見表后無CAN 控制器消極錯誤0 x0008無有,具體值見表后CAN 控制器仲裁丟失0 x0010無無CAN 控制器總線錯誤DWORD stdcall VCI_ReadErrInfo(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI

21、_ERR_INFOpErrInfo);錯誤屬性bit5 =0; 表示發(fā)送時發(fā)生的錯誤。=1; 表示接收時發(fā)生的錯誤。錯誤段表示功能說明PErrInfo-Passive_ErrData1 表示接收錯誤計(jì)數(shù)器PErrInfo-Passive_ErrData2 表示發(fā)送錯誤計(jì)數(shù)器當(dāng)(PErrInfo-ErrCode&0 x0008)=0 x0008 時,存在CAN 控制器仲裁丟失錯誤。PErrInfo-ArLost_ErrData 仲裁丟失代碼捕捉位功能表示20Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0錯誤段表示bit4bit 3bit 2bit 1bit 0功能00011幀開

22、始00010ID.28-ID.2100110ID.20-ID.1800100SRTR 位00101IDE 位00111ID.17-ID.1301111ID.12-ID.501110ID.4-ID.001100RTR 位01101保留位 101001保留位 001011數(shù)據(jù)長度代碼01010數(shù)據(jù)區(qū)01000CRC 序列11000CRC 定義符11001應(yīng)答通道11011應(yīng)答定義符11010幀結(jié)束10010中止10001活動錯誤標(biāo)志10110消極錯誤標(biāo)志10011支配(控制)位誤差10111錯誤定義符11100溢出標(biāo)志00位錯01格式錯10填充錯11其它錯誤錯誤段表示功能表示示例21#includ

23、e ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;VCI_ERR_INFO vei;位十進(jìn)制值功能ALC.4ALC.3ALC.2ALC.1ALC.0000000仲裁丟失在識別碼的bit1000011仲裁丟失在識別碼的bit2000102仲裁丟失在識別碼的bit3000113仲裁丟失在識別碼的bit4001004仲裁丟失在識別碼的bit5001015仲裁丟失在識別碼的bit6001106仲裁丟失在識別碼的bit7001117仲裁丟失在識別碼的bit8010008仲裁丟失在識別碼的bit9010019仲

24、裁丟失在識別碼的bit100101010仲裁丟失在識別碼的bit110101111仲裁丟失在 SRTR 位0110012仲裁丟失在IDE 位0110113仲裁丟失在識別碼的bit120111014仲裁丟失在識別碼的bit130111115仲裁丟失在識別碼的bit141000016仲裁丟失在識別碼的bit151000117仲裁丟失在識別碼的bit161001018仲裁丟失在識別碼的bit171001119仲裁丟失在識別碼的bit181010020仲裁丟失在識別碼的bit191010121仲裁丟失在識別碼的bit201011022仲裁丟失在識別碼的bit211011123仲裁丟失在識別碼的bit2

25、21100024仲裁丟失在識別碼的bit231100125仲裁丟失在識別碼的bit241101026仲裁丟失在識別碼的bit251101127仲裁丟失在識別碼的bit261110028仲裁丟失在識別碼的bit271110129仲裁丟失在識別碼的bit281111030仲裁丟失在識別碼的bit291111131仲裁丟失在ERTR 位22DWORD dwRel;bRel = VCI_ReadErrInfo(nDeviceType, nDeviceInd, nCANInd, &vei);2.4.6.描述VCI_ReadCanSus此函數(shù)用以獲取CAN 狀態(tài)。參數(shù)DevType設(shè)備類型號。DevInd

26、ex設(shè)備索引號,比如當(dāng)只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當(dāng)為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。pCANS us用來返回值CAN 狀態(tài)的 VCI_CAN_SUS 結(jié)構(gòu)指針。為 1 表示操作成功,0 表示操作失敗。(注:在 CANET-E 中無此函數(shù))示例23#include ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;VCI_INIT_CONFIG vic;VCI_CAN_SUS

27、 vcs; DWORD dwRel;bRel = VCI_ReadCANSus(nDeviceType, nDeviceInd, nCANInd, &vcs);DWORD stdcall VCI_ReadCanSus(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_SUSpCANSus);2.4.7.描述VCI_GetReference此函數(shù)用以獲取設(shè)備的相應(yīng)參數(shù)。參數(shù)DevType設(shè)備類型號。DevIndex設(shè)備索引號,比如當(dāng)只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當(dāng)為 CAN232時,0

28、表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。RefType參數(shù)類型。ata用來返回值參數(shù)有關(guān)數(shù)據(jù)緩沖區(qū)地址首指針。為 1 表示操作成功,0 表示操作失敗。備注(1) 當(dāng)設(shè)備類型為 PCI5121,PCI5110 或ISA5420 時:(2) 當(dāng)設(shè)備類型為 USBCAN1,USBCAN2 時:(3) 當(dāng)設(shè)備類型為 WITCAN-I 時:24RefTypeata功能描述1總長度 1 個字節(jié),當(dāng)作為輸入?yún)?shù)時,表示為所要讀CAN 控制器的指定控制寄存器的值。例如對 USBCAN1:RefTypeata功能描述1總長度 1 個字節(jié),當(dāng)作為輸入?yún)?shù)時,表示為

29、所要的 CAN 控制器的控制寄存器的地址。當(dāng)作為輸出參數(shù)時,表示為CAN 控制器的控制寄存器的值。讀CAN 控制器的指定控制寄存器的值。例如對 USBCAN1:BYTE val=0; VCI_GetReference(VCI_USBCAN1,0,0,1,(PVOID)&val);如果此函數(shù)調(diào)用成功,則在val 中返回寄存器的值。RefTypeata功能描述1總長度為 2 個字節(jié), ata0 表示 CAN 控制器的控制寄存器的地址, ata1 表示要讀出 CAN控制器的控制寄存器的值。CAN某個寄存器的值。例如要地址為 9 的寄存器值:UCHARata2 = 9,0;VCI_GetReferen

30、ce(DeviceType,DeviceInd,CANInd,1, ata);如果調(diào)用成功, ata1將存放讀出的值。DWORD stdcall VCI_GetReference(DWORD DevType, DWORD DevIndex, DWORD CANIndex, DWORD RefType,PVOIData);(4) 當(dāng)設(shè)備類型為 CANET-UDP 時:(5) 當(dāng)設(shè)備類型為CANET-TCP 時:此設(shè)備有兩種工作模式,分別為客戶端和服務(wù)器模式,如果設(shè)備工作在客戶端模式,的測試工具需要工作在服務(wù)器模式,而設(shè)備工作在服務(wù)器模式,的測試工作則工作在客戶端模式。25RefTypeata功能

31、描述0字符串首指針,用來存儲 所出 來 的 CANET-TCP 的IP 地址。(當(dāng)設(shè)備工作在服務(wù)器模式時使用)CANET-TCP 的IP 地址。例如:char szip20; VCI_GetReference(VCI_CANETE,0,0,0,(PVOID)szip);如果此函數(shù)調(diào)用成功,則在szip 中返回CANET-E 的地址。1長度為 4 個字節(jié),出來的 CANET-E的工作端口。(當(dāng)設(shè)備工作在服務(wù)器模式時有效)CANET-TCP 的工作端口。例如:port; VCI_GetReference(VCI_CANET_TCP,0,0,1,(PVOID)&port);如果此函數(shù)調(diào)用成功,則在p

32、ort 中返回 CANET-E 的工作端口。2長度為 4 個字節(jié),或設(shè)置TCP 服務(wù)器的端口。RefTypeata功能描述0字符串首指針,用來所出來的CANETE-E 的IP地址。CANET-E 的IP 地址。例如:char szip20; VCI_GetReference(VCI_CANETE,0,0,0,(PVOID)szip);如果此函數(shù)調(diào)用成功,則在szip 中返回CANET-E 的地址。1長度為 4 個字節(jié),出來的 CANET-E 的工作端口。CANET-E 的工作端口。例如:port; VCI_GetReference(VCI_CANETE,0,0,1,(PVOID)&port);

33、 如果此函數(shù)調(diào)用成功,則在 port 中返回 CANET-E 的工作端口。的 CAN 控制器的控制寄存器的地址。當(dāng)作為輸出參數(shù)時,表示為CAN 控制器的控制寄存器的值。BYTE val=0; VCI_GetReference(VCI_USBCAN1,0,0,1,(PVOID)&val);如果此函數(shù)調(diào)用成功,則在val 中返回寄存器的值。20總長度為所要 的數(shù)據(jù)長度加 4 字節(jié),當(dāng)作為輸入?yún)?shù)時,第 0 和 1 字節(jié)合起來表示數(shù)據(jù)地址,第 2 和 3 字節(jié)合起來表示所要 的數(shù)據(jù)長度。當(dāng)作為輸出參數(shù)時, 讀取的數(shù)據(jù)EEPROM 數(shù)據(jù)例如:BYTE buf12;WORD addr=0,readlen

34、=8; memcpy(buf,&addr,2);/設(shè)址 memcpy(buf+2,&readlen,2);/設(shè)置長度VCI_GetReference(VCI_USBCAN1,0,0,20,(PVOID)&buf);如果此函數(shù)調(diào)用成功,則在 buf 第 0 到 7 字節(jié)讀到的數(shù)據(jù)。REMOTE_CNT 結(jié)構(gòu)(6) 當(dāng)設(shè)備類型為 CAN232 時:26RefTypeata功能描述1總長度 14 個字節(jié),當(dāng)作為輸入?yún)?shù)時,只有第一個字節(jié)有效,值為所 的濾波器的序號,以為 1,2,3,4。當(dāng)作為輸出參數(shù)時,具體各個字節(jié)所代表的意義見表后。取得指定的濾波器參數(shù),例如要第一個濾波器的參數(shù),可以這樣:BYT

35、E info14; info0=1;VCI_GetReference(VCI_CAN232,0,0,1,(PVOID)info);如果此函數(shù)調(diào)用成功,則在info 中返回 14 個字節(jié)的第一個濾波器的參數(shù)。2總長度 1 個字節(jié),當(dāng)作為輸入?yún)?shù)時,表示為所要的 CAN 控制器的控制寄存器的地址。當(dāng)作為輸出參數(shù)時,表示為CAN 控制器的控制寄存器讀CAN 控制器的指定控制寄存器的值,例如: BYTE val=0; VCI_GetReference(VCI_CAN232,0,0,2,(PVOID)&val);如果此函數(shù)調(diào)用成功,則在val 中返回寄存器的值。typedef struct tagRem

36、oteCnt iIndex;DWORD port; HANDLE hCnt;char szip32;REMOTE_CNT;出來的TCP 服務(wù)器的端口。(設(shè)備在服務(wù)器和客戶端模式時同時有效)例如:port; VCI_SetReference(VCI_CANET_TCP,0,0,2,(PVOID)&port);如果此函數(shù)調(diào)用成功,設(shè)置本機(jī)器上的工作端口。4長度為 4 個字節(jié),TCP設(shè)備的工作模式。0 為客戶端方式,1 為服務(wù)器方式。例如:iType = 1; VCI_SetReference(VCI_CANET_TCP,0,0,4,(PVOID)&iType);如果此函數(shù)調(diào)用成功,設(shè)置本機(jī)器工作在

37、服務(wù)器模式。5長度為 4 個字節(jié),獲取連接的客戶端的數(shù)目。(當(dāng)設(shè)備工作在客戶端模式下有效)或設(shè)置TCP 服務(wù)器的端口。例如:iCount;VCI_GetReference( VCI_CANET_TCP,0,0,5,(PVOID)&iCount);如果此函數(shù)調(diào)用成功,則在port 中返回 CANET-E 的工作端口。6使用REMOTE_C NT結(jié)構(gòu),獲取 接的信息。(當(dāng)設(shè)備工作在客戶端模式下有效)當(dāng)有客戶端連接到次服務(wù)器(本機(jī))時,使用此命令獲取客戶端信息。例如:REMOTE_CNT cli;cli.iIndex = 0;/獲取第 0 個連接到服務(wù)器的客戶端VCI_GetReference(VC

38、I_CANET_TCP ,0, 0,6,(PVOID)&cli);如果此函數(shù)調(diào)用成功,則在cli 里面返回客戶端的信息。當(dāng)RefType=1 時,此時返回的ata0信息保留ata 各個字節(jié)所代表的意義如下:ata1表示CAN 控制器BTR0 的值;ata2表示CAN 控制器BTR1 的值;ata3該組驗(yàn)收濾波器模式,位功能MFORMATB=1; 驗(yàn)收濾波器該組僅用于擴(kuò)展幀信息。標(biāo)準(zhǔn)幀信息被忽略。=0; 驗(yàn)收濾波器該組僅用于標(biāo)準(zhǔn)幀信息。擴(kuò)展幀信息被忽略。=1; 單驗(yàn)收濾波器選項(xiàng)使能長濾波器有效。=0; 雙驗(yàn)收濾波器選項(xiàng)使能短濾波器有效。AMODEBata4該組驗(yàn)收濾波器的使能,位功能BF2EN=

39、1; 該組濾波器 2 使能,不能對相應(yīng)的和代碼寄存器進(jìn)行寫操作。和代碼寄存器。和代碼寄存器進(jìn)行寫操作。和代碼寄存器。=0; 該組濾波器 2,可以改變相應(yīng)的BF1EN=1; 該組濾波器 1 使能,不能對相應(yīng)的=0; 該組濾波器 1,可以改變相應(yīng)的注:如果選擇單濾波器模式,該單濾波器與對應(yīng)的濾波器 1 使能位相關(guān)。濾波器 2 使能位在單濾波器模式中不起作用。ata5該組驗(yàn)收濾波器的優(yōu)先級,位功能BF2PRIO=1; 該組濾波器 2 優(yōu)先級高,如果信息通過該組濾波器 2,立即產(chǎn)生接收中斷。=0;該組濾波器 2 優(yōu)先級低,如果 FIFO 級超過接收中斷級濾波器,產(chǎn)生接收中斷。=1; 該組濾波器 1 優(yōu)

40、先級高,如果信息通過該組濾波器 1,立即產(chǎn)生接收中斷。=0;該組濾波器 1 優(yōu)先級低,如果 FIFO 級超過接收中斷級濾波器,產(chǎn)生接收中斷。BF1PRIOata69表示該組濾波器 ACR 的值。ataad表示該組濾波器 AMR 的值。示例27#include ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;BYTE info14; DWORD dwRel;info0 = 1;bRel = VCI_GetReference(nDeviceType, nDeviceInd, nCANInd, 1, (PV

41、OID)info);SUS.7US.6US.5US.4US.3US.2US.1US.0BF2PRIOBF1PRIOSSSSSSSSUS.7US.6US.5US.4US.3US.2US.1US.0BF2ENBF1ENSSSSSSSSUS.7SUS.6US.5US.4US.3US.2SUS.1US.0MFORMATBAMODEBSSSSS的值。2.4.8.描述VCI_SetReference此函數(shù)用以設(shè)置設(shè)備的相應(yīng)參數(shù),主要處理不同設(shè)備的特定操作。參數(shù)DevType設(shè)備類型號。DevIndex設(shè)備索引號,比如當(dāng)只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當(dāng)為 CA

42、N232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。RefType參數(shù)類型。ata用來返回值參數(shù)有關(guān)數(shù)據(jù)緩沖區(qū)地址首指針。為 1 表示操作成功,0 表示操作失敗。備注VCI_SetReference 和VCI_GetReference 這兩個函數(shù)是用來針對各個不同設(shè)備的一些特定操作的。比如CAN232 的更改波特率,設(shè)置報(bào)文濾波等等。函數(shù)中的 PVOID 型參數(shù)具有不同的意義。ata 隨不同設(shè)備的不同操作而(1) 當(dāng)設(shè)備類型為 PCI5121,PCI5110 或ISA5420 時:(2) 當(dāng)設(shè)備類型為 USBCAN1,USBCAN2 時:(

43、3) 當(dāng)設(shè)備類型為 WITCAN-I 時:28RefTypeata功能描述1總長度為 2 個字節(jié)ata0表示 CAN 控制器的控制寄存器的地址, ata1 表示寫CAN 控制器的指定控制寄存器RefTypeata功能描述1總長度為 2 個字節(jié) ata0表示 CAN 控制器的控制寄存器的地址, ata1 表示要寫入的數(shù)值。寫CAN 控制器的指定控制寄存器RefTypeata功能描述1總長度為 2 個字節(jié) ata0表示 CAN 控制器的控制寄存器的地址, ata1 表示要寫入的數(shù)值。寫CAN 控制器的指定控制寄存器DWORD stdcall VCI_SetReference(DWORD DevTy

44、pe, DWORD DevIndex, DWORD CANIndex, DWORD RefType,PVOIData);(4) 當(dāng)設(shè)備類型為 CANET-UDP 時:(5) 當(dāng)設(shè)備類型為CANET-TCP 時:REMOTE_CNT 結(jié)構(gòu)29RefTypeata功能描述0字符串首指針,用來所指定操作的 CANET-TCP 的IP 地址。設(shè)置所要操作的CANET-TCP 的IP 地址1長度為 4 個字節(jié),所指定操作的 CANET-TCP 的工作端口。(目標(biāo))設(shè)置所要操作的CANET-TCP 的工作端口2長度為 4 個字節(jié),本機(jī)器地上工作端口。設(shè)置本機(jī)端口4長度為 4 個字節(jié),本機(jī)器TCP 的工作模

45、式。設(shè)置本機(jī)的工作模式,如果 CANETTCP 工作在服務(wù)器模式則本機(jī)工作在客戶端模式,如果 CANET-TCP 工作在客戶端模式則本機(jī)工作在服務(wù)器模式。0 為客戶端方式,1 為服務(wù)器方式。5長度為 4 個字節(jié),連接到本機(jī)服務(wù)器上的客戶端個數(shù)。只能獲取。6長度為REMOTE_CNT,所接的信息。只能獲取。7使用 REMOTE_C NT 結(jié)構(gòu),刪除 接。(當(dāng)設(shè)備工作在客戶端模式下有效)例如:REMOTE_CNT cli;cli.iIndex = 0;/刪除第 0 個連接的客戶端VCI_SetReference(VCI_CANET_TCP,0,0,7,(PVOID)&cli);RefTypeata

46、功能描述0字符串首指針,用來所指定操作的 CANETE-UDP的IP 地址。設(shè)置所要操作的 CANET-UDP 的IP 地址1長度為 4 個字節(jié),所指定操作的 CANET-UDP 的工作端口。設(shè)置所要操作的 CANET-UDP 的工作端口DWORD port=5000;VCI_SetReference(12,0,0,1,(PVOID)&port);要寫入的數(shù)值。20總長度為所要寫入的數(shù)據(jù)長度加 4 字節(jié),第 0 和 1 字節(jié)合起來表示數(shù)據(jù)地址,第 2和 3 字節(jié)合起來表示所要讀取的數(shù)據(jù)長度,從第 4 字節(jié)開始要寫入的數(shù)據(jù)。寫EEPROM 數(shù)據(jù)例如:BYTE buf12;WORD addr=0,

47、wri en=8; memcpy(buf,&addr,2);/設(shè)址 memcpy(buf+2,& wri en,2);/設(shè)置寫入長度 memset(buf+4,0,8);/設(shè)置要寫入的數(shù)據(jù)VCI_SetReference(VCI_USBCAN1,0,0,20,(PVOID)&buf);(6) 當(dāng)設(shè)備類型為 CAN232 時:當(dāng)RefType=2 時,此時的ata 各個字節(jié)所代表的意義如下:ata0設(shè)置哪一組驗(yàn)收濾波器;共有 4 組:=1 設(shè)置第 1 組=2 設(shè)置第 2 組=3 設(shè)置第 3 組=4 設(shè)置第 4 組ata1設(shè)置該組驗(yàn)收濾波器模式,位功能30RefTypeata功能描述1總長度為 1

48、 個字節(jié)0;10Kbps1;20Kbps2;50Kbps3;125Kbps4;250Kbps5;500Kbps6;800Kbps7;1000Kbps更改 CAN 波特率,例如要設(shè)置 CAN 的波特率為 10Kbps: BYTE baud=0; VCI_SetReference(VCI_CAN232,0,0,1,(PVOID)&baud);2總長度為 12 個字節(jié),其各個字節(jié)所代表的意義見表后。設(shè)置濾波器參數(shù)3總長度為 1 個字節(jié)1;2.4Kbps2;4.8Kbps3;9.6Kbps4;14.4Kbps5;19.2Kbps6;28.8Kbps7;57.6Kbps更改 232 波特率4總長度為 2

49、 個字節(jié) ata0表示 CAN 控制器的控制寄存器的地址, ata1 表示要寫入的數(shù)值。寫CAN 控制器的指定控制寄存器5總長度為 1 個字節(jié),0 xAA;使用時間標(biāo)識其他;不使用時間標(biāo)識設(shè)置時間標(biāo)識typedef struct tagRemoteCnt iIndex;DWORD port; HANDLE hCnt;char szip32;REMOTE_CNT;MFORMATB=1 驗(yàn)收濾波器該組僅用于擴(kuò)展幀信息。標(biāo)準(zhǔn)幀信息被忽略。=0 驗(yàn)收濾波器該組僅用于標(biāo)準(zhǔn)幀信息。擴(kuò)展幀信息被忽略。=1 單驗(yàn)收濾波器選項(xiàng)使能長濾波器有效。=0 雙驗(yàn)收濾波器選項(xiàng)使能短濾波器有效。AMODEBata2設(shè)置該組

50、驗(yàn)收濾波器的使能,位功能BF2EN=1 該組濾波器 2 使能,不能對相應(yīng)的和代碼寄存器進(jìn)行寫操作。和代碼寄存器。和代碼寄存器進(jìn)行寫操作。和代碼寄存器。=0 該組濾波器 2,可以改變相應(yīng)的BF1EN=1 該組濾波器 1 使能,不能對相應(yīng)的=0 該組濾波器 1,可以改變相應(yīng)的注:如果選擇單濾波器模式,該單濾波器與對應(yīng)的濾波器 1 使能位相關(guān)。濾波器 2 使能位在單濾波器模式中不起作用。ata3設(shè)置該組驗(yàn)收濾波器的優(yōu)先級,位功能BF2PRIO =1 該組濾波器 2 優(yōu)先級高,如果信息通過該組濾波器 2 ,立即產(chǎn)生接收中斷。=0 該組濾波器 2 優(yōu)先級低,如果 FIFO 級超過接收中斷級濾波器,產(chǎn)生接

51、收中斷。BF1PRIO =1 該組濾波器 1 優(yōu)先級高,如果信息通過該組濾波器 1 ,立即產(chǎn)生接收中斷。=0 該組濾波器 1 優(yōu)先級低,如果 FIFO 級超過接收中斷級濾波器,產(chǎn)生接收中斷。ata4-7 分別對應(yīng)要設(shè)置的SJA1000 的 ACR0-ACR3 的值;ata8-b 分別對應(yīng)要設(shè)置的SJA1000 的 AMR0-AMR3 的值;(7) 當(dāng)設(shè)備類型為PCI-5010-U/PCI-5020-U/USBCAN-E/ USBCAN-2E 時:31RefTypeata功能描述0指向 DWORD 類型的指針,該 DWORD 變量的值為寫入波特率寄存器BTR 的值。一些標(biāo)準(zhǔn)波特率對應(yīng)的 BTR

52、設(shè)置如下:0 x060003 : 1000Kbps0 x060004 : 800Kbps0 x060007 : 500Kbps0 x1C0008 : 250Kbps0 x1C0011 : 125Kbps0 x160023 : 100Kbps0 x1C002C : 50Kbps0 x1600B3 : 20Kbps0 x1C00E0 : 10Kbps設(shè)置波特率。波特率計(jì)算公式如下:BPS=總線時鐘/(BRP+1)*(TESG1+TESG2+3)其中:總線時鐘:36000Kbps BRP:BTR 的 09bit TESG1: BTR 的 1619bit TESG2: BTR 的 2022bit建議用

53、戶設(shè)置TESG1,TESG2 時遵循以下條件:TESG1 280% = 90%,若用TESG1 TESG 2 3戶設(shè)置為其他值,USBCAN-E/USBCAN-2E 有可能工作不正常。32 位寄存器BTR 的其他位建議都設(shè)置為 0(注意:CAN 網(wǎng)絡(luò)最大通訊波特率不應(yīng)該超過SUS.7US.6US.5US.4US.3US.2US.1US.0BF2PRIOBF1PRIOSSSSSSSSUS.7US.6US.5US.4US.3US.2US.1US.0BF2ENBF1ENSSSSSSSSUS.7US.6US.5US.4US.3US.2SUS.1US.0MFORMATBAMODEBSSSSSS示例32#

54、include ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;BYTE baud; DWORD dwRel;baud = 0;bRel = VCI_SetReference(nDeviceType, nDeviceInd, nCANInd, 1, (PVOID)baud);0 x1C01C1 : 5Kbps1000Kbps,所以對波特率的設(shè)置過此值,否則設(shè)置失敗)當(dāng)設(shè)備類型為 USBCAN-E/ USBCAN-2E 時,必須在調(diào)用VCI_InitCan 之前調(diào)用本函數(shù)在這里設(shè)置通訊的波特率。1指向

55、VCI_FILTER_RECORD 結(jié)構(gòu)的指針填充CAN 濾波器的濾波表格(每添加一條調(diào)用本函數(shù)一次)2NULL,可忽略按濾波表格中的設(shè)置啟動濾波2.4.9.描述VCI_GetReceiveNum此函數(shù)用以獲取指定接收緩沖區(qū)中接收到但尚未被的幀數(shù)。參數(shù)DevType設(shè)備類型號。DevIndex設(shè)備索引號,比如當(dāng)只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當(dāng)為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。返回值返回尚未被的幀數(shù)。示例33#include ControlCan.hnDeviceTyp

56、e = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;DWORD dwRel;bRel = VCI_GetReceiveNum(nDeviceType, nDeviceInd, nCANInd);ULONG stdcall VCI_GetReceiveNum(DWORD DevType, DWORD DevIndex, DWORD CANIndex);2.4.10.VCI_ClearBuffer描述此函數(shù)用以清空指定緩沖區(qū)。參數(shù)DevType設(shè)備類型號。DevIndex設(shè)備索引號,比如當(dāng)只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0

57、或 1。(注:當(dāng)為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。返回值為 1 表示操作成功,0 表示操作失敗。示例34#include ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;DWORD dwRel;bRel = VCI_ClearBuffer(nDeviceType, nDeviceInd, nCANInd);DWORD stdcall VCI_ClearBuffer(DWORD DevType, DWORD DevIndex

58、, DWORD CANIndex);2.4.11.VCI_StartCAN描述此函數(shù)用以啟動 CAN。參數(shù)DevType設(shè)備類型號。DevIndex設(shè)備索引號,比如當(dāng)只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當(dāng)為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。返回值為 1 表示操作成功,0 表示操作失敗。(注:在 CANET 中無此函數(shù))示例35#include ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd

59、= 0;n= 9600;/ Baudrate VCI_INIT_CONFIG vic;DWORD dwRel;dwRel = VCI_OpenDevice(nDeviceType, nDeviceInd, n); if (dwRel != SUS_OK)MessageBox(_T(打開設(shè)備失敗!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;dwRel = VCI_InitCAN(nDeviceType, nDeviceInd, nCANInd, &vic); if (dwRel = SUS_ERR)VCI_CloseDevice(nDevice

60、Type, nDeviceInd); MessageBox(_T(初始化設(shè)備失敗!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;dwRel = VCI_StartCAN(nDeviceType, nDeviceInd, nCANInd); if (dwRel = SUS_ERR)VCI_CloseDevice(nDeviceType, nDeviceInd); MessageBox(_T(啟動設(shè)備失敗!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;DWORD stdcall VCI_StartC

溫馨提示

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

評論

0/150

提交評論