Example #1
0
 private void SetPoints(string param)
 {
     try
     {
         this.Points.Clear();
         NumericDataPoint np   = null;
         string[]         args = param.Split(new char[] { ',' });
         foreach (string str in args)
         {
             np       = new NumericDataPoint();
             np.Value = double.Parse(str.Trim());
             this.Points.Add(np);
         }
     }
     catch (Exception ex)
     {
     }
 }
Example #2
0
 private void SetPoints(string param)
 {
     try
     {
         this.Points.Clear();
         NumericDataPoint np = null;
         string[] args = param.Split(new char[] { ',' });
         foreach (string str in args)
         {
             np = new NumericDataPoint();
             np.Value = double.Parse(str.Trim());
             this.Points.Add(np);
         }
     }
     catch (Exception ex)
     {
     }
 }
Example #3
0
        public async Task <DataPoint> GenerateDemoDataAsync(Metrics type, string source, DateTime?timestamp = null)
        {
            var metric = await _metricService.GetOrCreateMetricAsync(type, source);

            _context.Attach(metric);

            // Using plain new Random() will result in the same number if called multiple times in short time period
            var random = new Random(
                Convert.ToInt32(
                    (DateTime.UtcNow.Ticks + type.GetHashCode() + source.GetHashCode()) % Int32.MaxValue
                    )
                );

            DataPoint result = null;

            switch (type)
            {
            case Metrics.CpuLoad:
                result = new NumericDataPoint
                {
                    Timestamp = timestamp ?? DateTime.UtcNow,
                    Metric    = metric,
                    Value     = random.Next(5, 100)
                };
                await _context.NumericDataPoints.AddAsync((NumericDataPoint)result);

                break;

            case Metrics.Ping:
                var success = random.Next(100) % 5 != 0;
                result = new PingDataPoint
                {
                    Timestamp    = timestamp ?? DateTime.UtcNow,
                    Metric       = metric,
                    Success      = success,
                    ResponseTime = new TimeSpan(0, 0, 0, 0, success ? random.Next(100, 900) : 0)
                };
                await _context.PingDataPoints.AddAsync((PingDataPoint)result);

                break;

            case Metrics.UserAction:
                var userActions = new string[] { "Page load", "Project Edit", "Project Create", "User login", "User Logout", "User Register" };

                var action = userActions
                             .Skip(random.Next(0, userActions.Count()))
                             .Take(1)
                             .First();

                result = new UserActionDataPoint
                {
                    Timestamp = timestamp ?? DateTime.UtcNow,
                    Metric    = metric,
                    Action    = action,
                    Count     = random.Next(1, 10)
                };

                await _context.UserActionDataPoints.AddAsync((UserActionDataPoint)result);

                break;

            case Metrics.Log:
                var severity = _context
                               .LogEntrySeverities
                               .Skip(random.Next(0, _context.LogEntrySeverities.Count()))
                               .Take(1)
                               .First();

                result = new LogDataPoint
                {
                    Timestamp = timestamp ?? DateTime.UtcNow,
                    Metric    = metric,
                    Severity  = severity,
                    Count     = random.Next(1, 10)
                };

                await _context.LogDataPoints.AddAsync((LogDataPoint)result);

                break;

            case Metrics.Compilation:
                var stage = _context
                            .CompilationStages
                            .Skip(random.Next(0, _context.CompilationStages.Count()))
                            .Take(1)
                            .First();

                result = new CompilationDataPoint
                {
                    Timestamp   = timestamp ?? DateTime.UtcNow,
                    Metric      = metric,
                    Stage       = stage,
                    SourceSize  = random.Next(1000, 10000),
                    CompileTime = new TimeSpan(0, 0, 0, 0, random.Next(100, 900))
                };

                await _context.CompilationDataPoints.AddAsync((CompilationDataPoint)result);

                break;

            default:
                var ex = new ArgumentOutOfRangeException($"Unknown metric type: {type}");
                _logger.LogCritical(LoggingEvents.Metrics.AsInt(), ex, "Unknown metric in CacheMetric");
                throw ex;
            }

            await _context.SaveChangesAsync();

            _logger.LogDebug(
                LoggingEvents.Demo.AsInt(),
                $"Data point for metric of type {type} and source {source} has been generated."
                );

            return(result);
        }
