public void updateSpdCadEvent(object sender, EventArgs e) { spdStream evtFrom = (spdStream)sender; // set the wheelSize from this sender ... evtFrom.wheelSize = wheelSize; speed = evtFrom.spdInst; cad = evtFrom.cadInst; hasSpdCad = true; TCXDistanceCount += evtFrom.publicSpdCnt; if (ptrSPwr >= 0) { if (speed >= 0) { qSPDQue.Enqueue(speed); } if (qSPDQue.Count > 4) { qSPDQue.Dequeue(); } hasPwr = false; instPower = speedPowerCalcs.getSpower(ptrSPwr, qSPDQue.Average()); if (_TCXDataTimer.Enabled) { powerPoints pp = new powerPoints(); pp.instPwr = instPower; pp.time = DateTime.Now; qPWRQue.Enqueue(pp); /* * This was using time filtering, going to try doing this with segment averages * * * while (qPWRQue.Peek().time < DateTime.Now.Subtract(TimeSpan.FromSeconds((double)avgPowerTime))) * qPWRQue.Dequeue(); */ avgPower = 0; if (qPWRQue.Count > 0) { avgPower = (int)qPWRQue.Average(s => s.instPwr); } } return; } }
public void updatePwrEvent(object sender, EventArgs e) { powerStream evtFrom = (powerStream)sender; if (ptrSPwr >= 0) { hasPwr = false; return; } powerPoints pp = new powerPoints(); pp.instPwr = evtFrom.powerInst; pp.time = DateTime.Now; if (avgPowerTime > 0) { qPWRSmoothQue.Enqueue(pp); while (qPWRSmoothQue.Peek().time < DateTime.Now.Subtract(TimeSpan.FromSeconds((double)avgPowerTime))) { qPWRSmoothQue.Dequeue(); } } if (qPWRQue.Count > 0 && avgPowerTime > 0) { instPower = (int)qPWRSmoothQue.Average(s => s.instPwr); } else { instPower = evtFrom.powerInst; } if (_TCXDataTimer.Enabled) { qPWRQue.Enqueue(pp); avgPower = 0; if (qPWRQue.Count > 0) { avgPower = (int)qPWRQue.Average(s => s.instPwr); } } hasPwr = true; }