Exemplo n.º 1
0
        public Chart GenerateChart(SensorChart chartData, string xAxisTitle, string yAxisTitle)
        {
            Chart c = new Chart();

            c.AntiAliasing            = AntiAliasingStyles.All;
            c.TextAntiAliasingQuality = TextAntiAliasingQuality.High;

            ChartArea ca = new ChartArea();

            ca.BackColor          = Color.FromArgb(248, 248, 248);
            ca.BackSecondaryColor = Color.FromArgb(255, 255, 255);
            ca.BackGradientStyle  = GradientStyle.TopBottom;

            ca.AxisY.IsMarksNextToAxis     = true;
            ca.AxisY.Title                 = yAxisTitle;
            ca.AxisY.LineColor             = Color.FromArgb(157, 157, 157);
            ca.AxisY.LabelStyle.Enabled    = true;
            ca.AxisY.MajorTickMark.Enabled = false;
            ca.AxisY.MajorGrid.LineColor   = Color.FromArgb(234, 234, 234);
            ca.AxisY.Minimum               = 0;
            ca.AxisY.Maximum               = 1023;
            ca.AxisY.Interval              = 100;

            ca.AxisX.IsMarksNextToAxis       = true;
            ca.AxisX.Title                   = xAxisTitle;
            ca.AxisX.LineColor               = Color.FromArgb(157, 157, 157);
            ca.AxisX.MajorTickMark.LineColor = Color.White;
            ca.AxisX.MajorGrid.LineColor     = Color.FromArgb(234, 234, 234);

            ca.AxisX.Minimum = 1;
            ca.AxisX.Maximum = 2500;

            ca.AxisX.LabelStyle.Enabled = true;

            c.ChartAreas.Add(ca);

            GenerateSeries(c, chartData);

            return(c);
        }
Exemplo n.º 2
0
        public void GenerateSeries(Chart chart, SensorChart sensorChart)
        {
            if (sensorChart.FrontLeftSensor != null)
            {
                Series s = new Series()
                {
                    ChartType = SeriesChartType.Line
                };
                s.Font               = new Font("Lucida Sans Unicode", 6f);
                s.Color              = Color.FromArgb(215, 47, 6);
                s.BorderColor        = Color.FromName(sensorChart.FrontLeftSensor.LineColor); //Color.FromArgb(159, 27, 13);
                s.BackSecondaryColor = Color.FromArgb(173, 32, 11);
                s.BackGradientStyle  = GradientStyle.LeftRight;
                s.XValueType         = ChartValueType.Int32;
                s.IsXValueIndexed    = true;
                s.Points.DataBind(sensorChart.FrontLeftSensor.SensorData, sensorChart.FrontLeftSensor.XField, sensorChart.FrontLeftSensor.YField, "");

                chart.Series.Add(s);
            }

            if (sensorChart.FrontRightSensor != null)
            {
                Series s = new Series()
                {
                    ChartType = SeriesChartType.Line
                };
                s.Font               = new Font("Lucida Sans Unicode", 6f);
                s.Color              = Color.FromName(sensorChart.FrontRightSensor.LineColor);
                s.BorderColor        = Color.FromArgb(159, 27, 13);
                s.BackSecondaryColor = Color.FromArgb(173, 32, 11);
                s.BackGradientStyle  = GradientStyle.LeftRight;
                s.XValueType         = ChartValueType.Int32;
                s.IsXValueIndexed    = true;
                s.Points.DataBind(sensorChart.FrontRightSensor.SensorData, sensorChart.FrontRightSensor.XField, sensorChart.FrontRightSensor.YField, "");

                chart.Series.Add(s);
            }
        }
Exemplo n.º 3
0
        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
            //List<SensorLog> log = _sensorService.GetSensorLog(1);
            //List<SensorLog> log2 = _sensorService.GetSensorLog(2);

            List <SensorLog> log      = new List <SensorLog>();
            List <SensorLog> log2     = new List <SensorLog>();
            string           dataFile = Server.MapPath("~/Data/datalog.txt");
            // Read the file and display it line by line.
            string line;

            System.IO.StreamReader file = new System.IO.StreamReader(dataFile);
            while ((line = file.ReadLine()) != null)
            {
                string[] row = line.Split(':');

                int      microSecond = int.Parse(row[0]);
                string[] values      = row[1].Split(';');

                int pot1 = int.Parse(values[0]);
                int pot2 = int.Parse(values[1]);
                int pot3 = int.Parse(values[2]);

                SensorLog logRecord = new SensorLog();
                logRecord.SensorId    = 1;
                logRecord.MicroSecond = microSecond;
                logRecord.Value       = pot1;
                log.Add(logRecord);

                SensorLog logRecord2 = new SensorLog();
                logRecord2.SensorId    = 2;
                logRecord2.MicroSecond = microSecond;
                logRecord2.Value       = pot2;
                log2.Add(logRecord2);
            }

            file.Close();

            SensorChart  chart = new SensorChart();
            SensorSeries fl    = new SensorSeries();

            fl.SensorData         = log;
            fl.XField             = "MicroSecond";
            fl.YField             = "Value";
            fl.LineColor          = "Red";
            chart.FrontLeftSensor = fl;

            SensorSeries fr = new SensorSeries();

            fr.SensorData          = log2;
            fr.XField              = "MicroSecond";
            fr.YField              = "Value";
            fr.LineColor           = "Blue";
            chart.FrontRightSensor = fr;

            ChartGenerator chartGenerator = new ChartGenerator();
            string         imagePath      = Server.MapPath("~/images/charts/sensorLog.png");

            chartGenerator.GenerateChart(imagePath, chart, "Milli Seconds", "Sensor Value");

            return(View());
        }