Example #4
0
 /// <summary>
 /// 初始化动态曲线
 /// </summary>
 private void InitChart()
 {
     _series = new CarNumericSeries[dataTable1.Rows.Count];//根据计量点数据初始化动态曲线图数据数量
     NumericDataPoint np = null;
     for (int i = 0; i < _series.Length; i++)
     {
         _series[i] = new CarNumericSeries();
         _series[i].Points.Clear();
         np = new NumericDataPoint();
         np.Value = 0;
         _series[i].Points.Add(np);//将每个计量点曲线第一点初始化为0
     }
 }
Example #5
0
        private void HandleWeightCompelte(double weight)
        {
            //switch (weighEditorControl1.PointCode)
            //{
            //    //case "K004":
            //    //    weight /= 100;
            //    //    break;
            //    //case "K003":
            //    //case "K006":
            //    //    weight /= 1000;
            //    //    break;
            //    //case "K005":
            //    //    weight /= 1000;
            //    //    break;
            //    default:
            //        weight /= 1000;
            //        break;
            //}

            NumericDataPoint np = new NumericDataPoint();
            np.Value = weight;
            _series[m_iSelectedPound].Points.Add(np);

            meterControl1.Status = MeterStatus.Stable;
            meterControl1.Weight = weight;
            if (!_measApp.IsSaved)
            {//复位后保存按钮能再次保存
                _isReWriteCard = false;
                button1.Enabled = true;
            }
            button1.Refresh();
        }
Example #6
0
        private void HandleWeightChange(double weight)
        {
            bool flag = false;
            if (weight <= _measApp.Weight.MinWeight)
            {
                meterControl1.Status = MeterStatus.Null;
                _measApp.IsSaved = false;//复位后保存按钮能再次保存,彭海波增加
                _measApp.Rtu.OpenGreen();  //打开绿灯
                rtuControl1.TrafficLight = TrafficLightStatus.Green;

                _series[m_iSelectedPound].Points.Clear();
                NumericDataPoint np = new NumericDataPoint();
                np.Value = 0;
                _series[m_iSelectedPound].Points.Add(np);

                //LCD切回欢迎界面
                if (_measApp.Lcd != null)
                {
                    if (_measApp.Lcd.LcdStatus != LCD_PICTURE.WELCOME)
                    {
                        _measApp.Lcd.ClearScreen();
                        _measApp.Lcd.DrawPicture((int)LCD_PICTURE.WELCOME);
                        _measApp.Lcd.LcdStatus = LCD_PICTURE.WELCOME;
                    }
                }
            }
            else
            {
                meterControl1.Status = MeterStatus.UnStable;

                _measApp.Rtu.OpenRed();  //打开红灯
                rtuControl1.TrafficLight = TrafficLightStatus.Red;
                flag = true;
            }

            //switch (weighEditorControl1.PointCode)
            //{
            //    //case "K004":
            //    //    weight /= 100;
            //    //    break;
            //    //case "K003":
            //    //case "K006":
            //    //    weight /= 1000;
            //    //    break;
            //    //case "K005":
            //    //    weight /= 1000;
            //    //    break;
            //    default:
            //        weight /= 1000;
            //        break;
            //}

            if (flag)//weight > 0 && weight >= _preWeight
            {
                NumericDataPoint np = new NumericDataPoint();
                np.Value = weight;
                _series[m_iSelectedPound].Points.Add(np);
            }

            meterControl1.Weight = weight;

            button1.Enabled = false;
            //button1.Enabled = true;

            _preWeight = weight;
        }