Exemplo n.º 1
0
        void NSend(N_Message nmsg)
        {
            CAN_Message msg = new CAN_Message();

            msg.Ext = false;


            if (nmsg.State == N_State.TX_SEND)
            {
                msg.id      = (uint)(0x600 + nmsg.TA);
                msg.data[0] = (byte)nmsg.MsgType;
                msg.data[1] = (byte)nmsg.Index;
                msg.data[2] = (byte)(nmsg.Index >> 8);
                msg.data[3] = (byte)nmsg.MsgNum;

                msg.data[4] = (byte)nmsg.data[((nmsg.MsgNum + 1) * 4) - 4];
                msg.data[5] = (byte)(nmsg.data[((nmsg.MsgNum + 1) * 4) - 3]);
                msg.data[6] = (byte)(nmsg.data[((nmsg.MsgNum + 1) * 4) - 2]);
                msg.data[7] = (byte)(nmsg.data[((nmsg.MsgNum + 1) * 4) - 1]);
                can.SendMessage(msg);

                nmsg.State = N_State.IDLE;

                rxTimer.Start();
            }
            else if (nmsg.State == N_State.IDLE)
            {
            }
        }
Exemplo n.º 2
0
        public void Set(N_Message nmsg)
        {
            Address = nmsg.TA;

            Data = new short[nmsg.DataLength];
            for (int i = 0; i < nmsg.DataLength; i++)
            {
                Data[i] = nmsg.data[i];
            }
        }
Exemplo n.º 3
0
        public N_Diag(ICanDriver can)
        {
            locker   = new object();
            this.can = can;
            this.can.OnReadMessage += ProcessMessage;

            this.nmsg = new N_Message();
            lstIDs    = new SortedDictionary <uint, int>();

            rxTimer          = new System.Timers.Timer(100);
            rxTimer.Elapsed += RxTimer_Elapsed;
        }
Exemplo n.º 4
0
        // Прием одиночных данный без запроса, например Diag ID
        void OnRxDiagIdComplete(N_Message nmsg)
        {
            //if (cnt == 0)
            //{
            //	//Array.Clear(cfg, 0, cfg.Length);
            //	buf.Clear();
            //}

            //cfg[cnt] = (byte)nmsg.TA;
            //cnt = (cnt >= cfg.Length - 1) ? 0 : cnt + 1;

            //if (!buf.Contains((byte)nmsg.TA))
            //	buf.Add((byte)nmsg.TA);
        }
Exemplo n.º 5
0
        void OnRxComplete(N_Message nmsg)
        {
            if (nmsg.MsgType == N_Types.ecan_profile_fun_read)
            {
                if (nmsg.Result == N_Res.END_OF_COMMUNICATION)
                {
                    buf.Clear();
                    for (int i = 0; i < nmsg.data.Length; i++)
                    {
                        //cfg[i] = nmsg.data[i];
                        buf.Add(nmsg.data[i]);
                    }

                    waitRx.Set();
                }
                else if (nmsg.Result == N_Res.CRC_MISTMATCH_ERROR)
                {
                    buf.Clear();

                    waitRx.Set();
                }
            }
            else if (nmsg.MsgType == N_Types.ecan_diag_value_read && nmsg.Result == N_Res.END_OF_COMMUNICATION)
            {
                int index = Response_IDs.FindIndex((req) => req.DID == nmsg.Index);
                if (index < 0)
                {
                    return;
                }

                Response_IDs[index].DV.Clear();
                for (int i = 0; i < nmsg.MsgNum * 4; i++)
                {
                    Response_IDs[index].DV.Add(nmsg.data[i]);
                }

                waitRx.Set();
            }
        }
Exemplo n.º 6
0
 void OnTxComplete(N_Message nmsg)
 {
     waitTx.Set();
 }