/// <summary> /// Calculates moving average of the current input channel. /// </summary> public double MovAvg(int pointCount, double cnlVal) { MovAvgItem movAvgItem = GetOrAddMovAvgItem(CnlNum, pointCount); movAvgItem.Append(cnlVal); return(movAvgItem.Avg); }
/// <summary> /// Adds a new or gets an existing MovAvgItem. /// </summary> public MovAvgItem GetOrAddMovAvgItem(int cnlNum, int pointCount) { MovAvgItem movAvgItem; if (MovAvgItems.TryGetValue(cnlNum, out movAvgItem)) { return(movAvgItem); } else { movAvgItem = new MovAvgItem(pointCount); MovAvgItems.Add(cnlNum, movAvgItem); return(movAvgItem); } }