can-bus接口函数库使用手册_第1页
can-bus接口函数库使用手册_第2页
can-bus接口函数库使用手册_第3页
can-bus接口函数库使用手册_第4页
can-bus接口函数库使用手册_第5页
免费预览已结束,剩余32页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2011CAN-bus 接口函数库使用手册 V1.0-爱泰电子目录接口函数库说明及其使用3接口卡设备类型定义3错误码定义3函数库中的数据结构定义31.3.1.1.3.2.1.3.3.1.3.4.1.3.5.VCI_BOARD_INFO3VCI_CAN_OBJ5VCI_CAN_SUS6VCI_ERR_INFO7VCI_INIT_CONFIG71.4接口库函数说明91.4.1.1.4.2.1.4.3.1.4.4.1.4.5.1.4.6.1.4.7.1.4.8.1.4.9.1.4.10.1.4.11.1.4.12.1.4.13.1.4.14.VCI_OpenDevice9VCI_CloseDevic

2、e10VCI_InitCan10VCI_ReadBoardInfo15VCI_ReadErrInfo.16VCI_ReadCanSus22VCI_GetReference23VCI_SetReference.25VCI_GetReceiveNum28VCI_ClearBuffer28VCI_StartCAN29VCI_ResetCAN31VCI_Transmit31VCI_Receive32接口库函数使用方法33VC 调用动态库的方法34VB 调用动态库的方法34接口库函数使用流程35LINUX 下动态库的使用37驱动程序的安装37USBCAN 驱动的安装37动态库的安装37动态库的调用及编译

3、3721.1.1接口函数库说明及其使用接口卡设备类型定义接口卡的类型定义如下:1.2错误码定义1.3函数库中的数据结构定义1.3.1. VCI_BOARD_INFO3名称值描述ERR_CAN_OVERFLOW0 x00000001CAN控制器 FIFO 溢出ERR_CAN_ERRALARM0 x00000002CAN 控制器错误ERR_CAN_PASSIVE0 x00000004CAN 控制器消极错误ERR_CAN_LOSE0 x00000008CAN 控制器仲裁丢失ERR_CAN_BUSERR0 x00000010CAN 控制器总线错误ERR_DEVICEOPENED0 x00000100设

4、备已经打开ERR_DEVICEOPEN0 x00000200打开设备错误ERR_DEVICENOTOPEN0 x00000400设备没有打开ERR_BUFFEROVERFLOW0 x00000800缓冲区溢出ERR_DEVICENOTEXIST0 x00001000此设备不存在ERR_LOADKERNELDLL0 x00002000装载动态库失败ERR_CMDFAILED0 x00004000执行命令失败错误码ERR_BUFFERCREATE0 x00008000内存ERR_CANETE_PORTOPENED0 x00010000端口已经被打开ERR_CANETE_INDEXUSED0 x00

5、020000设备索引号已经被占用设备名称设备类型号USBCAN13USBCAN24描述:VCI_BOARD_INFO 结构体包含 CAN VCI_ReadBoardInfo 函数中被填充。typedef struct _VCI_BOARD_INFO 系列接口卡的设备信息。结构体将在USHORT USHORT USHORT USHORT USHORT BYTE CHAR CHARUSHORThw_Ve fw_Ve dr_Ver in_Ve irq_Num;can_Num;str_Serial_Num20; str_hw_Type40;4; VCI_BOARD_INFO, *PVCI_BOARD_

6、INFO;成员 :hw_Ver硬件版本号,用16进制表示。比如0 x0100表示V1.00。fw_Ver固件版本号,用 16 进制表示。dr_Ver驱动程序版本号,用 16 进制表示。in_Ver接口库版本号,用 16 进制表示。irq_Num板卡所使用的中断号。can_Num表示有几路 CAN 通道。str_Serial_Num此板卡的序列号。str_hw_Type硬件类型,比如“USBCAN V1.00”(注意:包括字符串结束符0)。系统保留。41.3.2. VCI_CAN_OBJ描述 :VCI_CAN_OBJ 结构体在VCI_Transmit 和VCI_Receive 函数中被用来传送C

