コード例 #1
0
        private void OnTriggerActiveChanged(KeyValuePair <Pins, bool> keyValuePair)
        {
            var series = CurrentValuePlot.Series.Single(x => ((Pins)x.Tag) == keyValuePair.Key);

            series.IsVisible = keyValuePair.Value;
            CurrentValuePlot.InvalidatePlot(true);
        }
コード例 #2
0
        private void UpdateUiWithPinValuesThreadCallback()
        {
            while (true)
            {
                Dictionary <DateTime, List <byte> > pinValuesToShow;
                lock (_pinValuesLock)
                {
                    pinValuesToShow = new Dictionary <DateTime, List <byte> >(_pinValues);
                    _pinValues.Clear();
                }

                if (pinValuesToShow.Count > 0)
                {
                    DateTime timeStamp  = pinValuesToShow.Last().Key;
                    var      pinsSeries = CurrentValuePlot.Series.OfType <DataPointSeries>().Where(x => x.IsVisible && x.Tag is Pins).ToDictionary(x => (Pins)x.Tag, x => x);

                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        CurrentValuePlot.Axes.Where(x => x.Position == AxisPosition.Bottom).OfType <DateTimeAxis>()
                        .ForEach(x =>
                        {
                            x.Minimum = DateTimeAxis.ToDouble(timeStamp.AddSeconds(-15));
                            x.Maximum = DateTimeAxis.ToDouble(timeStamp.AddSeconds(5));
                        });

                        foreach (var value in pinValuesToShow)
                        {
                            for (int i = 0; i < value.Value.Count; i++)
                            {
                                if (pinsSeries.ContainsKey((Pins)i))
                                {
                                    pinsSeries[(Pins)i].Points.Add(new DataPoint(DateTimeAxis.ToDouble(value.Key), value.Value[i]));
                                }
                            }
                        }

                        CurrentValuePlot.InvalidatePlot(true);
                    });
                }

                Thread.Sleep(200);
            }
        }