zoukankan      html  css  js  c++  java
  • 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);//读取错误信息

    //开始解析

    }

  • 相关阅读:
    ObjectDataSource用法之六(刪除)
    ObjectDataSourc用法之七(新增)
    C# 装箱和拆箱
    Android SD卡中压缩包解压(ZIP文件)
    Android 调用系统的拨号服务实现 电话拨打功能
    Android 判断SD卡存不存在
    android中IdleHandler的使用
    android使用遥控器模拟鼠标拖拽操作
    Android SD卡 文件或目录拷贝、复制、粘贴
    C#在线获取歌词(转)
  • 原文地址:https://www.cnblogs.com/judes/p/6400600.html
Copyright © 2011-2022 走看看