7、AN信息帧。typedef struct _VCI_CAN_OBJ U UBYTE BYTE BYTE BYTE BYTE BYTEBYTEID;TimeS TimeFlag;SendType;RemoteFlag; ExternFlag; DataLen; Data8;3; VCI_CAN_OBJ, *PVCI_CAN_OBJ;成员 :ID报文 ID。TimeSt接收到信息帧时的时间标识,从 CAN 控制器初始化开始计时。TimeFlag是否使用时间标识,为 1 时 TimeSt为接收帧时有意义。SendType有效,TimeFlag 和 TimeSt只在此帧发送帧类型,=0时为正常发送,=

8、1时为单次发送,=2时为自发自收,=3时为单次自发自收,只在此帧为发送帧时有意义。RemoteFlag是否是ExternFlag帧。是否是扩展帧。DataLen数据长度(AccCodeAccCode 对应 SJA1000 中的四个寄存器 ACR0,ACR1,ACR2,ACR3,其中高字节对应 ACR0,低字节对应 ACR3; AccMask 对应 SJA1000 中的四个寄存器 AMR0,AMR1,AMR2,AMR3,其中高字节对应 AMR0,低字节对应 AMR3。(请看表后说明)pInitConfig-AccMaskpInitConfig-保留pInitConfig-Filter滤波方式,1

9、 表示单滤波,0 表示双滤波pInitConfig-Timing0定时器 0pInitConfig-Timing1定时器 1pInitConfig-Mode模式,0 表示正常模式,1 表示只听模式RTR 对应 VCI_CAN_OBJ 中的 RemoteFlag当滤波方式为单滤波,接收帧为扩展帧时:当滤波方式为双滤波,接收帧为标准帧时:12当滤波方式为双滤波,接收帧为扩展帧时:13返回值:为 1 表示操作成功,0 表示操作失败。示例:#include ControlCan.hnDeviceType = 4;nDeviceInd = 0;nCANInd = 0;n= 0;VCI_INIT_CONF

10、IG vic;DWORD dwRel;dwRel = VCI_OpenDevice(nDeviceType, nDeviceInd, n);14if (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(nDeviceType, nDeviceInd);MessageBox(_T(初始化设备

11、失败!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;1.4.4. VCI_ReadBoardInfo描述:此函数用以获取设备信息。DWORD stdcall VCI_ReadBoardInfo(DWORD DevType, DWORD DevIndex, PVCI_BOARD_INFO pInfo);参数:DevType设备类型号。DevIndex设备索引号,比如当只有一个 USBCAN 时,索引号为 0,有两个时可以为 0或 1。pInfo用来设备信息的 VCI_BOARD_INFO 结构指针。返回值:为 1 表示操作成功,0 表示操作失败。

12、示例#include ControlCan.hnDeviceType = 4;nDeviceInd = 0;/ USBCAN215nCANInd = 0; VCI_INIT_CONFIG vic; VCI_BOARD_INFO vbi;DWORD dwRel;bRel = VCI_ReadBoardInfo(nDeviceType, nDeviceInd, nCANInd, &vbi);1.4.5. VCI_ReadErrInfo描述:此函数用以获取最后一次错误信息。DWORD stdcallVCI_ReadErrInfo(DWORDDevType,DWORD DWORD CANIndex,

13、PVCI_ERR_INFO pErrInfo);参数:DevIndex,DevType设备类型号。DevIndex设备索引号,比如当只有一个 USBCAN 时,索引号为 0,有两个时可以为 0或 1。CANIndex第几路 CAN。 (注:当要pErrInfo设备错误的时候,此参数应该设为1。)用来错误信息的VCI_ERR_INFO结构指针。pErrInfo-ErrCode可能为下列各个错误码的多种组合之一:16ErrCodePassive_ErrDataArLost_ErrData错误描述0 x0100无无设备已经打开0 x0200无无打开设备错误0 x0400无无设备没有打开0 x0800

14、无无缓冲区溢出0 x1000无无此设备不存在0 x2000无无装载动态库失败0 x4000无无表示为执行命令失败错误返回值:为 1 表示操作成功,0 表示操作失败。备注:当(PErrInfoErrCode&0 x0004)=0 x0004 时,存在 CAN 控制器消极错误。PErrInfoPassive_ErrData0错误代码捕捉位功能表示错误代码类型功能说明错误属性bit5 =0; 表示发送时发生的错误。=1; 表示接收时发生的错误。错误段表示功能说明17bit4bit 3bit 2bit 1bit 0功能位 ECC.7位 ECC.6功能00位错01格式错10填充错11其它错误Bit7Bi

15、t6Bit5Bit4Bit3Bit2Bit1Bit0错误代码类型错误属性错误段表示0 x8000无内存0 x0001无无CAN 控制器FIFO 溢出0 x0002无无CAN 控制器错误0 x0004有,具体值见表后无CAN 控制器消极错误0 x0008无有,具体值见表后CAN 控制器仲裁丢失0 x0010无无CAN 控制器总线错误PErrInfo-Passive_ErrData1 表示接收错误计数器PErrInfo-Passive_ErrData2 表示发送错误计数器当(PErrInfo-ErrCode&0 x0008)=0 x0008 时,存在 CAN 控制器仲裁丢失错误。PErrInfo-

16、ArLost_ErrData 仲裁丢失代码捕捉位功能表示帧开始0ID.28-ID.2100110ID.20-ID.1800100SRTR 位00101IDE 位00111ID.17-ID.1301111ID.12-ID.501110ID.4-ID.001100RTR 位01101保留位 101001保留位 001011数据长度代码01010数据区01000CRC 序列11000CRC 定义符11001应答通道11011应答定义符11010帧结束10010中止10001活动错误标志10110消极错误标志10011支配(控制)位误差10111错误定义符11100溢出标志错误段表示功能表示19位十进

17、制值功能ALC.4ALC.3ALC.2ALC.1ALC.0000000仲裁丢失在识别码的 bit1000011仲裁丢失在识别码的 bit2000102仲裁丢失在识别码的 bit3000113仲裁丢失在识别码的 bit4001004仲裁丢失在识别码的 bit5001015仲裁丢失在识别码的 bit6001106仲裁丢失在识别码的 bit7001117仲裁丢失在识别码的 bit8010008仲裁丢失在识别码的 bit9010019仲裁丢失在识别码的 bit100101010仲裁丢失在识别码的 bit11Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0错误段表示200101111仲裁

18、丢失在SRTR 位0110012仲裁丢失在IDE 位0110113仲裁丢失在识别码的 bit120111014仲裁丢失在识别码的 bit130111115仲裁丢失在识别码的 bit141000016仲裁丢失在 识 别 码 的 bit151000117仲裁丢失在 识 别 码 的 bit161001018仲裁丢失在 识 别 码 的 bit171001119仲裁丢失在 识 别 码 的 bit181010020仲裁丢失在 识 别 码 的 bit191010121仲裁丢失在 识 别 码 的示例21bit201011022仲裁丢失在 识 别 码 的 bit211011123仲裁丢失在 识 别 码 的 bi

19、t221100024仲裁丢失在 识 别 码 的 bit231100125仲裁丢失在 识 别 码 的 bit241101026仲裁丢失在 识 别 码 的 bit251101127仲裁丢失在 识 别 码 的 bit261110028仲裁丢失在 识 别 码 的 bit271110129仲裁丢失在 识 别 码 的 bit281111030仲裁丢失在 识 别 码 的 bit291111131仲裁丢失在 ERTR 位#include ControlCan.hnDeviceType = 4;nDeviceInd = 0;nCANInd = 0; VCI_ERR_INFO vei;DWORD dwRel;/

20、USBCAN/ 第一个设备bRel = VCI_ReadErrInfo(nDeviceType, nDeviceInd, nCANInd, &vei);1.4.6. VCI_ReadCanS描述:us此函数用以获取 CAN 状态。DWORD stdcall VCI_ReadCanSus(DWORD DevType, DWORDDevIndex,DWORD CANIndex, PVCI_CAN_S参数:DevType设备类型号。DevIndexUS pCANSus);设备索引号,比如当只有一个 PCI5121 时,索引号为 0,有两个时可以为 0 或1。CANIndex第几路 CAN。pCANS

21、用来usCAN 状态的 VCI_CAN_SUS 结构指针。返回值:为 1 表示操作成功,0 表示操作失败。示例:#include ControlCan.hnDeviceType = 4;nDeviceInd = 0;nCANInd = 0;22VCI_INIT_CONFIG vic;VCI_CAN_SDWORD dwRel;US vcs;bRel = VCI_ReadCANSus(nDeviceType, nDeviceInd, nCANInd, &vcs);1.4.7. VCI_GetReference描述:此函数用以获取设备的相应参数。DWORD stdcall VCI_GetRefere

22、nce(DWORD DevType, DWORD DevIndex, DWORD CANIndex, DWORD RefType, PVOID pData);参数:DevType设备类型号。DevIndex设备索引号,只有一个设备时,索引号为 0,有两个时可以为 0 或 1。CANIndex第几路 CAN。RefType参数类型。pData用来参数有关数据缓冲区地址首指针。返回值:为 1 表示操作成功,0 表示操作失败。备注:(1) 当设备类型为 USBCAN1,USBCAN2 时:23RefTypepData功能描述1总长度 1 个字节,当作为输入参数时,表示为所要 的 CAN 控制器的控制

23、读 CAN 控制器的指定控制寄存器的值。例如对 USBCAN1:BYTE val=0;VCI_GetReference (VCI_USBCAN1,0,0,1,(PVOID)&val);当 RefType=1 时,此时返回的 pData 各个字节所代表的意义如下:pData0信息保留pData1表示 CAN 控制器 BTR0 的值;pData2表示 CAN 控制器 BTR1 的值;pData3该组验收滤波器模式,位功能MFORMATB =1; 验收滤波器该组仅用于扩展帧信息。标准帧信息被忽略。=0; 验收滤波器该组仅用于标准帧信息。扩展帧信息被忽略。AMODEB=1; 单验收滤波器选项使能长滤波

24、器有效。=0; 双验收滤波器选项使能短滤波器有效。pData4该组验收滤波器的使能,位功能BF2EN =1; 该组滤波器 2 使能,不能对相应的和代码寄存器进行写操作。=0; 该组滤波器 2,可以改变相应的和代码寄存器。BF1EN =1; 该组滤波器 1 使能,不能对相应的和代码寄存器进行写操作。=0; 该组滤波器 1,可以改变相应的和代码寄存器。注:如果选择单滤波器模式,该单滤波器与对应的滤波器 1 使能位相关。滤波器 2能位在单滤波器模式中不起作用。使pData5该组验收滤波器的优先级,位功能24SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2PRIO

25、BF1PRIOSUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2ENBF1ENSUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0MFORMATBAMODEB寄存器的地址。当作为输出参数时,表示为 CAN 控制器的控制寄存器的值。如果此函数调用成功,则在 val 中返回寄存器的值。BF2PRIO =1; 该组滤波器 2 优先级高,如果信息通过该组滤波器 2,立即产生接收中断。=0;该组滤波器2优先级低,如果FIFO 级超过接收中断级滤波器,产生接收中断。BF1PRIO =1; 该组滤波器 1 优先级高,如果信息通过该组滤波器 1,

26、立即产生接收中断。=0;该组滤波器 1 优先级低,如果 FIFO收中断。级超过接收中断级滤波器,产生接pData69表示该组滤波器 ACR 的值。 pDataad表示该组滤波器 AMR 的值。示例#include ControlCan.hnDeviceType = 4;nDeviceInd = 0;nCANInd = 0; BYTE info14; DWORD dwRel;info0 = 1;bRel = VCI_GetReference(nDeviceType, nDeviceInd, nCANInd, 1, (PVOID)info);1.4.8. VCI_SetReference描述:此函

27、数用以设置设备的相应参数,主要处理不同设备的特定操作。DWORD stdcall VCI_SetReference(DWORD DevType, DWORD DevIndex, DWORD CANIndex, DWORD RefType, PVOID pData);参数:DevType设备类型号。DevIndex设备索引号,只有一个设备时,索引号为 0,有两个时可以为 0 或 1。25CANIndex第几路 CAN。RefType参数类型。pData用来参数有关数据缓冲区地址首指针。返回值:为 1 表示操作成功,0 表示操作失败。备注VCI_SetReference 和VCI_GetRefer

28、ence 这两个函数是用来针对各个不同设备的一些特定操作的。函数中的 PVOID 型参数 pData 随不同设备的不同操作而具有不同的意义。当设备类型为 USBCAN1,USBCAN2 时:当 RefType=2 时,此时的 pData 各个字节所代表的意义如下:pData0设置哪一组验收滤波器;共有 4 组:=1 设置第1组=2=3=4设置第 2 组设置第 3 组设置第 4 组pData1设置该组验收滤波器模式,位功能MFORMATB =1 验收滤波器该组仅用于扩展帧信息。标准帧信息被忽略。=0 验收滤波器该组仅用于标准帧信息。扩展帧信息被忽略。AMODEB=1 单验收滤波器选项使能长滤波器

29、有效。26SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0MFORMATBAMODEBRefTypepData功能描述1总长度为 2 个字节,pData0 表示 CAN 控制器的控制寄存器的地址, pData1 表示要写入的数值。写 CAN 控制器的指定控制寄存器=0 双验收滤波器选项使能短滤波器有效。pData2设置该组验收滤波器的使能,位功能BF2EN =1 该组滤波器 2 使能,不能对相应的和代码寄存器进行写操作。=0 该组滤波器 2,可以改变相应的和代码寄存器。BF1EN =1 该组滤波器 1 使能,不能对相应的和代码寄存器进行写操作。=0 该组滤波器

30、1,可以改变相应的和代码寄存器。注:如果选择单滤波器模式,该单滤波器与对应的滤波器 1 使能位相关。滤波器 2能位在单滤波器模式中不起作用。使pData3设置该组验收滤波器的优先级,位功能BF2PRIO =1 该组滤波器 2 优先级高,如果信息通过该组滤波器 2 ,立即产生接收中断。=0 该组滤波器 2 优先级低,如果 FIFO 级超过接收中断级滤波器,产生接收中断。BF1PRIO =1 该组滤波器 1 优先级高,如果信息通过该组滤波器 1 ,立即产生接收中断。=0收中断。该组滤波器 1 优先级低,如果 FIFO 级超过接收中断级滤波器,产生接pData4-7pData8-b分别对应要设置的

31、SJA1000 的 ACR0-ACR3 的值;分别对应要设置的 SJA1000 的 AMR0-AMR3 的值;示例:#include ControlCan.hnDeviceType = 4;27SUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2PRIOBF1PRIOSUS.7SUS.6SUS.5SUS.4SUS.3SUS.2SUS.1SUS.0BF2ENBF1ENnDeviceInd = 0;nCANInd = 0; BYTE baud; DWORD dwRel;baud = 0;bRel = VCI_SetReference(nDeviceType, nD

32、eviceInd, nCANInd, 1, (PVOID)baud);1.4.9. VCI_GetReceiveNum描述:此函数用以获取指定接收缓冲区中接收到但尚未被的帧数。ULONG stdcall VCI_GetReceiveNum(DWORD DevType, DWORD DevIndex, DWORD CANIndex);参数:DevType设备类型号。DevIndex设备索引号,当只有一个设备时,索引号为 0,有两个时可以为 0 或 1。CANIndex第几路 CAN。返回值:返回尚未被的帧数。示例:#include ControlCan.hnDeviceType = 4;nDev

33、iceInd = 0;nCANInd = 0; DWORD dwRel;bRel = VCI_GetReceiveNum(nDeviceType, nDeviceInd, nCANInd);1.4.10. VCI_ClearBuffer28描述:此函数用以清空指定缓冲区。DWORD stdcallVCI_ClearBuffer(DWORDDevType,DWORDDevIndex, DWORD CANIndex);参数:DevType设备类型号。DevIndex设备索引号,当只有一个设备时,索引号为 0,有两个时可以为 0 或 1。CANIndex第几路 CAN。返回值:为 1 表示操作成功,

34、0 表示操作失败。示例:#include ControlCan.hnDeviceType = 4;nDeviceInd = 0;nCANInd = 0; DWORD dwRel;bRel = VCI_ClearBuffer(nDeviceType, nDeviceInd, nCANInd);1.4.11. VCI_StartCAN描述:此函数用以启动 CAN。DWORD stdcall VCI_StartCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);参数:DevType设备类型号。DevIndex29设备索引号,只有一个设备时,索引号为

35、0,有两个时可以为 0 或 1。CANIndex第几路 CAN。返回值:为 1 表示操作成功,0 表示操作失败。示例:#include ControlCan.hnDeviceType = 4;nDeviceInd = 0;nCANInd = 0;n=0;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;dw

36、Rel = VCI_InitCAN(nDeviceType, nDeviceInd, nCANInd, &vic);if (dwRel = SUS_ERR)VCI_CloseDevice(nDeviceType, nDeviceInd);MessageBox(_T(初始化设备失败!), _T(警告), MB_OK|MB_ICONQUESTION); return FALSE;dwRel = VCI_StartCAN(nDeviceType, nDeviceInd, nCANInd);if (dwRel = SUS_ERR)VCI_CloseDevice(nDeviceType, nDevice

37、Ind);MessageBox(_T(启动设备失败!), _T(警告), MB_OK|MB_ICONQUESTION);30return FALSE;1.4.12. VCI_ResetCAN描述:此函数用以复位 CAN。DWORD stdcall VCI_ResetCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex);参数:DevType设备类型号。DevIndex设备索引号,只有一个设备时,索引号为 0,有两个时可以为 0 或 1。CANIndex第几路 CAN。返回值:为 1 表示操作成功,0 表示操作失败。(注:在 CANET 中无此函数)

38、示例:#include ControlCan.hnDeviceType = 4;nDeviceInd = 0;nCANInd = 0; DWORD dwRel;bRel = VCI_ResetCAN(nDeviceType, nDeviceInd, nCANInd);1.4.13. VCI_Transmit描述:返回实际发送的帧数。ULONG stdcall VCI_Transmit(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pSend, ULONG Len);参数:31DevType设备类型号。DevIndex设备

39、索引号,只有一个设备时,索引号为 0,有两个时可以为 0 或 1。CANIndex第几路 CAN。pSend要发送的数据帧数组的首指针。Len要发送的数据帧数组的长度。返回值:返回实际发送的帧数。示例#include ControlCan.h #include nDeviceType = 4;nDeviceInd = 0;nCANInd = 0; DWORD dwRel;VCI_CAN_OBJ vco;ZeroMemory(&vco, sizeof (VCI_CAN_OBJ); vco.ID = 0 x00000000;vco.SendType = 0;vco.RemoteFlag = 0;v

40、co.ExternFlag = 0;vco.DataLen = 8;lRet = VCI_Transmit(nDeviceType, nDeviceInd, nCANInd, &vco, i);1.4.14. VCI_Receive描述:此函数从指定的设备数据。32ULONG stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORDCANIndex, PVCI_CAN_OBJ pReceive, ULONG Len,参数:DevType设备类型号。DevIndexWaitTime=1);设备索引号,只有一个设备时,索引号为 0,有两个时可

