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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目 錄1.使用說明1設備操作1設備類型選擇1濾波設置2啟動CAN2獲取設備信息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.接口卡設備類型定義5錯誤碼定義5函數(shù)庫中的數(shù)據(jù)結構定義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調用動態(tài)庫的方法40VB調用動態(tài)庫的方法40接口庫函數(shù)使用流程412.6.3.Linux下動態(tài)庫的使用423.1.驅動程序的安裝42USBCAN驅動的安裝42PCI5121 驅動的安裝42動態(tài)庫的安裝42動態(tài)庫的調用及編譯423.1.1.3.1.2.3.2.3.3.21.測試使用說明CAN-bus 通用

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

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

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

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

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

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

10、 16 進制表示。dr_Ver驅動程序版本號,用 16 進制表示。in_Ver接口庫版本號,用 16 進制表示。irq_Num板卡所使用的中斷號。can_Num表示有幾路CAN 通道。str_Serial_Num此板卡的序列號。str_hw_Type硬件類型,比如“USBCAN V1.00”(注意:包括字符串結束符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內存不足ERR_CANETE_PORTOPENED0 x00010000端口已經(jīng)被打開ERR_CANETE_INDEXUSED0 x00020000設備索引號已經(jīng)被占用VCI_CAN_OBJ 結構體在 VCI_Transmit 和VCI_R

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

13、2,ACR3,其中高字節(jié)對應 ACR0,低字節(jié)對應 ACR3;AccMask 對應 SJA1000 中的四個寄存器 AMR0,AMR1,AMR2,AMR3,其中高字節(jié)對應 AMR0,低字節(jié)對應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 對應 VCI_CAN_OBJ 中的RemoteFlag當濾波方式為單濾波,接收幀為擴展幀時:當濾波方式為雙濾波,接收幀為標準幀時:14當濾波方式為雙濾波,接收幀為擴展幀時: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(打開設備失敗!), _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(初始化設備失敗!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;2.4.4.描述VCI_ReadBoardInfo此函數(shù)用以獲取設備信息。參數(shù)DevType設備類型號。DevIndex設備索引號,比如當只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)pInfo用來設備信息的 VCI_BOARD_INFO 結構指針。返回值為 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設備類型號。DevIndex設備索引號,比如當只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。 (注:當要設備錯誤的時候,此參數(shù)應該設為1。比如當調用VCI_OpenDevice,VCI_CloseDevice 和VCI_ReadBoardInfo 這些與特定的第幾路CAN 操作無關的操作函數(shù)失敗后,調用此函數(shù)來獲取失敗錯誤碼的時候應該把CANIndex 設為1。)pErrInfo用來錯誤信息的

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

20、0無無打開設備錯誤0 x0400無無設備沒有打開0 x0800無無緩沖區(qū)溢出0 x1000無無此設備不存在0 x2000無無裝載動態(tài)庫失敗0 x4000無無表示為執(zhí)行命令失敗錯誤0 x8000無內存不足0 x0001無無CAN 控制器內部 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 表示接收錯誤計數(shù)器PErrInfo-Passive_ErrData2 表示發(fā)送錯誤計數(shù)器當(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應答通道11011應答定義符11010幀結束10010中止10001活動錯誤標志10110消極錯誤標志10011支配(控制)位誤差10111錯誤定義符11100溢出標志00位錯01格式錯10填充錯11其它錯誤錯誤段表示功能表示示例21#includ

23、e ControlCan.hnDeviceType = 6;/ CAN232 nDeviceInd = 0;/ COM1 nCANInd = 0;VCI_ERR_INFO vei;位十進制值功能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設備類型號。DevInd

26、ex設備索引號,比如當只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當為 CAN232時,0 表示要打開的是 COM1,1 表示要打開的是 COM2。)CANIndex第幾路 CAN。pCANS us用來返回值CAN 狀態(tài)的 VCI_CAN_SUS 結構指針。為 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ù)。參數(shù)DevType設備類型號。DevIndex設備索引號,比如當只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當為 CAN232時,0

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

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

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

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

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

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

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

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

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

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

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

39、1; 該組濾波器 2 使能,不能對相應的和代碼寄存器進行寫操作。和代碼寄存器。和代碼寄存器進行寫操作。和代碼寄存器。=0; 該組濾波器 2,可以改變相應的BF1EN=1; 該組濾波器 1 使能,不能對相應的=0; 該組濾波器 1,可以改變相應的注:如果選擇單濾波器模式,該單濾波器與對應的濾波器 1 使能位相關。濾波器 2 使能位在單濾波器模式中不起作用。ata5該組驗收濾波器的優(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ù)DevType設備類型號。DevIndex設備索引號,比如當只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當為 CA

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

