Пример #1
0
        private void TNCListener_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            // Process the packet and update the UI.
            if ((e.Result.ToString() != "CANCEL") && (e.Result.ToString() != "RETRY"))
            {
                // We got a packet, let's parse it.
                packetParser.RunWorkerAsync(e.Result);
            }
            if (e.Result.ToString() == "CANCEL")
            {
                this.Close();
            }

            // Start listening again.
            TNCListener.RunWorkerAsync();
        }
Пример #2
0
        public MainWindow()
        {
            InitializeComponent();

            // Set up the UI elements and gauges

            Version version = Assembly.GetExecutingAssembly().GetName().Version;

            this.Text = "HAB Telemetry Viewer v. " + version.Major + "." + version.Minor + "." + version.Build;

            pressureGauge.From = 0;
            pressureGauge.To   = 1;

            humidityGauge.From = 0;
            humidityGauge.To   = 100;

            intTempGauge.From = -60;
            intTempGauge.To   = 60;

            extTempGauge.From = -60;
            extTempGauge.To   = 60;

            batteryGauge.From      = 2;
            batteryGauge.FromColor = System.Windows.Media.Color.FromArgb(0xFF, 0xFF, 0x00, 0x00);
            batteryGauge.To        = 3;
            batteryGauge.ToColor   = System.Windows.Media.Color.FromArgb(0xFF, 0x00, 0xFF, 0x00);

            speedGauge.FromValue = 0;
            speedGauge.ToValue   = 100;
            speedGauge.Wedge     = 270;
            speedGauge.Sections.Add(
                new AngularSection
            {
                FromValue = 0,
                ToValue   = 60,
                Fill      = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 0, 255, 0))
            }
                );
            speedGauge.Sections.Add(
                new AngularSection
            {
                FromValue = 60,
                ToValue   = 75,
                Fill      = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 255, 0))
            }
                );
            speedGauge.Sections.Add(
                new AngularSection
            {
                FromValue = 75,
                ToValue   = 100,
                Fill      = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 0, 0))
            }
                );

            // Set up the graphs

            // Pressure Graph
            PressureGraphSeries = new SeriesCollection
            {
                new LineSeries
                {
                    Title         = "Pressure",
                    Values        = new ChartValues <double> {
                    },
                    PointGeometry = DefaultGeometries.None,
                    //PointGeometry = DefaultGeometries.Circle,
                    //PointGeometrySize = 5,
                    //PointForeground = System.Windows.Media.Brushes.Blue,
                    StrokeThickness = 2,
                    Visibility      = System.Windows.Visibility.Visible
                }
            };
            pressureChart.Series.Add(PressureGraphSeries[0]);
            pressureChart.AxisY.Add(new Axis {
            });
            pressureChart.AxisX.Add(new Axis {
            });
            pressureChart.AxisY[0].MinValue       = 0;
            pressureChart.AxisY[0].MaxValue       = 1;
            pressureChart.AxisY[0].Separator.Step = 0.2;

            // Humidity Graph
            HumidityGraphSeries = new SeriesCollection
            {
                new LineSeries
                {
                    Title         = "Humidity",
                    Values        = new ChartValues <double> {
                    },
                    PointGeometry = DefaultGeometries.None,
                    //PointGeometry = DefaultGeometries.Circle,
                    //PointGeometrySize = 5,
                    //PointForeground = System.Windows.Media.Brushes.Blue,
                    StrokeThickness = 2,
                    Visibility      = System.Windows.Visibility.Visible
                }
            };
            humidityChart.Series.Add(HumidityGraphSeries[0]);
            humidityChart.AxisY.Add(new Axis {
            });
            humidityChart.AxisX.Add(new Axis {
            });
            humidityChart.AxisY[0].MinValue       = 0;
            humidityChart.AxisY[0].MaxValue       = 100;
            humidityChart.AxisY[0].Separator.Step = 20;

            // External Temperature Graph
            ExtTempGraphSeries = new SeriesCollection
            {
                new LineSeries
                {
                    Title         = "External Temperature",
                    Values        = new ChartValues <double> {
                    },
                    PointGeometry = DefaultGeometries.None,
                    //PointGeometry = DefaultGeometries.Circle,
                    //PointGeometrySize = 5,
                    //PointForeground = System.Windows.Media.Brushes.Blue,
                    StrokeThickness = 2,
                    Visibility      = System.Windows.Visibility.Visible
                }
            };
            extTempChart.Series.Add(ExtTempGraphSeries[0]);
            extTempChart.AxisY.Add(new Axis {
            });
            extTempChart.AxisX.Add(new Axis {
            });
            extTempChart.AxisY[0].MinValue       = -60;
            extTempChart.AxisY[0].MaxValue       = 60;
            extTempChart.AxisY[0].Separator.Step = 20;

            // Internal Temperature Graph
            IntTempGraphSeries = new SeriesCollection
            {
                new LineSeries
                {
                    Title         = "Internal Temperature",
                    Values        = new ChartValues <double> {
                    },
                    PointGeometry = DefaultGeometries.None,
                    //PointGeometry = DefaultGeometries.Circle,
                    //PointGeometrySize = 5,
                    //PointForeground = System.Windows.Media.Brushes.Blue,
                    StrokeThickness = 2,
                    Visibility      = System.Windows.Visibility.Visible
                }
            };
            intTempChart.Series.Add(IntTempGraphSeries[0]);
            intTempChart.AxisY.Add(new Axis {
            });
            intTempChart.AxisX.Add(new Axis {
            });
            intTempChart.AxisY[0].MinValue       = -60;
            intTempChart.AxisY[0].MaxValue       = 60;
            intTempChart.AxisY[0].Separator.Step = 20;

            // Speed Graph
            SpeedGraphSeries = new SeriesCollection
            {
                new LineSeries
                {
                    Title         = "Speed",
                    Values        = new ChartValues <int> {
                    },
                    PointGeometry = DefaultGeometries.None,
                    //PointGeometry = DefaultGeometries.Circle,
                    //PointGeometrySize = 5,
                    //PointForeground = System.Windows.Media.Brushes.Blue,
                    StrokeThickness = 2,
                    Visibility      = System.Windows.Visibility.Visible
                }
            };
            speedChart.Series.Add(SpeedGraphSeries[0]);
            speedChart.AxisY.Add(new Axis {
            });
            speedChart.AxisX.Add(new Axis {
            });
            speedChart.AxisY[0].MinValue       = 0;
            speedChart.AxisY[0].MaxValue       = 100;
            speedChart.AxisY[0].Separator.Step = 20;

            // Battery Graph
            BatteryVoltageGraphSeries = new SeriesCollection
            {
                new LineSeries
                {
                    Title         = "Battery Voltage",
                    Values        = new ChartValues <double> {
                    },
                    PointGeometry = DefaultGeometries.None,
                    //PointGeometry = DefaultGeometries.Circle,
                    //PointGeometrySize = 5,
                    //PointForeground = System.Windows.Media.Brushes.Blue,
                    StrokeThickness = 2,
                    Visibility      = System.Windows.Visibility.Visible
                }
            };
            batteryVoltageChart.Series.Add(BatteryVoltageGraphSeries[0]);
            batteryVoltageChart.AxisY.Add(new Axis {
            });
            batteryVoltageChart.AxisX.Add(new Axis {
            });
            batteryVoltageChart.AxisY[0].MinValue       = 2;
            batteryVoltageChart.AxisY[0].MaxValue       = 3;
            batteryVoltageChart.AxisY[0].Separator.Step = 0.5;

            // Altitude Graph
            AltitudeGraphSeries = new SeriesCollection
            {
                new LineSeries
                {
                    Title         = "Altitude",
                    Values        = new ChartValues <int> {
                    },
                    PointGeometry = DefaultGeometries.None,
                    //PointGeometry = DefaultGeometries.Circle,
                    //PointGeometrySize = 5,
                    //PointForeground = System.Windows.Media.Brushes.Blue,
                    StrokeThickness = 2,
                    Visibility      = System.Windows.Visibility.Visible
                }
            };
            altitudeChart.Series.Add(AltitudeGraphSeries[0]);
            altitudeChart.AxisY.Add(new Axis {
            });
            altitudeChart.AxisX.Add(new Axis {
            });
            altitudeChart.AxisY[0].MinValue       = 0;
            altitudeChart.AxisY[0].MaxValue       = 100000;
            altitudeChart.AxisY[0].Separator.Step = 20000;

            // Ascent Rate Graph
            AscentRateGraphSeries = new SeriesCollection
            {
                new LineSeries
                {
                    Title         = "Ascent Rate",
                    Values        = new ChartValues <double> {
                    },
                    PointGeometry = DefaultGeometries.None,
                    //PointGeometry = DefaultGeometries.Circle,
                    //PointGeometrySize = 5,
                    //PointForeground = System.Windows.Media.Brushes.Blue,
                    StrokeThickness = 2,
                    Visibility      = System.Windows.Visibility.Visible
                }
            };
            ascentRateChart.Series.Add(AscentRateGraphSeries[0]);
            ascentRateChart.AxisY.Add(new Axis {
            });
            ascentRateChart.AxisX.Add(new Axis {
            });
            ascentRateChart.AxisY[0].MinValue       = -100;
            ascentRateChart.AxisY[0].MaxValue       = 100;
            ascentRateChart.AxisY[0].Separator.Step = 40;

            TNCListener.RunWorkerAsync();
        }