mfc配置CAN通信

mfc配置CAN通信
配置:
把kerneldlls文件夹、ControlCAN.dll、ControlCAN.lib放在工程下面(debug和Release下面,最后需要exe和这些文件在一起);右键工程属性,链接器->输入->附加依赖项,填入./ControlCAN.lib。

查看工程的外部依赖性里面有了controlcan.h就成功了

一、打开can

VCI_INIT_CONFIG init_config;//定义一个初始化can的结构体

memset(&init_config,0,sizeof(VCI_INIT_CONFIG));
init_config.AccMask = 0xffffffff; //屏蔽码,表示全部接接收
init_config.Mode = 0; //正常模式
init_config.Timing0 = 0x00; //定时器0,和波特率有关,1M波特率
init_config.Timing1 = 0x14; //定时器1

VCI_OpenDevice(VCI_USBCAN2,a,0);//打开设备

VCI_InitCAN(VCI_USBCAN2,a,b,&init_config);//初始化can,VCI_USBCAN2=4,a:设备号,b:通道号

VCI_StartCAN(VCI_USBCAN2,a,b);//打开指定通道

二、关闭can

VCI_CloseDevice(VCI_USBCAN2,a);

三、复位can

(VCI_ResetCAN(VCI_USBCAN2,a,b);//复位

VCI_StartCAN(VCI_USBCAN2,a,b);//再打开

四、发送

VCI_CAN_OBJ vco;//数据结构体

VCI_Transmit(VCI_USBCAN2,a,b,&vco,1);//发送

五、接收

VCI_CAN_OBJ frameinfo[100];//接收结构体
VCI_ERR_INFO errinfo;//错误结构体
int buf_frame_lenth = 0;//缓冲区没有被读取的帧数据个数
DWORD rcv_lenth = 0;//接收到的数据
int a ;
int b ;
a = ((CComboBox*)can_this->GetDlgItem(IDC_COMBO10))->GetCurSel();//设备号
b = ((CComboBox*)can_this->GetDlgItem(IDC_COMBO11))->GetCurSel();//通道号
while (can_this->ISOPEN)
{
Sleep(100);
buf_frame_lenth = VCI_GetReceiveNum(VCI_USBCAN2,a,b);//查看缓冲区有多少帧数据
if(buf_frame_lenth != 0)//如果缓冲区有未被读取的数据,开始读数据
{
rcv_lenth = VCI_Receive(VCI_USBCAN2,a,b,frameinfo,100,20);//接收数据
if(rcv_lenth == 0xFFFFFFFF)//读取错误
  VCI_ReadErrInfo(VCI_USBCAN2,a,b,&errinfo);//读取错误信息

//开始解析
}

转载自:https://www.cnblogs.com/judes/p/6400600.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值