Пример #1
0
        public void AddBlock(String label, TimeSpan time)
        {
            if (HasStarted)
            {
                return;
            }

            var interval = new IntervalBlock();

            interval.CenterText  = label;
            interval.CurrentTime = time;
            interval.OnFinished += delegate(object o, EventArgs args)
            {
                _elapsedTime = _elapsedTime.Add(interval.OriginalTime);
                if (Blocks.Count == Blocks.Count(b => b.HasFinished))
                {
                    Stop();
                    HasFinished = true;
                    var oldBlock = CurrentBlock;
                    Blocks.RemoveAt(0);
                    Blocks.Add(oldBlock);
                }
                else
                {
                    StartNextBlock();
                }

                Common.PlaySound(Common.AlertSound1);
            };
            RemainingTime = RemainingTime.Add(interval.CurrentTime);
            _orignalTime  = RemainingTime; // keep the original time in memory so we can substract when running
            Blocks.Add(interval);
        }
Пример #2
0
        public IntervalBlock <MessageType> CreateIntervalBlock <MessageType>(int intervalMS, string name)
        {
            var block = new IntervalBlock <MessageType>(EventProcessor, intervalMS);

            SetDebugName(block, name);
            return(block);
        }
        public static int GetGapCount(this IntervalBlock block, TimeSpan measurementPeriod)
        {
            int count = 0;

            for (int i = 1; i < block.IntervalReadings.Count; i++)
            {
                var lastTimestamp    = block.IntervalReadings[i - 1].TargetTime?.ToUniversalTime();
                var currentTimestamp = block.IntervalReadings[i].TargetTime?.ToUniversalTime();

                lastTimestamp    = ModelExtensions.GetAlignedTimestamp(lastTimestamp.Value, (int)measurementPeriod.TotalSeconds);
                currentTimestamp = ModelExtensions.GetAlignedTimestamp(currentTimestamp.Value, (int)measurementPeriod.TotalSeconds);

                var span = currentTimestamp - lastTimestamp;
                if (span > measurementPeriod)
                {
                    count++;
                }
            }

            return(count);
        }
Пример #4
0
        // Validation of an IntervalBlock instance
        private static void ValidateIntervalBlock(IntervalBlock intervalBlock, List <Exception> exceptions)
        {
            if (intervalBlock.Interval == null)
            {
                exceptions.Add(new InvalidOperationException("Das Element \"IntervalBlock\" muss das Element \"Interval\" enthalten."));
            }
            else
            {
                ValidateInterval(intervalBlock.Interval, "interval", exceptions);
            }

            if (intervalBlock.IntervalReadings.Count < 1)
            {
                exceptions.Add(new InvalidOperationException("Das Element \"IntervalBlock\" enthält kein Element \"IntervalReading\"."));
            }
            else
            {
                foreach (IntervalReading intervalReading in intervalBlock.IntervalReadings)
                {
                    ValidateIntervalReading(intervalReading, exceptions);
                }
            }
        }
        public static (int Ok, int Warning, int TempError, int CriticalTempError, int FatalError) GetStatusCount(this IntervalBlock block)
        {
            int ok                = 0;
            int warning           = 0;
            int tempError         = 0;
            int criticalTempError = 0;
            int fatalError        = 0;

            for (int i = 0; i < block.IntervalReadings.Count; i++)
            {
                var statusPtb = block.IntervalReadings[i].StatusPTB.HasValue
                                    ? block.IntervalReadings[i].StatusPTB.Value
                                    : block.IntervalReadings[i].StatusFNN.MapToStatusPtb();

                switch (statusPtb)
                {
                case StatusPTB.NoError:
                    ok++;
                    break;

                case StatusPTB.Warning:
                    warning++;
                    break;

                case StatusPTB.TemporaryError:
                    tempError++;
                    break;

                case StatusPTB.CriticalTemporaryError:
                    criticalTempError++;
                    break;

                case StatusPTB.FatalError:
                    fatalError++;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            return(ok, warning, tempError, criticalTempError, fatalError);
        }