// update public void Update(canTimeStamp ts) { if (count != 0) { int tmp = Calculate(ts, LastTimeStamp);//, ts); // check if (count > 2) { int cur = MilliSec; if (cur > 20 || tmp > 20) { int diff = Math.Abs(tmp - cur); double diffPrcnt = (double)diff / (double)cur; double maxDiff = 0.2; if (diffPrcnt > maxDiff) // 20% { count = 0; summ = 0; return; } } } summ += tmp; } LastTimeStamp = ts; count++; }
// calculate public static int Calculate(canTimeStamp ts1, canTimeStamp ts2) { int ts = ts1.TimeStamp - ts2.TimeStamp; if (ts < 0) { ts += canTimeStamp.MaxTimeStamp; } return(ts); }
// constructor public canMessage2(int id, bool is_29bit, byte b0, byte b1, byte b2, byte b3, byte b4, byte b5, byte b6, byte b7) { Data = new byte[8]; Data[0] = b0; Data[1] = b1; Data[2] = b2; Data[3] = b3; Data[4] = b4; Data[5] = b5; Data[6] = b6; Data[7] = b7; Id = new canMessageId(id, Data.Length, is_29bit); TimeStamp = new canTimeStamp(0); }
// constructor public canMessage2(int id = 0, bool is29bit = false, byte[] data = null, int ts = 0) { // data if (data != null && data.Length > 0) { Data = new byte[data.Length]; data.CopyTo(Data, 0); } else { Data = null; } // id Id = new canMessageId(id, Data == null ? 0 : data.Length, is29bit); // timestamp TimeStamp = new canTimeStamp(ts); }
// constructor public canMessage2(canMessageId id, byte[] data = null, int ts = 0) { Id = id; // data if (data != null && data.Length > 0) { Data = new byte[data.Length]; data.CopyTo(Data, 0); } else { Data = null; } // todo: compare data len and DLC // ts TimeStamp = new canTimeStamp(ts); }
// public long unix_ts = 0; // constructor public canMessage2() { Id = canMessageId.Empty; Data = null; TimeStamp = new canTimeStamp(0); }
// clear public void Clear() { count = 0; summ = 0; LastTimeStamp = null; }
// contructor public canPeriod(canTimeStamp ts) { Clear(); Update(ts); }