コード例 #1
0
 private void m_framework_SynchronousNewQueryResults(object sender, QueryResultsEventArgs e)
 {
     m_legendData.Clear();
     for (int x = 0; x < m_allGroups.Count; x++)
     {
         m_legendData.Add(new LegendEntry(m_allGroups[x], m_colorWheel.TryGetPen(x)));
     }
     Refresh();
 }
コード例 #2
0
        private void Updater_NewQueryResults(object sender, QueryResultsEventArgs e)
        {
            m_lastResults = e;
            long pointCount = 0;

            foreach (SignalDataBase r in e.Results.Values)
            {
                pointCount += r.Count;
            }
            this.pointCount = pointCount;
        }
コード例 #3
0
ファイル: FrmMain.cs プロジェクト: yuwenpeng/openHistorian
        private void Updater_NewQueryResults(object sender, QueryResultsEventArgs e)
        {
            long count = 0;

            foreach (SignalDataBase r in e.Results.Values)
            {
                count += r.Count;
            }

            m_pointCount = count;
        }
コード例 #4
0
ファイル: FrmMain.cs プロジェクト: ibgeorge/openHistorian
        private void m_framework_NewQueryResults(object sender, QueryResultsEventArgs e)
        {
            if (InvokeRequired)
            {
                Invoke(new EventHandler <QueryResultsEventArgs>(m_framework_NewQueryResults), sender, e);
                return;
            }

            long points = 0;

            foreach (SignalDataBase pt in e.Results.Values)
            {
                points += pt.Count;
            }

            LblPointCount.Text = "Point Count: " + points.ToString();

            PlotChart(e, PlotFrequency, m_frequencySignals, ReferenceEquals(PlotFrequency, LastPlotInteraction));
            PlotChart(e, PlotVoltageAngle, m_voltageAngleSignals, ReferenceEquals(PlotVoltageAngle, LastPlotInteraction));
            LastPlotInteraction = null;
        }
コード例 #5
0
        private void PlotChart(QueryResultsEventArgs e, PlotSurface2D plot, List <KeyValuePair <int, Guid> > signals, bool cacheAxis)
        {
            if (cacheAxis)
            {
                double minX, maxX, minY, maxY;

                plot.Title = m_plotTitle;
                maxX       = plot.XAxis1.WorldMax;
                minX       = plot.XAxis1.WorldMin;
                maxY       = plot.YAxis1.WorldMax;
                minY       = plot.YAxis1.WorldMin;

                foreach (IDrawable drawing in plot.Drawables.ToArray())
                {
                    plot.Remove(drawing, false);
                }

                foreach (KeyValuePair <int, Guid> freq in signals)
                {
                    SignalDataBase data = e.Results[freq.Value];

                    List <double> y = new List <double>(data.Count);
                    List <double> x = new List <double>(data.Count);

                    for (int i = 0; i < data.Count; i++)
                    {
                        ulong  time;
                        double value;
                        data.GetData(i, out time, out value);

                        x.Add(time);
                        y.Add(value * m_scalingFactor);
                    }

                    LinePlot lines = new LinePlot(y, x);
                    lines.Pen = m_colorWheel.TryGetPen(freq.Key);

                    plot.Add(lines);
                }

                plot.XAxis1.WorldMax = maxX;
                plot.XAxis1.WorldMin = minX;
                plot.YAxis1.WorldMax = maxY;
                plot.YAxis1.WorldMin = minY;

                plot.Refresh();
            }
            else
            {
                plot.Clear();
                plot.Title = m_plotTitle;
                AddInteractions();

                foreach (KeyValuePair <int, Guid> freq in signals)
                {
                    SignalDataBase data = e.Results[freq.Value];

                    List <double> y = new List <double>(data.Count);
                    List <double> x = new List <double>(data.Count);

                    for (int i = 0; i < data.Count; i++)
                    {
                        ulong  time;
                        double value;
                        data.GetData(i, out time, out value);

                        x.Add(time);
                        y.Add(value * m_scalingFactor);
                    }

                    LinePlot lines = new LinePlot(y, x);
                    lines.Pen = m_colorWheel.TryGetPen(freq.Key);

                    plot.Add(lines);
                }

                if (plot.XAxis1 != null)
                {
                    plot.XAxis1.WorldMax = e.EndTime.Ticks;
                    plot.XAxis1.WorldMin = e.StartTime.Ticks;
                }
                plot.Refresh();
            }
        }
コード例 #6
0
 private void m_framework_ParallelWithControlLockNewQueryResults(object sender, QueryResultsEventArgs e)
 {
     //Debug Code
     //if (InvokeRequired)
     //    throw new Exception();
     try
     {
         PlotChart(e, plotSurface2D1, m_signals, m_ignoreNextUpdate |= ReferenceEquals(m_token, e.RequestedToken));
     }
     catch (Exception)
     {
     }
     m_ignoreNextUpdate = false;
 }
