CAN应用接口函数库使用手册V1.0目录1.接口卡设备类型定义 (3)2.错误码定义 (4)3.函数库中的数据结构定义 (5)3.1.VCI_BOARD_INFO (5)3.2.VCI_CAN_OBJ (6)3.3.VCI_CAN_STATUS (7)3.4.VCI_ERR_INFO (8)3.5.VCI_INIT_CONFIG (9)3.6.VCI_RxAcptMask (10)3.7.VCI_RxAcptFilter (11)4.接口库函数说明 (12)4.1.FD_OpenDevice (12)4.2.FD_CloseDevice (13)4.3.FD_InitCan (14)4.4.FD_ReadBoardInfo (15)4.5.FD_GetReceiveNum (16)4.6.FD_ClearBuffer (17)4.7.FD_StartCAN (18)4.8.FD_ResetCAN (19)4.9.FD_Transmit (20)4.10.FD_Receive (21)4.11.FD_RxAcptMaskInit (22)4.12.FD_DisableRxAcptFilter (23)4.13.FD_RxAcptFilterInit (24)4.13.FD_SetOperationMode (25)5.接口库函数使用方法 (26)5.1.VC调用动态库的方法 (26)5.2.VB调用动态库的方法 (26)1.接口卡设备类型定义各个接口卡的类型定义如下:设备名称设备类型号备注USBCAN11第一代USBCAN USBCAN22第二代USBCAN CAN2323待开发PCICAN4待开发2.错误码定义在USBCAN II设备中未启用该功能。
3.函数库中的数据结构定义3.1.VCI_BOARD_INFO描述VCI_BOARD_INFO结构体包含USBCAN II调试器的设备信息。
结构体将在FD_ReadBoardInfo函数中被填充。
typedef struct_VCI_BOARD_INFO{CHAR hw_Type[20];//硬件型号USHORT hw_Version;//硬件版本USHORT fw_Version;//固件版本CHAR BuildDate[20];//固件编译日期CHAR SerialNumber[16];//序列号USHORT Reserved[4];}VCI_BOARD_INFO,*PVCI_BOARD_INFO;成员hw_Type硬件型号,使用ASIIC码表示。
比如USBCAN II。
hw_Version硬件版本号,用16进制表示。
比如0x0100表示V1.00。
fw_Version固件版本号,用16进制表示。
BuildDate固件编译日期,使用ASIIC码表示。
比如Sep72009。
SerialNumber该设备的序列号。
Reserved系统保留。
3.2.VCI_CAN_OBJ描述VCI_CAN_OBJ结构体在FD_Transmit和FD_Receive函数中被用来传送CAN信息帧。
typedef struct_VCI_CAN_OBJ{UINT ID;UINT TimeStamp;BYTE TimeFlag;BYTE SendType;BYTE RemoteFlag;BYTE ExternFlag;BYTE DataLen;BYTE Data[8];BYTE Reserved[3];}VCI_CAN_OBJ,*PVCI_CAN_OBJ;成员ID报文ID。
TimeStamp接收到信息帧时的时间标识,从CAN控制器初始化开始计时。
TimeFlag是否使用时间标识,为1时TimeStamp有效,TimeFlag和TimeStamp只在此帧为接收帧时有意义。
SendType发送帧类型,在USBCAN II设备中未启用该功能。
RemoteFlag是否是远程帧。
ExternFlag是否是扩展帧。
DataLen数据长度(<=8),即Data的长度。
Data报文的数据。
Reserved系统保留。
3.3.VCI_CAN_STATUS描述VCI_CAN_STATUS结构体包含CAN控制器状态信息。
结构体将在FD_ReadCanStatus函数中被填充。
在USBCAN II设备中未启用该功能。
typedef struct_VCI_CAN_STATUS{UCHAR ErrInterrupt;UCHAR regMode;UCHAR regStatus;UCHAR regALCapture;UCHAR regECCapture;UCHAR regEWLimit;UCHAR regRECounter;UCHAR regTECounter;DWORD Reserved;}VCI_CAN_STATUS,*PVCI_CAN_STATUS;成员ErrInterrupt中断记录,读操作会清除。
regModeCAN控制器模式寄存器。
regStatusCAN控制器状态寄存器。
regALCaptureCAN控制器仲裁丢失寄存器。
regECCaptureCAN控制器错误寄存器。
regEWLimitCAN控制器错误警告限制寄存器。
regRECounterCAN控制器接收错误寄存器。
regTECounterCAN控制器发送错误寄存器。
Reserved系统保留。
3.4.VCI_ERR_INFO描述VCI_ERR_INFO结构体用于装载VCI库运行时产生的错误信息。
结构体将在FD_ReadErrInfo函数中被填充。
在USBCAN II设备中未启用该功能。
typedef struct_ERR_INFO{UINT ErrCode;BYTE Passive_ErrData[3];BYTE ArLost_ErrData;}VCI_ERR_INFO,*PVCI_ERR_INFO;成员ErrCode错误码。
Passive_ErrData当产生的错误中有消极错误时表示为消极错误的错误标识数据。
ArLost_ErrData当产生的错误中有仲裁丢失错误时表示为仲裁丢失错误的错误标识数据。
3.5.VCI_INIT_CONFIG描述VCI_INIT_CONFIG结构体定义了初始化CAN的配置。
结构体将在FD_InitCan函数中被填充。
typedef struct_INIT_CONFIG{DWORD AccCode;DWORD AccMask;DWORD Reserved;UCHAR Filter;UINT BaudRate;//波特率选择:10,20,50,125,250,500,800,1000kbpsUCHAR Mode;}VCI_INIT_CONFIG,*PVCI_INIT_CONFIG;成员AccCode验收码,在USBCAN II设备中未启用该功能。
AccMask屏蔽码,在USBCAN II设备中未启用该功能。
Reserved保留,在USBCAN II设备中未启用该功能。
Filter滤波方式,在USBCAN II设备中未启用该功能。
BaudRateCAN总线波特率。
Mode模式。
在USBCAN II设备中未启用该功能。
RxAcptMask3.6.VCI_VCI_RxAcptMask描述VCI_RxAcptMask结构体定义了接收掩码的配置。
结构体将在FD_RxAcptMaskInit函数中被填充。
typedef struct VCI_RxAcptMask{UINT ID;UCHAR M;UCHAR Mide;UCHAR Exide;}RX_MASK,*PRX_MASK;成员ID识符位1=过滤器比较操作包含SIDx位0=过滤器比较操作与SIDx位无关M第几路掩码器Mide标识符接收模式位1=只匹配与过滤器中EXIDE位对应的报文类型(标准或扩展地址);0=如果过滤器匹配则与标准或扩展地址报文匹配(即,如果(过滤器SID)=(报文SID)或(过滤器SID/EID)=(报文SID/EID))Exide扩展标识符位1=过滤器比较操作包含EIDx位0=过滤器比较操作与EIDx位无关_RxAcptFilterVCI_RxAcptFilter3.7.VCI描述VCI_RxAcptMask结构体定义了接收滤波器的配置。
结构体将在FD_RxAcptFilterInit函数中被填充。
typedef struct VCI_RxAcptFilter{UINT ID;UCHAR N;UCHAR Exide;UCHAR MaskSel;}RX_FILTER,*PRX_FILTER;成员ID标识符位1=报文地址位SIDx必须为1才能与过滤器匹配0=报文地址位SIDx必须为0才能与过滤器匹配N第几路滤波器Exide扩展标识符使能位如果MIDE=1:1=只与带有扩展标识符地址的报文匹配0=只与带有标准标识符地址的报文匹配如果MIDE=0:忽略EXIDE位。
MaskSel掩码器选择位3=无屏蔽2=选择接收屏蔽寄存器21=选择接收屏蔽寄存器10=选择接收屏蔽寄存器04.接口库函数说明_OpenDevice4.1.FDFD_OpenDevice描述此函数用以打开设备。
DWORD__stdcall FD_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved);参数DevType设备类型号。
DevIndex设备索引号,比如当只有一个USBCAN II时,索引号为0,有两个时可以为0或1。
(注:当为CAN232时,0表示要打开的是COM1,1表示要打开的是COM2。
)Reserved当设备为CAN232时,此参数表示为用以打开串口的波特率,可以为2400,4800,9600,14400,19200,28800,57600。
当设备为CANETE-E时,此参数表示要打开的本地端口号,建议在5000到40000范围内取值。
当为其他设备时此参数无意义。
返回值为1表示操作成功,0表示操作失败。
_CloseDevice4.2.FDFD_CloseDevice描述此函数用以关闭设备。
DWORD__stdcall FD_CloseDevice(DWORD DevType,DWORD DevIndex);参数DevType设备类型号。
DevIndex设备索引号,比如当只有一个USBCAN II时,索引号为0,有两个时可以为0或1。
(注:当为CAN232时,0表示要打开的是COM1,1表示要打开的是COM2。
)返回值为1表示操作成功,0表示操作失败。
_InitCanFD_InitCan4.3.FD描述此函数用以初始化指定的CAN。
DWORD__stdcall FD_InitCan(DWORD DevType,DWORD DevIndex,DWORD CANIndex, PVCI_INIT_CONFIG pInitConfig);参数DevType设备类型号。