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) { } }
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]; } }
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; }
// Прием одиночных данный без запроса, например 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); }
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(); } }
void OnTxComplete(N_Message nmsg) { waitTx.Set(); }