예제 #1
0
 public IEnumerable <FanSettings> GetSettings()
 {
     if (fc == null)
     {
         return(null);
     }
     return(fc.GetSettings());
 }
예제 #2
0
        void timer1_Tick(object sender, EventArgs e)
        {
            var data = service.GetData();

            if (data == null)
            {
                return;
            }

            var alldata = data.ToList();

            while (avg5.Count >= 300)
            {
                avg5.Dequeue();
            }

            var hashdata = alldata.ToDictionary(x => x.Name, x => x);;

            avg5.Enqueue(hashdata);

            if (min == null)
            {
                min = hashdata;
            }
            else
            {
                min = HashMap((x, y) => x.Value > y.Value ? y : x, min, hashdata);
            }

            if (max == null)
            {
                max = hashdata;
            }
            else
            {
                max = HashMap((x, y) => x.Value < y.Value ? y : x, max, hashdata);
            }

            if (updatefansettings)
            {
                fanSettingsBindingSource.DataSource = fancontroller.GetSettings();
                updatefansettings = false;
            }

            if (!(sampleWrapBindingSource.DataSource is List <SampleWrap>))
            {
                var bs = TransformData(alldata).ToList();
                mapping = bs.ToDictionary(x => x.Name);

                sampleWrapBindingSource.DataSource = bs;

                EnableDefaultGraphs();
            }
            else
            {
                var avg = avg5.Reverse().ToArray();

                foreach (var s in alldata)
                {
                    var format = s.GetFormat();

                    var sw = mapping[s.Name];

                    sw.Current = s.Value.ToString(format);
                    sw.Min     = min[s.Name].Value.ToString(format);
                    sw.Max     = max[s.Name].Value.ToString(format);

                    var avg10 = avg.Take(10).Where(x => x.ContainsKey(s.Name)).Select(x => x[s.Name]);
                    var avg30 = avg.Take(30).Where(x => x.ContainsKey(s.Name)).Select(x => x[s.Name]);
                    var avg60 = avg.Take(60).Where(x => x.ContainsKey(s.Name)).Select(x => x[s.Name]);

                    sw.Avg10 = avg10.Average(x => x.Value).ToString(format);
                    sw.Avg30 = avg30.Average(x => x.Value).ToString(format);
                    sw.Avg60 = avg60.Average(x => x.Value).ToString(format);

                    var chartarea = chartmap[s.Type];

                    if (sw.ShowOnGraph)
                    {
                        Series sr;
                        if (!series.TryGetValue(sw.Name, out sr))
                        {
                            sr           = series[sw.Name] = chart.Series.Add(sw.Name);
                            sr.ChartArea = chartarea;
                            sr.ChartType = SeriesChartType.FastLine;
                            sr.Font      = Font;
                            sr.ToolTip   =
                                @"#SERIESNAME
Value: #VAL{N3}
Avg: #AVG{N3}
Max: #MAX{N3}
Min: #MIN{N3}";

                            sr.Legend = legendmap[s.Type];
                        }

                        sr.Points.DataBind(avg5.Where(x => x.ContainsKey(s.Name)).Select(x => x[s.Name]).ToList(), "Time", "Value", "");
                    }
                    else
                    {
                        Series sr;
                        if (series.TryGetValue(sw.Name, out sr))
                        {
                            chart.Series.Remove(sr);
                            series.Remove(sw.Name);
                        }
                    }
                }

                chart.Invalidate();
                dataGridView1.Invalidate();
            }
        }