Ejemplo n.º 1
0
        private void refresh()
        {
            if (downCounter == null || upCounter == null)
            {
                downSpeed = 0;
                upSpeed   = 0;
                return;
            }
            if (downCounter.NextSample() == null || upCounter.NextSample() == null)
            {
                downSpeed = 0;
                upSpeed   = 0;
                return;
            }

            downValue = downCounter.NextSample().RawValue;
            upValue   = upCounter.NextSample().RawValue;

            downSpeed = (downValue - downValueOld) / (UpdateInterval / 1000d);
            upSpeed   = (upValue - upValueOld) / (UpdateInterval / 1000d);

            downValueOld = downValue;
            upValueOld   = upValue;

            //Avg.
            AdownSpeed[ArrayPtr] = downSpeed;
            AupSpeed[ArrayPtr]   = upSpeed;
            ArrayPtr             = (ArrayPtr + 1) % 5;

            //history
            upspeedActrual.RemoveAt(upspeedActrual.Count - 1);
            upspeedActrual.Insert(0, upSpeed);
            upspeedRelative = upspeedActrual.ToList();
            GetRelative(ref upspeedRelative);

            downspeedActrual.RemoveAt(downspeedActrual.Count - 1);
            downspeedActrual.Insert(0, downSpeed);
            downspeedRelative = downspeedActrual.ToList();
            GetRelative(ref downspeedRelative);

            void GetRelative(ref List <double> Relative)
            {
                double max = Relative.Max();

                if (max > 0)
                {
                    for (int i = 0; i < Relative.Count; i++)
                    {
                        Relative[i] = Relative[i] / max * 100;
                    }
                }
            }
        }