예제 #1
0
        private void OnLimitLineBuildFromSignal_Click(object sender, EventArgs e)
        {
            try
            {
                bool bMin = sender.ToString().Contains("M&in");

                PointPairList listCurrentPointList = null;
                int nSelectionCounter = SelectSinglePointPairList(ref listCurrentPointList);

                if (nSelectionCounter == 0)
                {
                    MessageBox.Show("Condition not met: One active display curve on screen (Avg, Max, Min or Realtime)", "Limit Lines");
                    return;
                }
                else if (nSelectionCounter > 1)
                {
                    MessageBox.Show("Condition not met: One active display curve on screen ONLY (Avg, Max, Min or Realtime)", "Limit Lines");
                    return;
                }

                using (CreateLimitLine objDialog = new CreateLimitLine())
                {
                    if (objDialog.ShowDialog(this) == DialogResult.OK)
                    {
                        double dIncrementAmplitudeDB = Convert.ToDouble(objDialog.m_edOffsetDB.Text);

                        if (bMin)
                            m_LimitLineMin = new LimitLine(listCurrentPointList);
                        else
                            m_LimitLineMax = new LimitLine(listCurrentPointList);

                        //add requested offset to each point - NOTE: This is not the RFE measurement offset so the 
                        //function SetNewOffset is not appropriate here!
                        for (int nInd = 0; nInd < listCurrentPointList.Count; nInd++)
                        {
                            if (bMin)
                                m_LimitLineMin[nInd].Y -= dIncrementAmplitudeDB;
                            else
                                m_LimitLineMax[nInd].Y += dIncrementAmplitudeDB;
                        }

                        if (bMin)
                            m_LimitLineMin.AmplitudeUnits = GetCurrentAmplitudeEnum();
                        else
                            m_LimitLineMax.AmplitudeUnits = GetCurrentAmplitudeEnum();

                        DisplaySpectrumAnalyzerData();
                    }
                }
            }
            catch (Exception obEx) { MessageBox.Show(obEx.Message); }
        }
