zoukankan      html  css  js  c++  java
  • CAN通信要注意的问题

    CAN通信要注意的问题主要有:

    1.参数配置

    在初始化、启动、发送、接收 CAN信息时都要对CAN卡进行参数配置:

    (1)CAN卡的选择,我用到的是周立功的PCIE—9221,也就是DevType设备类型的选择。

    (2)设备索引号DevIndex,比如只有一个PCIE-9221时。索引号为0,再插入1个时索引号为1。注意如何区分是否为两个CAN卡,有时候一张CAN卡上会有多个CAN接口,此时不能把多个接口看做是多张CAN卡,多个接口是多路CAN。

    (3)第几路CAN(CANIndex),对应的是CAN的通道号,CAN0为0,CAN1为1,依次类推。

    VCI_OpenDevice(nDeviType,nDeviceInd,nReserved);
    VCI_InitCAN(nDeviceType,nDeviceInd,nCANInd,&vic);

     2.注意定义初始化CAN的数据类型的设置

            public struct VCI_INIT_CONFIG
            {
                public UInt32 AccCode;//验收码
                public UInt32 AccMask; //屏蔽码
                public UInt32 Reserved;
                public byte Filter; //滤波方式
                public byte Timing0;//定时器
                public byte Timing1;//定时器
                public byte Mode;//模式
            }

    对定时器的设置就是对波特率的设置,具体设置可对应下表。验收码和屏蔽码可以不设置。

    VCI_INIT_CONFIG config = new VCI_INIT_CONFIG();
                    config.AccCode = System.Convert.ToUInt32("0x" + "00000000", 16);
                    config.AccMask = System.Convert.ToUInt32("0x" + "FFFFFFFF", 16);
                    config.Timing0 = System.Convert.ToByte("0x" + "01", 16);
                    config.Timing1 = System.Convert.ToByte("0x" + "1C", 16); ;
                    config.Filter = 0;// 单滤波
                    config.Mode = 0;//正常模式

    3.注意区分标准帧和扩展帧,数据帧和远程帧,还有发送方式。

      

    unsafe public struct VCI_CAN_OBJ //使用不安全代码
    {
    public uint ID;
    public uint TimeStamp;
    public byte TimeFlag;
    public byte SendType;
    public byte RemoteFlag;//是否是远程帧
    public byte ExternFlag;//是否是扩展帧
    public byte DataLen;
    public fixed byte Data[8];
    public fixed byte Reserved[3];
    
    }
    
    VCI_CAN_OBJ sendobj = new VCI_CAN_OBJ();
      sendobj.SendType = System.Convert.ToByte(0);//为0时正常发送,为2时自发自收。
      sendobj.RemoteFlag = 0;//为0时是数据帧,为1时是远程帧
      sendobj.ExternFlag = 1;//为0时是标准帧,为1时是扩展帧
  • 相关阅读:
    虚拟化技术一些概念整理
    更改KVM虚拟机root的密码
    文件作为块设备访问
    KVM虚拟机IO处理过程(二) ----QEMU/KVM I/O 处理过程
    KVM虚拟机IO处理过程(一) ----Guest VM I/O 处理过程
    KVM的初始化过程
    linux删除文件未释放空间问题处理
    cgroup测试存储设备IOPS分配
    数组中的逆序对
    VMware Tools安装方法及解决无法全屏显示问题
  • 原文地址:https://www.cnblogs.com/fuhang/p/7855791.html
Copyright © 2011-2022 走看看