43、3) 當設備類型為 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) 當設備類型為 CANET-UDP 時:(5) 當設備類型為CANET-TCP 時:REMOTE_CNT 結構29RefTypeata功能描述0字符串首指針,用來所指定操作的 CANET-TCP 的IP 地址。設置所要操作的CANET-TCP 的IP 地址1長度為 4 個字節(jié),所指定操作的 CANET-TCP 的工作端口。(目標)設置所要操作的CANET-TCP 的工作端口2長度為 4 個字節(jié),本機器地上工作端口。設置本機端口4長度為 4 個字節(jié),本機器TCP 的工作模

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

46、功能描述0字符串首指針,用來所指定操作的 CANETE-UDP的IP 地址。設置所要操作的 CANET-UDP 的IP 地址1長度為 4 個字節(jié),所指定操作的 CANET-UDP 的工作端口。設置所要操作的 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);/設址 memcpy(buf+2,& wri en,2);/設置寫入長度 memset(buf+4,0,8);/設置要寫入的數(shù)據(jù)VCI_SetReference(VCI_USBCAN1,0,0,20,(PVOID)&buf);(6) 當設備類型為 CAN232 時:當RefType=2 時,此時的ata 各個字節(jié)所代表的意義如下:ata0設置哪一組驗收濾波器;共有 4 組:=1 設置第 1 組=2 設置第 2 組=3 設置第 3 組=4 設置第 4 組ata1設置該組驗收濾波器模式,位功能30RefTypeata功能描述1總長度為 1

48、 個字節(jié)0;10Kbps1;20Kbps2;50Kbps3;125Kbps4;250Kbps5;500Kbps6;800Kbps7;1000Kbps更改 CAN 波特率,例如要設置 CAN 的波特率為 10Kbps: BYTE baud=0; VCI_SetReference(VCI_CAN232,0,0,1,(PVOID)&baud);2總長度為 12 個字節(jié),其各個字節(jié)所代表的意義見表后。設置濾波器參數(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;使用時間標識其他;不使用時間標識設置時間標識typedef struct tagRemoteCnt iIndex;DWORD port; HANDLE hCnt;char szip32;REMOTE_CNT;MFORMATB=1 驗收濾波器該組僅用于擴展幀信息。標準幀信息被忽略。=0 驗收濾波器該組僅用于標準幀信息。擴展幀信息被忽略。=1 單驗收濾波器選項使能長濾波器有效。=0 雙驗收濾波器選項使能短濾波器有效。AMODEBata2設置該組

50、驗收濾波器的使能,位功能BF2EN=1 該組濾波器 2 使能,不能對相應的和代碼寄存器進行寫操作。和代碼寄存器。和代碼寄存器進行寫操作。和代碼寄存器。=0 該組濾波器 2,可以改變相應的BF1EN=1 該組濾波器 1 使能,不能對相應的=0 該組濾波器 1,可以改變相應的注:如果選擇單濾波器模式,該單濾波器與對應的濾波器 1 使能位相關。濾波器 2 使能位在單濾波器模式中不起作用。ata3設置該組驗收濾波器的優(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 分別對應要設置的SJA1000 的 ACR0-ACR3 的值;ata8-b 分別對應要設置的SJA1000 的 AMR0-AMR3 的值;(7) 當設備類型為PCI-5010-U/PCI-5020-U/USBCAN-E/ USBCAN-2E 時:31RefTypeata功能描述0指向 DWORD 類型的指針,該 DWORD 變量的值為寫入波特率寄存器BTR 的值。一些標準波特率對應的 BTR

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

53、戶設置TESG1,TESG2 時遵循以下條件:TESG1 280% = 90%,若用TESG1 TESG 2 3戶設置為其他值,USBCAN-E/USBCAN-2E 有可能工作不正常。32 位寄存器BTR 的其他位建議都設置為 0(注意:CAN 網(wǎ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,所以對波特率的設置過此值,否則設置失?。┊斣O備類型為 USBCAN-E/ USBCAN-2E 時,必須在調用VCI_InitCan 之前調用本函數(shù)在這里設置通訊的波特率。1指向

55、VCI_FILTER_RECORD 結構的指針填充CAN 濾波器的濾波表格(每添加一條調用本函數(shù)一次)2NULL,可忽略按濾波表格中的設置啟動濾波2.4.9.描述VCI_GetReceiveNum此函數(shù)用以獲取指定接收緩沖區(qū)中接收到但尚未被的幀數(shù)。參數(shù)DevType設備類型號。DevIndex設備索引號,比如當只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當為 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設備類型號。DevIndex設備索引號,比如當只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0

57、或 1。(注:當為 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設備類型號。DevIndex設備索引號,比如當只有一個 PCI5121 時,索引號為 0,有兩個時可以為 0 或 1。(注:當為 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(打開設備失敗!), _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(初始化設備失敗!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;dwRel = VCI_StartCAN(nDeviceType, nDeviceInd, nCANInd); if (dwRel = SUS_ERR)VCI_CloseDevice(nDeviceType, nDeviceInd); MessageBox(_T(啟動設備失敗!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;DWORD stdcall VCI_StartC

溫馨提示

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

評論

0/150

提交評論