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(); }
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(); }