示例#1
0
 /// <summary>
 ///     断开CAN连接
 /// </summary>
 public bool DisConnectCan()
 {
     if (!connected)
     {
         return(connected);
     }
     if (VCI_CloseDevice(m_devtype, m_devind) != 1)
     {
         return(connected);
     }
     connected = false;
     CanConnectStats?.Invoke(connected);
     return(connected);
 }
示例#2
0
        /// <summary>
        //CAN连接
        /// </summary>
        public unsafe bool ConncetCan()
        {
            if (connected)
            {
                return(connected);
            }
            var config = new VCI_INIT_CONFIG
            {
                AccCode = Convert.ToUInt32("0x00000000", 16),
                AccMask = Convert.ToUInt32("0xFFFFFFFF", 16),
                Timing0 = Convert.ToByte("0x00", 16),
                Timing1 = Convert.ToByte("0x1C", 16),
                Filter  = Convert.ToByte(1),
                Mode    = Convert.ToByte(0)
            };

            if (VCI_OpenDevice(m_devtype, m_devind, 0) == 0)
            {
                MessageBox.Show("CAN卡未正常连接,请连接CAN卡", "提示");
            }
            else
            {
                var baud = Convert.ToUInt32("0x060007", 16);
                if (VCI_SetReference(m_devtype, m_devind, m_canind, 0, (byte *)&baud) != STATUS_OK)
                {
                    MessageBox.Show("设置波特率错误,打开设备失败!", "错误");
                    VCI_CloseDevice(m_devtype, m_devind);
                }
                else
                {
                    VCI_InitCAN(m_devtype, m_devind, m_canind, ref config);
                    var open = VCI_StartCAN(m_devtype, m_devind, m_canind);
                    if (open == 1)
                    {
                        connected = true;
                    }

                    if (open == 0)
                    {
                        connected = false;
                        VCI_CloseDevice(m_devtype, m_devind);
                    }
                    CanConnectStats?.Invoke(connected);
                }
            }
            return(connected);
        }