コード例 #7
0
ファイル: FrmMain.cs プロジェクト: ibgeorge/openHistorian
        private void PlotChart(QueryResultsEventArgs e, PlotSurface2D plot, List <Guid> signals, bool cacheAxis)
        {
            if (cacheAxis)
            {
                maxX = plot.XAxis1.WorldMax;
                minX = plot.XAxis1.WorldMin;
                maxY = plot.YAxis1.WorldMax;
                minY = plot.YAxis1.WorldMin;

                foreach (IDrawable drawing in plot.Drawables.ToArray())
                {
                    plot.Remove(drawing, false);
                }

                ColorWheel.Reset();
                foreach (Guid freq in signals)
                {
                    SignalDataBase data = e.Results[freq];

                    List <double> y = new List <double>(data.Count);
                    List <double> x = new List <double>(data.Count);

                    for (int i = 0; i < data.Count; i++)
                    {
                        data.GetData(i, out ulong time, out double value);

                        x.Add(time);
                        y.Add(value);
                    }

                    LinePlot lines = new LinePlot(y, x);
                    lines.Pen = ColorWheel.GetPen();

                    plot.Add(lines);
                }

                plot.XAxis1.WorldMax = maxX;
                plot.XAxis1.WorldMin = minX;
                plot.YAxis1.WorldMax = maxY;
                plot.YAxis1.WorldMin = minY;

                plot.Refresh();
            }
            else
            {
                plot.Clear();

                plot.AddInteraction(new PlotSurface2D.Interactions.HorizontalDrag());
                plot.AddInteraction(new PlotSurface2D.Interactions.VerticalDrag());
                plot.AddInteraction(new PlotSurface2D.Interactions.AxisDrag(false));

                ColorWheel.Reset();
                foreach (Guid freq in signals)
                {
                    SignalDataBase data = e.Results[freq];

                    List <double> y = new List <double>(data.Count);
                    List <double> x = new List <double>(data.Count);

                    for (int i = 0; i < data.Count; i++)
                    {
                        data.GetData(i, out ulong time, out double value);

                        x.Add(time);
                        y.Add(value);
                    }

                    LinePlot lines = new LinePlot(y, x);
                    lines.Pen = ColorWheel.GetPen();

                    plot.Add(lines);
                }
                plot.Refresh();
            }
        }
コード例 #8
0
        private void BtnExport_Click(object sender, EventArgs e)
        {
            QueryResultsEventArgs results = m_lastResults;

            if (results == null)
            {
                MessageBox.Show("No query has been executed");
                return;
            }
            using (SaveFileDialog dlg = new SaveFileDialog())
            {
                dlg.Filter = "CVS File|*.csv";
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    StreamWriter fs = new StreamWriter(dlg.FileName, false);
                    fs.AutoFlush = false;
                    SortedList <DateTime, List <double?> > list = new SortedList <DateTime, List <double?> >();

                    int column = 0;
                    foreach (SignalDataBase value in results.Results.Values)
                    {
                        for (int x = 0; x < value.Count; x++)
                        {
                            ulong  date;
                            double v;
                            value.GetData(x, out date, out v);
                            DateTime d = new DateTime((long)date);
                            if (!list.ContainsKey(d))
                            {
                                list.Add(d, new List <double?>());
                                for (int k = 0; k < column; k++)
                                {
                                    list[d].Add(null);
                                }
                            }
                            list[d].Add(v);
                        }
                        foreach (List <double?> lst in list.Values)
                        {
                            while (lst.Count <= column)
                            {
                                lst.Add(null);
                            }
                        }
                        column++;
                    }

                    List <string> name = new List <string>();
                    Dictionary <Guid, MetadataBase> lookup = visualizationFramework1.Framework.AllSignals.ToDictionary((meta) => meta.UniqueId);

                    foreach (Guid value in results.Results.Keys)
                    {
                        if (!lookup.ContainsKey(value))
                        {
                            name.Add(value.ToString());
                        }
                        else if (lookup[value].Name == "")
                        {
                            name.Add(value.ToString());
                        }
                        else
                        {
                            name.Add(lookup[value].Name);
                        }
                    }


                    fs.Write("Date");
                    name.ForEach((x) => fs.Write("," + x));
                    fs.WriteLine();
                    foreach (KeyValuePair <DateTime, List <double?> > kvp in list)
                    {
                        fs.Write(kvp.Key.ToString("yyyy.MM.dd HH:mm:ss:fff"));

                        foreach (double?val in kvp.Value)
                        {
                            fs.Write(",");
                            if (val.HasValue)
                            {
                                fs.Write(val.ToString());
                            }
                        }
                        fs.WriteLine();
                    }
                    fs.Flush();
                    fs.Close();
                    Process.Start(dlg.FileName);
                }
            }
        }
コード例 #9
0
 private void m_framework_SynchronousNewQueryResults(object sender, QueryResultsEventArgs e)
 {
     m_suspendEvent = true;
     monthCalendar1.SetSelectionRange(e.StartTime.Date, e.EndTime.Date);
     m_suspendEvent = false;
 }