Exemplo n.º 4
0
        private void Controller_Sensor2ValueReceived(object sender, SensorValueEventArgs e)
        {
            DateTime time = DateTime.Now;

            Sensor2Data.AsyncInvoke(x =>
            {
                x.Rows.Add(new object[]
                {
                    time,
                    e.Status,
                    e.Before.Sensor1,
                    e.Before.Sensor2,
                    e.After == null ? 0f : e.After.Value.Sensor1,
                    e.After == null ? 0f : e.After.Value.Sensor2,
                    e.Delta == null ? 0f : e.Delta.Value.Sensor1,
                    e.Delta == null ? 0f : e.Delta.Value.Sensor2
                });
            });
            SensorChart.AsyncInvoke(x =>
            {
                if (!x.IsDisposed)
                {
                    x.Series["Sensor1Before"].Points.AddXY(time, e.Before.Sensor1);
                    x.Series["Sensor1After"].Points.AddXY(time, e.After == null ? 0f : e.After.Value.Sensor1);
                    x.Series["Sensor1MaxPlus"].Points.AddXY(time, 3.5f);
                    x.Series["Sensor1MaxMinus"].Points.AddXY(time, -3.5f);
                    x.Series["Sensor1MinPlus"].Points.AddXY(time, 0.75f);
                    x.Series["Sensor1MinMinus"].Points.AddXY(time, -0.75f);

                    x.Series["Sensor2Before"].Points.AddXY(time, e.Before.Sensor2);
                    x.Series["Sensor2After"].Points.AddXY(time, e.After == null ? 0f : e.After.Value.Sensor2);
                    x.Series["Sensor2MaxPlus"].Points.AddXY(time, 3.5f);
                    x.Series["Sensor2MaxMinus"].Points.AddXY(time, -3.5f);
                    x.Series["Sensor2MinPlus"].Points.AddXY(time, 0.75f);
                    x.Series["Sensor2MinMinus"].Points.AddXY(time, -0.75f);

                    x.Series["Sensor1Delta"].Points.AddXY(time, e.Delta == null ? 0f : e.Delta.Value.Sensor1);
                    x.Series["Sensor2Delta"].Points.AddXY(time, e.Delta == null ? 0f : e.Delta.Value.Sensor2);
                }
            });
            switch (e.Status)
            {
            case StatusCode.PASS:
            {
                Stats1.AsyncInvoke(x =>
                    {
                        if (!x.IsDisposed)
                        {
                            if (x.Series["Passed"].Points.Count > 0)
                            {
                                x.Series["Passed"].Points[0].SetValueXY("Passed", x.Series["Passed"].Points[0].GetValueByName("Y") + 1);
                                x.ResetAutoValues();
                            }
                            else
                            {
                                x.Series["Passed"].Points.AddXY("Passed", 1);
                            }
                        }
                    });
                break;
            }

            case StatusCode.FAILED:
            {
                Stats1.AsyncInvoke(x =>
                    {
                        if (!x.IsDisposed)
                        {
                            if (x.Series["Failed"].Points.Count > 0)
                            {
                                x.Series["Failed"].Points[0].SetValueXY("Failed", x.Series["Failed"].Points[0].GetValueByName("Y") + 1);
                                x.ResetAutoValues();
                            }
                            else
                            {
                                x.Series["Failed"].Points.AddXY("Failed", 1);
                            }
                        }
                    });
                break;
            }

            case StatusCode.FIRST_BENDED:
            {
                Stats2.AsyncInvoke(x =>
                    {
                        if (!x.IsDisposed)
                        {
                            if (x.Series["FirstBended"].Points.Count > 0)
                            {
                                x.Series["FirstBended"].Points[0].SetValueXY("FirstBended", x.Series["FirstBended"].Points[0].GetValueByName("Y") + 1);
                                x.ResetAutoValues();
                            }
                            else
                            {
                                x.Series["FirstBended"].Points.AddXY("FirstBended", 1);
                            }
                        }
                    });
                break;
            }

            case StatusCode.SECOND_BENDED:
            {
                Stats2.AsyncInvoke(x =>
                    {
                        if (!x.IsDisposed)
                        {
                            if (x.Series["SecondBended"].Points.Count > 0)
                            {
                                x.Series["SecondBended"].Points[0].SetValueXY("SecondBended", x.Series["SecondBended"].Points[0].GetValueByName("Y") + 1);
                                x.ResetAutoValues();
                            }
                            else
                            {
                                x.Series["SecondBended"].Points.AddXY("SecondBended", 1);
                            }
                        }
                    });
                break;
            }
            }
        }