예제 #2
0
        private void InitializeSpectrumAnalyzerGraph()
        {
#if CALLSTACK
            Console.WriteLine("CALLSTACK:InitializeSpectrumAnalyzerGraph");
#endif
            m_tabSpectrumAnalyzer.Controls.Add(m_GraphSpectrumAnalyzer);
            m_GraphSpectrumAnalyzer.EditButtons = System.Windows.Forms.MouseButtons.Left;
            m_GraphSpectrumAnalyzer.IsAntiAlias = true;
            m_GraphSpectrumAnalyzer.IsEnableSelection = true;
            m_GraphSpectrumAnalyzer.Location = new System.Drawing.Point(8, 257);
            m_GraphSpectrumAnalyzer.Name = "zedSpectrumAnalyzer";
            m_GraphSpectrumAnalyzer.PanModifierKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.None)));
            m_GraphSpectrumAnalyzer.ScrollGrace = 0D;
            m_GraphSpectrumAnalyzer.ScrollMaxX = 0D;
            m_GraphSpectrumAnalyzer.ScrollMaxY = 0D;
            m_GraphSpectrumAnalyzer.ScrollMaxY2 = 0D;
            m_GraphSpectrumAnalyzer.ScrollMinX = 0D;
            m_GraphSpectrumAnalyzer.ScrollMinY = 0D;
            m_GraphSpectrumAnalyzer.ScrollMinY2 = 0D;
            m_GraphSpectrumAnalyzer.Size = new System.Drawing.Size(123, 54);
            m_GraphSpectrumAnalyzer.TabIndex = 49;
            m_GraphSpectrumAnalyzer.TabStop = false;
            m_GraphSpectrumAnalyzer.UseExtendedPrintDialog = true;
            m_GraphSpectrumAnalyzer.Visible = false;
            m_GraphSpectrumAnalyzer.ContextMenuBuilder += new ZedGraph.ZedGraphControl.ContextMenuBuilderEventHandler(this.objGraph_ContextMenuBuilder);
            m_GraphSpectrumAnalyzer.ZoomEvent += new ZedGraph.ZedGraphControl.ZoomEventHandler(this.zedSpectrumAnalyzer_ZoomEvent);

            // Get a reference to the GraphPane instance in the ZedGraphControl
            GraphPane myPane = m_GraphSpectrumAnalyzer.GraphPane;

            m_PointList_Realtime = new PointPairList();
            m_PointList_Max = new PointPairList();
            m_PointList_MaxHold = new PointPairList();
            m_PointList_Min = new PointPairList();
            m_PointList_Avg = new PointPairList();
            m_LimitLineMax = new LimitLine();
            m_LimitLineMin = new LimitLine();
            m_LimitLineOverload = new LimitLine();

            m_GraphLimitLineMax = m_GraphSpectrumAnalyzer.GraphPane.AddCurve("Limit Max", m_LimitLineMax, Color.Magenta, SymbolType.Circle);
            m_GraphLimitLineMax.Line.Width = 1;
            m_GraphLimitLineMin = m_GraphSpectrumAnalyzer.GraphPane.AddCurve("Limit Min", m_LimitLineMin, Color.DarkMagenta, SymbolType.Circle);
            m_GraphLimitLineMin.Line.Width = 1;
            m_GraphLimitLineOverload = m_GraphSpectrumAnalyzer.GraphPane.AddCurve("Overload", m_LimitLineOverload, Color.DarkRed, SymbolType.None);
            m_GraphLimitLineOverload.Line.Style=DashStyle.DashDot;
            m_GraphLimitLineOverload.Line.Width = 1;

            m_MaxBar = m_GraphSpectrumAnalyzer.GraphPane.AddHiLowBar("Max", m_PointList_Max, Color.Red);
            m_MaxBar.Bar.Border.Color = Color.DarkRed;
            m_MaxBar.Bar.Border.Width = 3;
            m_GraphLine_Realtime = m_GraphSpectrumAnalyzer.GraphPane.AddCurve("Realtime", m_PointList_Realtime, m_Markers.m_arrCurveColors[(int)RFExplorerSignalType.Realtime], SymbolType.None);
            m_GraphLine_Realtime.Line.Width = 4;
            m_GraphLine_Realtime.Line.SmoothTension = 0.2F;
            m_GraphLine_Min = m_GraphSpectrumAnalyzer.GraphPane.AddCurve("Min", m_PointList_Min, m_Markers.m_arrCurveColors[(int)RFExplorerSignalType.Min], SymbolType.None);
            m_GraphLine_Min.Line.Width = 3;
            m_GraphLine_Min.Line.SmoothTension = 0.3F;
            m_GraphLine_Min.Line.Fill = new Fill(Color.DarkGreen, Color.LightGreen, 90);
            m_GraphLine_Avg = m_GraphSpectrumAnalyzer.GraphPane.AddCurve("Avg", m_PointList_Avg, m_Markers.m_arrCurveColors[(int)RFExplorerSignalType.Average], SymbolType.None);
            m_GraphLine_Avg.Line.Width = 3;
            m_GraphLine_Avg.Line.SmoothTension = 0.3F;
            m_GraphLine_Avg.Line.Fill = new Fill(Color.Brown, Color.Salmon, 90);
            m_GraphLine_Max = m_GraphSpectrumAnalyzer.GraphPane.AddCurve("Max", m_PointList_Max, m_Markers.m_arrCurveColors[(int)RFExplorerSignalType.MaxPeak], SymbolType.None);
            m_GraphLine_Max.Line.Width = 3;
            m_GraphLine_Max.Line.SmoothTension = 0.3F;
            m_GraphLine_Max.Line.Fill = new Fill(Color.Red, Color.Salmon, 90);
            m_GraphLine_MaxHold = m_GraphSpectrumAnalyzer.GraphPane.AddCurve("Max Hold", m_PointList_MaxHold, m_Markers.m_arrCurveColors[(int)RFExplorerSignalType.MaxHold], SymbolType.None);
            m_GraphLine_MaxHold.Line.Width = 6;
            m_GraphLine_MaxHold.Line.SmoothTension = 0.3F;
            m_GraphLine_MaxHold.Line.Fill = new Fill(Color.Salmon, Color.LightSalmon, 90);

            foreach (CurveItem objCurve in m_GraphSpectrumAnalyzer.GraphPane.CurveList)
            {
                objCurve.IsVisible = false;
                objCurve.Label.IsVisible = false;
            }

            //Define button bar
            m_arrAnalyzerButtonList[0] = btnAutoscale;
            m_arrAnalyzerButtonList[1] = btnTop5plus;
            m_arrAnalyzerButtonList[2] = btnTop5minus;
            m_arrAnalyzerButtonList[3] = btnMoveFreqDecLarge;
            m_arrAnalyzerButtonList[4] = btnMoveFreqDecSmall;
            m_arrAnalyzerButtonList[5] = btnSpanInc;
            m_arrAnalyzerButtonList[6] = btnSpanMax;
            m_arrAnalyzerButtonList[7] = btnSpanDefault;
            m_arrAnalyzerButtonList[8] = btnCenterMark;
            m_arrAnalyzerButtonList[9] = btnSpanMin;
            m_arrAnalyzerButtonList[10] = btnSpanDec;
            m_arrAnalyzerButtonList[11] = btnMoveFreqIncLarge;
            m_arrAnalyzerButtonList[12] = btnMoveFreqIncSmall;
            m_arrAnalyzerButtonList[13] = btnBottom5plus;
            m_arrAnalyzerButtonList[14] = btnBottom5minus;

            btnCenterMark.Tag = (string)_OnlyIfConnected;
            btnSpanMin.Tag = (string)_OnlyIfConnected;
            btnSpanDefault.Tag = (string)_OnlyIfConnected;
            btnSpanMax.Tag = (string)_OnlyIfConnected;
            btnSpanDec.Tag = (string)_OnlyIfConnected;
            btnSpanInc.Tag = (string)_OnlyIfConnected;
            btnMoveFreqDecSmall.Tag = (string)_OnlyIfConnected;
            btnMoveFreqIncSmall.Tag = (string)_OnlyIfConnected;
            btnMoveFreqDecLarge.Tag = (string)_OnlyIfConnected;
            btnMoveFreqIncLarge.Tag = (string)_OnlyIfConnected;

            //Make all buttons same size, required for scaled text configurations
            for (int nInd = 0; nInd < m_arrAnalyzerButtonList.Length; nInd++)
            {
                m_arrAnalyzerButtonList[nInd].Width = btnBottom5plus.Width; //btnBottom5plus is currently the one with larger text
                m_arrAnalyzerButtonList[nInd].AutoSize = true;
                m_arrAnalyzerButtonList[nInd].AutoSizeMode = AutoSizeMode.GrowOnly;
            }

            CreateMarkerConfigPanel();

            //MessageBox.Show(btnSend.Width.ToString());

            //Define control bar
            m_tableLayoutControlArea.SuspendLayout();
            m_tableLayoutControlArea.AutoSize = true;
            m_tableLayoutControlArea.ColumnCount = 10;
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
            m_tableLayoutControlArea.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 10F));
            m_tableLayoutControlArea.Location = new System.Drawing.Point(6, 3);
            m_tableLayoutControlArea.Name = "m_tableLayoutControlArea";
            m_tableLayoutControlArea.RowCount = 1;
            m_tableLayoutControlArea.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, m_groupControl_FreqSettings.Height));
            m_tableLayoutControlArea.Size = new System.Drawing.Size(10, 122);
            m_tableLayoutControlArea.MaximumSize = new System.Drawing.Size(Width, 122);
            m_tableLayoutControlArea.TabIndex = 61;
            m_tableLayoutControlArea.Visible = false;
            int nSaveBtnWidth = btnAnalyzerSend.Width;
            btnAnalyzerSend.AutoSize = false;
            btnAnalyzerSend.Dock = DockStyle.None;
            btnAnalyzerFreqSettingsReset.Dock = DockStyle.None;
            btnAnalyzerFreqSettingsReset.AutoSize = false;
            m_sAnalyzerCenterFreq.Width = (int)(label_sCenter.Width * 1.4);
            m_sAnalyzerStartFreq.Width = (int)(label_sCenter.Width * 1.4);
            m_sAnalyzerEndFreq.Width = (int)(label_sCenter.Width * 1.4);
            m_sAnalyzerBottomAmplitude.Width = (int)(label_sCenter.Width * 1.4);
            m_sAnalyzerTopAmplitude.Width = (int)(label_sCenter.Width * 1.4);
            m_sAnalyzerFreqSpan.Width = (int)(label_sCenter.Width * 1.4);
            btnAnalyzerSend.Width = nSaveBtnWidth;
            btnAnalyzerFreqSettingsReset.Width = nSaveBtnWidth;

            m_groupControl_DataFeed.Height = m_groupControl_FreqSettings.Height;
            m_groupControl_RemoteScreen.Height = m_groupControl_FreqSettings.Height;
            m_groupControl_Commands.Height = m_groupControl_FreqSettings.Height;
            m_groupControl_RFEGen_CW.Height = m_groupControl_FreqSettings.Height;
            m_groupControl_RFEGen_FrequencySweep.Height = m_groupControl_FreqSettings.Height;
            m_groupCOMPortAnalyzer.Height = m_groupControl_FreqSettings.Height;
            m_groupCOMPortGenerator.Height = m_groupControl_FreqSettings.Height;
            m_groupControl_RFEGen_Tracking.Height = m_groupControl_FreqSettings.Height;
            m_tableLayoutControlArea.Controls.Clear();
            Controls.Remove(m_groupControl_DataFeed);
            Controls.Remove(m_groupControl_FreqSettings);
            Controls.Remove(m_groupControl_RemoteScreen);
            Controls.Remove(m_groupControl_Commands);
            Controls.Remove(m_groupControl_RFEGen_CW);
            Controls.Remove(m_groupControl_RFEGen_FrequencySweep);
            Controls.Remove(m_groupControl_RFEGen_Tracking);
            m_tableLayoutControlArea.Controls.Add(m_groupCOMPortAnalyzer, 0, 0);
            m_tableLayoutControlArea.Controls.Add(m_groupCOMPortGenerator, 1, 0);
            m_tableLayoutControlArea.Controls.Add(m_groupControl_DataFeed, 2, 0);
            m_tableLayoutControlArea.Controls.Add(m_groupControl_FreqSettings, 3, 0);
            m_tableLayoutControlArea.Controls.Add(m_groupControl_RemoteScreen, 4, 0);
            m_tableLayoutControlArea.Controls.Add(m_groupControl_Commands, 5, 0);
            m_tableLayoutControlArea.Controls.Add(m_groupControl_RFEGen_CW, 6, 0);
            m_tableLayoutControlArea.Controls.Add(m_groupControl_RFEGen_FrequencySweep, 7, 0);
            m_tableLayoutControlArea.Controls.Add(m_groupControl_RFEGen_Tracking, 8, 0);
            m_groupControl_FreqSettings.Dock = DockStyle.Fill;
            m_groupControl_RemoteScreen.Dock = DockStyle.Fill;
            //m_tableLayoutControlArea.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
            m_tableLayoutControlArea.ResumeLayout();

            // Set the titles and axis labels
            //myPane.Title.FontSpec.Size = 10;
            myPane.XAxis.Title.IsVisible = menuShowAxisLabels.Checked;
            myPane.XAxis.Title.Text = "Frequency (MHZ)";
            myPane.XAxis.Scale.MajorStep = 1.0;
            myPane.XAxis.Scale.MinorStep = 0.2;

            myPane.Margin.Left = 20;
            myPane.Margin.Right = -5;

            // Show the x axis grid
            myPane.XAxis.MajorGrid.IsVisible = true;
            myPane.XAxis.Type = AxisType.Linear;

            myPane.YAxis.Title.IsVisible = menuShowAxisLabels.Checked;
            // turn off the opposite tics so the Y tics don't show up on the Y2 axis
            myPane.YAxis.MajorTic.IsOpposite = false;
            myPane.YAxis.MinorTic.IsOpposite = false;
            myPane.YAxis.MajorGrid.IsVisible = true;
            // Don't display the Y zero line
            myPane.YAxis.MajorGrid.IsZeroLine = false;
            // Align the Y axis labels so they are flush to the axis
            myPane.YAxis.Scale.Align = AlignP.Inside;

            m_GraphSpectrumAnalyzer.IsShowPointValues = true;
            m_GraphSpectrumAnalyzer.PointValueEvent += new ZedGraphControl.PointValueHandler(GraphPointValueHandler);

            myPane.BarSettings.Type = BarType.Overlay;
            myPane.BarSettings.MinBarGap = 0.1f;
            myPane.BarSettings.MinClusterGap = 0.1f;
            myPane.BarSettings.ClusterScaleWidthAuto = false;
            myPane.BarSettings.ClusterScaleWidth = 5.0f;

            m_StatusGraphText_Analyzer = new TextObj("RF Explorer DISCONNECTED", 0.01, 0.02, CoordType.ChartFraction);
            m_StatusGraphText_Analyzer.IsClippedToChartRect = true;
            //m_RFEConfig.ZOrder = 0;
            m_StatusGraphText_Analyzer.FontSpec.FontColor = Color.DarkGray;
            m_StatusGraphText_Analyzer.Location.AlignH = AlignH.Left;
            m_StatusGraphText_Analyzer.Location.AlignV = AlignV.Top;
            m_StatusGraphText_Analyzer.FontSpec.IsBold = false;
            m_StatusGraphText_Analyzer.FontSpec.Size = 10f;
            m_StatusGraphText_Analyzer.FontSpec.Border.IsVisible = false;
            m_StatusGraphText_Analyzer.FontSpec.Fill.IsVisible = false;
            m_StatusGraphText_Analyzer.FontSpec.StringAlignment = StringAlignment.Near;
            m_StatusGraphText_Analyzer.FontSpec.IsDropShadow = true;
            m_StatusGraphText_Analyzer.FontSpec.DropShadowOffset = 0.1f;
            m_StatusGraphText_Analyzer.FontSpec.Family = "Tahoma";
            myPane.GraphObjList.Add(m_StatusGraphText_Analyzer);

            m_OverloadText = new TextObj("RF LEVEL OVERLOAD - COMPRESSION", 0.5, 0.05, CoordType.ChartFraction);
            m_OverloadText.IsClippedToChartRect = true;
            //m_RFEConfig.ZOrder = 0;
            m_OverloadText.FontSpec.FontColor = Color.DarkRed;
            m_OverloadText.Location.AlignH = AlignH.Center;
            m_OverloadText.Location.AlignV = AlignV.Top;
            m_OverloadText.FontSpec.IsBold = true;
            m_OverloadText.FontSpec.Size = 12f;
            m_OverloadText.FontSpec.Border.IsVisible = false;
            m_OverloadText.FontSpec.Fill.IsVisible = false;
            m_OverloadText.FontSpec.StringAlignment = StringAlignment.Center;
            m_OverloadText.FontSpec.IsDropShadow = false;
            m_OverloadText.FontSpec.Family = "Tahoma";
            m_OverloadText.IsVisible = false;
            myPane.GraphObjList.Add(m_OverloadText);

            m_arrWiFiBarText = new TextObj[13];
            m_arrWiFiBarText.Initialize();
            for (int nInd = 0; nInd < m_arrWiFiBarText.Length; nInd++)
            {
                m_arrWiFiBarText[nInd] = new TextObj("", 0, 0, CoordType.AxisXYScale);
                m_arrWiFiBarText[nInd].IsClippedToChartRect = true;
                m_arrWiFiBarText[nInd].Location.AlignH = AlignH.Center;
                m_arrWiFiBarText[nInd].Location.AlignV = AlignV.Bottom;
                m_arrWiFiBarText[nInd].FontSpec.Size = 7;
                m_arrWiFiBarText[nInd].FontSpec.Border.IsVisible = false;
                m_arrWiFiBarText[nInd].FontSpec.FontColor = Color.Red;
                m_arrWiFiBarText[nInd].FontSpec.StringAlignment = StringAlignment.Center;
                m_arrWiFiBarText[nInd].FontSpec.Fill.IsVisible = false;
                myPane.GraphObjList.Add(m_arrWiFiBarText[nInd]);
            }

            m_Markers.ConnectToGraph(myPane);

            DefineGraphColors();
        }
        private void InitializeTrackingGeneratorGraph()
        {
#if CALLSTACK
            Console.WriteLine("CALLSTACK:InitializeTrackingGeneratorGraph");
#endif

            m_GraphTrackingGenerator.IsAutoScrollRange = true;
            m_GraphTrackingGenerator.EditButtons       = System.Windows.Forms.MouseButtons.Left;
            m_GraphTrackingGenerator.IsAntiAlias       = true;
            m_GraphTrackingGenerator.IsEnableSelection = true;
            m_GraphTrackingGenerator.Location          = new System.Drawing.Point(8, 257);
            m_GraphTrackingGenerator.Name                   = "zedTracking";
            m_GraphTrackingGenerator.PanModifierKeys        = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Shift | System.Windows.Forms.Keys.None)));
            m_GraphTrackingGenerator.ScrollGrace            = 0D;
            m_GraphTrackingGenerator.ScrollMaxX             = 0D;
            m_GraphTrackingGenerator.ScrollMaxY             = 0D;
            m_GraphTrackingGenerator.ScrollMaxY2            = 0D;
            m_GraphTrackingGenerator.ScrollMinX             = 0D;
            m_GraphTrackingGenerator.ScrollMinY             = 0D;
            m_GraphTrackingGenerator.ScrollMinY2            = 0D;
            m_GraphTrackingGenerator.Size                   = new System.Drawing.Size(123, 54);
            m_GraphTrackingGenerator.TabIndex               = 49;
            m_GraphTrackingGenerator.TabStop                = false;
            m_GraphTrackingGenerator.UseExtendedPrintDialog = true;
            m_GraphTrackingGenerator.Visible                = true;
            m_GraphTrackingGenerator.ContextMenuBuilder    += new ZedGraph.ZedGraphControl.ContextMenuBuilderEventHandler(this.objGraph_ContextMenuBuilder);
            //m_graphTrackingGenerator.ZoomEvent += new ZedGraph.ZedGraphControl.ZoomEventHandler(this.zedSpectrumAnalyzer_ZoomEvent);

            // Get a reference to the GraphPane instance in the ZedGraphControl
            GraphPane myPane = m_GraphTrackingGenerator.GraphPane;

            m_LimitLineGenerator_Max                 = new LimitLine();
            m_LimitLineGenerator_Min                 = new LimitLine();
            m_GraphLimitLineGenerator_Max            = myPane.AddCurve("Limit Max", m_LimitLineGenerator_Max, Color.Magenta, SymbolType.Circle);
            m_GraphLimitLineGenerator_Max.Line.Width = 1;
            m_GraphLimitLineGenerator_Min            = myPane.AddCurve("Limit Min", m_LimitLineGenerator_Min, Color.DarkMagenta, SymbolType.Circle);
            m_GraphLimitLineGenerator_Min.Line.Width = 1;

            m_PointList_Tracking_Normal                    = new PointPairList();
            m_GraphLine_Tracking_Normal                    = myPane.AddCurve("Realtime", m_PointList_Tracking_Normal, Color.Blue, SymbolType.None);
            m_GraphLine_Tracking_Normal.Line.Width         = 1;
            m_GraphLine_Tracking_Normal.Line.SmoothTension = 0.2F;

            m_PointList_Tracking_Avg                    = new PointPairList();
            m_GraphLine_Tracking_Avg                    = myPane.AddCurve("Average", m_PointList_Tracking_Avg, Color.DarkRed, SymbolType.None);
            m_GraphLine_Tracking_Avg.Line.Width         = 4;
            m_GraphLine_Tracking_Avg.Line.SmoothTension = 0.3F;

            foreach (CurveItem objCurve in myPane.CurveList)
            {
                objCurve.IsVisible       = false;
                objCurve.Label.IsVisible = false;
            }

            // Set the titles and axis labels
            //myPane.Title.FontSpec.Size = 10;
            myPane.XAxis.Title.IsVisible     = true;
            myPane.XAxis.Title.Text          = "Frequency (MHZ)";
            myPane.XAxis.Scale.MajorStepAuto = true;
            myPane.XAxis.Scale.MinorStepAuto = true;
            myPane.XAxis.Type   = AxisType.Linear;
            myPane.Margin.Left  = 20;
            myPane.Margin.Right = -5;

            m_GraphTrackingGenerator.IsShowPointValues = true;

            // Show the x axis grid
            myPane.XAxis.MajorGrid.IsVisible = true;
            myPane.XAxis.Type = AxisType.Linear;

            myPane.YAxis.Title.IsVisible = true;
            // turn off the opposite tics so the Y tics don't show up on the Y2 axis
            myPane.YAxis.MajorTic.IsOpposite = false;
            myPane.YAxis.MinorTic.IsOpposite = false;
            myPane.YAxis.MajorGrid.IsVisible = true;
            // Don't display the Y zero line
            myPane.YAxis.MajorGrid.IsZeroLine = false;
            // Align the Y axis labels so they are flush to the axis
            myPane.YAxis.Scale.Align = AlignP.Inside;
            UpdateTrackingYAxisType();

            myPane.Title.Text = _RFEGEN_TRACKING_TITLE;

            m_GraphTrackingGenerator.IsShowPointValues = true;
            m_GraphTrackingGenerator.PointValueEvent  += new ZedGraphControl.PointValueHandler(GraphPointGeneratorValueHandler);

            m_StatusGraphText_Tracking = new TextObj("Signal Generator DISCONNECTED", 0.01, 0.02, CoordType.ChartFraction);
            m_StatusGraphText_Tracking.IsClippedToChartRect      = true;
            m_StatusGraphText_Tracking.FontSpec.FontColor        = Color.DarkGray;
            m_StatusGraphText_Tracking.Location.AlignH           = AlignH.Left;
            m_StatusGraphText_Tracking.Location.AlignV           = AlignV.Top;
            m_StatusGraphText_Tracking.FontSpec.IsBold           = false;
            m_StatusGraphText_Tracking.FontSpec.Size             = 10f;
            m_StatusGraphText_Tracking.FontSpec.Border.IsVisible = false;
            m_StatusGraphText_Tracking.FontSpec.Fill.IsVisible   = false;
            m_StatusGraphText_Tracking.FontSpec.StringAlignment  = StringAlignment.Near;
            m_StatusGraphText_Tracking.FontSpec.IsDropShadow     = true;
            m_StatusGraphText_Tracking.FontSpec.DropShadowOffset = 0.1f;
            m_StatusGraphText_Tracking.FontSpec.DropShadowColor  = Color.LightBlue;
            m_StatusGraphText_Tracking.FontSpec.Family           = "Tahoma";
            myPane.GraphObjList.Add(m_StatusGraphText_Tracking);

            m_TrackingStatus = new TextObj("Tracking Normalization in Progress, \nplease wait...", 0.5, 0.5, CoordType.ChartFraction);
            m_TrackingStatus.Location.AlignH           = AlignH.Center;
            m_TrackingStatus.Location.AlignV           = AlignV.Center;
            m_TrackingStatus.FontSpec.Size             = 20;
            m_TrackingStatus.FontSpec.FontColor        = Color.DarkRed;
            m_TrackingStatus.FontSpec.IsDropShadow     = true;
            m_TrackingStatus.FontSpec.DropShadowOffset = 0.05f;
            m_TrackingStatus.IsVisible = false;
            myPane.GraphObjList.Add(m_TrackingStatus);

            m_TrackingProgressText = new TextObj("Tracking step: 0/0 0%", 0.01, 0.08, CoordType.ChartFraction);
            m_TrackingProgressText.IsClippedToChartRect      = true;
            m_TrackingProgressText.FontSpec.FontColor        = Color.DarkBlue;
            m_TrackingProgressText.Location.AlignH           = AlignH.Left;
            m_TrackingProgressText.Location.AlignV           = AlignV.Top;
            m_TrackingProgressText.FontSpec.IsBold           = false;
            m_TrackingProgressText.FontSpec.Size             = 8f;
            m_TrackingProgressText.FontSpec.Border.IsVisible = false;
            m_TrackingProgressText.FontSpec.Fill.IsVisible   = false;
            m_TrackingProgressText.FontSpec.StringAlignment  = StringAlignment.Near;
            m_TrackingProgressText.FontSpec.IsDropShadow     = true;
            m_TrackingProgressText.FontSpec.DropShadowColor  = Color.LightBlue;
            m_TrackingProgressText.FontSpec.DropShadowOffset = 0.1f;
            m_TrackingProgressText.FontSpec.Family           = "Tahoma";
            m_TrackingProgressText.IsVisible = false;
            myPane.GraphObjList.Add(m_TrackingProgressText);

            this.m_tabRFGen.ResumeLayout(false);
            this.m_tabRFGen.PerformLayout();

            m_MarkersSNA.ConnectToGraph(myPane);
        }