41、以为 0 或 1。CANIndex第几路 CAN。pReceive用来接收的数据帧数组的首指针。Len用来接收的数据帧数组的长度。WaitTime等待超时时间,以毫秒为。返回值:返回实际到的帧数。如果返回值为 0 xFF,则表示数据失败,有错误发生,请调用 VCI_ReadErrInfo 函数来获取错误码。示例:#include ControlCan.h#include nDeviceType = 4;nDeviceInd = 0;nCANInd = 0;DWORD dwRel; VCI_CAN_OBJ vco100;lRet = VCI_Receive(nDeviceType, nDevic

42、eInd, nCANInd, vco, 100, 400);1.5 接口库函数使用方法33首先,把库函数文件都放在工作目录下。库函数文件总共有三个文件: ControlCAN.h、ControlCAN.lib、ControlCAN.dll 和一个文件夹 kerneldlls。1.5.1. VC调用动态库的方法在扩展名为.CPP的文件中包含ControlCAN.h头文件。如:#include “ControlCAN.h”在工程的连接器设置中连接到ControlCAN.lib文件。如:在 VC7 环境下,在项目属性页里的配置属性连接器输入附加依赖项中添加 ControlCAN.lib1.5.2. VB调用动态库的方法通过以下方法进行后就可以调用了。语法:Public | Private Declare Function name Lib libname Alias aliasname (arglist) As typeDeclare 语句的语法包含下面部分:Public(可选)用于在所有模块中的所有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论