private void OnRFE_UpdateData(object sender, EventArgs e) { RFESweepData objData = m_objRFE.SweepData.GetData(m_objRFE.SweepData.Count - 1); int i; if (null == objData) { return; } if (!m_bInitializedGraphics) { InitGraphics(objData.TotalDataPoints); } for (i = 0; i < m_iNumDataPoints; i++) { m_fCurrentSweepAmp[i] = objData.GetAmplitudeDBM((ushort)i); m_fCurrentSweepFreq[i] = objData.GetFrequencyMHZ((ushort)i); m_fCurrentTimeStamp[i] = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; } UpdateGraphics(objData.StartFrequencyMHZ, objData.EndFrequencyMHZ); RecordData(objData); }
public void RecordData(RFESweepData objData) { double fCurrentTimeStamp; double fElapsed; double fFreq; double fAmp; int i; if (!m_bIsRecording) { return; } fElapsed = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; m_bwRecorder.Write(fElapsed); m_bwRecorder.Write(objData.StartFrequencyMHZ); m_bwRecorder.Write(objData.EndFrequencyMHZ); m_bwRecorder.Write(m_iDSPMode); m_bwRecorder.Write(m_iNumDataPoints); for (i = 0; i < m_iNumDataPoints; i++) { fAmp = objData.GetAmplitudeDBM((ushort)i); m_bwRecorder.Write(fAmp); fFreq = objData.GetFrequencyMHZ((ushort)i); m_bwRecorder.Write(fFreq); fCurrentTimeStamp = DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; m_bwRecorder.Write(fCurrentTimeStamp); } }
private void OnRFE_UpdateData(object sender, EventArgs e) { labelSweeps.Text = "Sweeps: " + m_objRFE.SweepData.Count.ToString(); RFESweepData objData = m_objRFE.SweepData.GetData(m_objRFE.SweepData.Count - 1); if (objData != null) { UInt16 nPeak = objData.GetPeakStep(); labelFrequency.Text = objData.GetFrequencyMHZ(nPeak).ToString("f3") + " MHZ"; labelAmplitude.Text = objData.GetAmplitudeDBM(nPeak).ToString("f2") + " dBm"; } }
static void OnRFE_UpdateData(object sender, EventArgs e) { RFESweepData objSweep = g_objRFE.SweepData.GetData(g_objRFE.SweepData.Count - 1); if (!g_bIgnoreSweeps) { g_nSweepCounter++; ushort nPeak = objSweep.GetPeakDataPoint(); Trace.WriteLine("Sweep: " + g_objRFE.SweepData.Count.ToString("D3") + " Peak: " + objSweep.GetFrequencyMHZ(nPeak).ToString("f3") + "MHz " + objSweep.GetAmplitudeDBM(nPeak).ToString("f1") + "dBm"); if (!String.IsNullOrEmpty(g_sFileCSV)) { if (!g_bCountActive || (g_nTotalFiles > 0)) //if g_bCountActive generate files only if g_nTotalFiles is greater than 0 { string sFile = g_sFileCSV + "_" + g_nSweepCounter.ToString("0000") + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".csv"; objSweep.SaveFileCSV(sFile, '\t', null); Trace.WriteLine("Saved file " + sFile); if (g_nTotalFiles > 0) { g_nTotalFiles--; //reduce pending files to generate } } } if (g_objRFE.SweepData.Count > 100) { SaveRFEFile(); g_objRFE.SweepData.CleanAll(); } } }
static void OnRFE_UpdateData(object sender, EventArgs e) { if (!g_bIgnoreSweeps) { RFESweepData objSweep = g_objRFE.SweepData.GetData(g_objRFE.SweepData.Count - 1); ushort nPeak = objSweep.GetPeakStep(); Console.WriteLine("Sweep: " + g_objRFE.SweepData.Count.ToString("D3") + " Peak: " + objSweep.GetFrequencyMHZ(nPeak).ToString("f3") + "MHz " + objSweep.GetAmplitudeDBM(nPeak).ToString("f1") + "dBm"); } }
static void OnRFE_UpdateData(object sender, EventArgs e) { RFESweepData objSweep = g_objRFE.SweepData.GetData(g_objRFE.SweepData.Count - 1); if (!g_bIgnoreSweeps) { g_nSweepCounter++; ushort nPeak = objSweep.GetPeakStep(); Console.WriteLine("Sweep: " + g_objRFE.SweepData.Count.ToString("D3") + " Peak: " + objSweep.GetFrequencyMHZ(nPeak).ToString("f3") + "MHz " + objSweep.GetAmplitudeDBM(nPeak).ToString("f1") + "dBm"); if (!String.IsNullOrEmpty(g_sFileCSV)) { string sFile = g_sFileCSV + "_" + g_nSweepCounter.ToString("0000") + "_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".csv"; objSweep.SaveFileCSV(sFile, '\t', null); Console.WriteLine("Saved file " + sFile); } if (g_objRFE.SweepData.Count > 100) { SaveRFEFile(); g_objRFE.SweepData.CleanAll(); } } //else //{ // Console.WriteLine("Ignored sweep " + objSweep.Dump()); //} }
private void OnRFE_UpdateData(object sender, EventArgs e) { labelSweeps.Text = "Sweeps: " + m_objRFE.SweepData.Count.ToString(); RFESweepData objData = m_objRFE.SweepData.GetData(m_objRFE.SweepData.Count - 1); if (objData != null) { UInt16 nPeak = objData.GetPeakStep(); labelFrequency.Text = objData.GetFrequencyMHZ(nPeak).ToString("f3") + " MHZ"; labelAmplitude.Text = objData.GetAmplitudeDBM(nPeak).ToString("f2") + " dBm"; for (ushort i = 0; i < objData.TotalSteps; i++) { DataPoint point = new DataPoint(); point.freq = objData.GetFrequencyMHZ(i); point.amp = objData.GetAmplitudeDBM(i); if (currentData.Count < objData.TotalSteps) { currentData.Add(point); } else { currentData[i] = point; } if (peakHoldData.Count < objData.TotalSteps) { peakHoldData.Add(point); } else { if (point.amp > peakHoldData[i].amp) { peakHoldData[i] = point; } } } for (ushort i = 0; i < objData.TotalSteps; i++) { if (ScanPlot.Series[0].Points.Count < currentData.Count) { ScanPlot.Series[0].Points.AddXY(currentData[i].freq, currentData[i].amp); } else { ScanPlot.Series[0].Points[i].SetValueXY(currentData[i].freq, currentData[i].amp); } if (ScanPlot.Series[1].Points.Count < peakHoldData.Count) { ScanPlot.Series[1].Points.AddXY(peakHoldData[i].freq, peakHoldData[i].amp); } else { ScanPlot.Series[1].Points[i].SetValueXY(peakHoldData[i].freq, peakHoldData[i].amp); } } ScanPlot.Refresh(); } }
private void DisplayTrackingData() { #if CALLSTACK_REALTIME Console.WriteLine("CALLSTACK:DisplayTrackingData"); #endif m_PointList_Tracking_Normal.Clear(); m_GraphLine_Tracking_Normal.Clear(); m_PointList_Tracking_Avg.Clear(); m_GraphLine_Tracking_Avg.Clear(); DisplayTrackingData_TextProgress(false); if (m_objRFEAnalyzer.IsTrackingNormalizing != m_TrackingStatus.IsVisible) { m_TrackingStatus.IsVisible = m_objRFEAnalyzer.IsTrackingNormalizing; m_GraphTrackingGenerator.Refresh(); } if (m_objRFEAnalyzer.TrackingData.Count == 0) { m_GraphTrackingGenerator.Refresh(); return; //nothing to paint } //Use the latest data loaded uint nLastSample = m_objRFEAnalyzer.TrackingData.Count - 1; uint nAvailableAverageSamples = 1; uint nAverageIterations = Convert.ToUInt16(m_nRFGENIterationAverage.Value); if (nAverageIterations == 0) { nAverageIterations = 1; } if (nLastSample >= (nAverageIterations - 1)) { nAvailableAverageSamples = nAverageIterations; } else { nAvailableAverageSamples = nLastSample + 1; } RFESweepData objSweep = m_objRFEAnalyzer.TrackingData.GetData(nLastSample); RFESweepData objSweepAvg = m_objRFEAnalyzer.TrackingData.GetAverage(nLastSample + 1 - nAvailableAverageSamples, nLastSample); objSweep.StepFrequencyMHZ = m_objRFEGenerator.RFGenTrackStepMHZ(); //step tracking frequency is not known by analyzer double dMinDB = 100; double dMaxDB = -120; for (UInt16 nInd = 0; nInd < objSweep.TotalSteps; nInd++) { //normal realtime double dDB = objSweep.GetAmplitudeDBM(nInd) - m_objRFEAnalyzer.TrackingNormalizedData.GetAmplitudeDBM(nInd); if (dDB > dMaxDB) { dMaxDB = dDB; } if (dDB < dMinDB) { dMinDB = dDB; } m_PointList_Tracking_Normal.Add(objSweep.GetFrequencyMHZ(nInd), dDB, RFECommunicator.MIN_AMPLITUDE_DBM); //average if (objSweepAvg != null) { dDB = objSweepAvg.GetAmplitudeDBM(nInd) - m_objRFEAnalyzer.TrackingNormalizedData.GetAmplitudeDBM(nInd); if (dDB > dMaxDB) { dMaxDB = dDB; } if (dDB < dMinDB) { dMinDB = dDB; } m_PointList_Tracking_Avg.Add(objSweepAvg.GetFrequencyMHZ(nInd), dDB, RFECommunicator.MIN_AMPLITUDE_DBM); } } m_GraphLine_Tracking_Normal.Points = m_PointList_Tracking_Normal; m_GraphLine_Tracking_Normal.IsVisible = true; m_GraphLine_Tracking_Normal.Label.IsVisible = true; m_GraphLine_Tracking_Avg.Points = m_PointList_Tracking_Avg; m_GraphLine_Tracking_Avg.IsVisible = true; m_GraphLine_Tracking_Avg.Label.IsVisible = true; m_GraphTrackingGenerator.GraphPane.XAxis.Scale.Min = objSweep.StartFrequencyMHZ; m_GraphTrackingGenerator.GraphPane.XAxis.Scale.Max = objSweep.EndFrequencyMHZ; double dGraphMin = m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Min; if ((dGraphMin < dMinDB - 15) || (dGraphMin > dMinDB - 5)) { m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Min = dMinDB - 10; } double dGraphMax = m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Max; if ((dGraphMax > dMaxDB + 15) || (dGraphMax < dMaxDB + 5)) { m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Max = dMaxDB + 10; } m_GraphTrackingGenerator.AxisChange(); m_GraphTrackingGenerator.Refresh(); }
private void DisplayTrackingData() { #if CALLSTACK_REALTIME Console.WriteLine("CALLSTACK:DisplayTrackingData"); #endif bool bPlaySound = false; bool bReinitGraphLimits = (m_PointList_Tracking_Avg.Count == 0); m_PointList_Tracking_Normal.Clear(); m_GraphLine_Tracking_Normal.Clear(); m_GraphLine_Tracking_Normal.Line.IsSmooth = menuSmoothSignals.Checked; m_PointList_Tracking_Avg.Clear(); m_GraphLine_Tracking_Avg.Clear(); m_GraphLine_Tracking_Avg.Line.IsSmooth = menuSmoothSignals.Checked; m_GraphTrackingGenerator.GraphPane.YAxis.MajorGrid.IsVisible = menuShowGrid.Checked; m_GraphTrackingGenerator.GraphPane.XAxis.MajorGrid.IsVisible = menuShowGrid.Checked; DisplayTrackingData_TextProgress(false); if (m_objRFEAnalyzer.IsTrackingNormalizing != m_TrackingStatus.IsVisible) { m_TrackingStatus.IsVisible = m_objRFEAnalyzer.IsTrackingNormalizing; m_GraphTrackingGenerator.Refresh(); } m_MarkersSNA.HideAllMarkers(); //draw all marker except tracking 1 UpdateMarkerCollectionFromMenuSNA(); //remove old text from all peak track markers and redraw m_MarkersSNA.CleanAllMarkerText(0); if (m_objRFEAnalyzer.TrackingData.Count == 0) { m_GraphTrackingGenerator.Refresh(); return; //nothing to paint } //Use the latest data loaded uint nLastSample = m_objRFEAnalyzer.TrackingData.Count - 1; uint nAvailableAverageSamples = 1; uint nAverageIterations = m_ToolGroup_RFEGenTracking.Average; if (nAverageIterations == 0) { nAverageIterations = 1; } if (nLastSample >= (nAverageIterations - 1)) { nAvailableAverageSamples = nAverageIterations; } else { nAvailableAverageSamples = nLastSample + 1; } RFESweepData objSweep = m_objRFEAnalyzer.TrackingData.GetData(nLastSample); RFESweepData objSweepAvg = m_objRFEAnalyzer.TrackingData.GetMedianAverage(nLastSample + 1 - nAvailableAverageSamples, nLastSample); objSweep.StepFrequencyMHZ = m_objRFEGenerator.RFGenTrackStepMHZ(); //step tracking frequency is not known by analyzer double dMinDB = 100; double dMaxDB = -120; double dMarginMinDB = 10; double dMarginMaxDB = 10; for (UInt16 nInd = 0; nInd < objSweep.TotalSteps; nInd++) { //normal realtime double dDB = objSweep.GetAmplitudeDBM(nInd) - m_objRFEAnalyzer.TrackingNormalizedData.GetAmplitudeDBM(nInd); if (dDB > dMaxDB) { dMaxDB = dDB; } if (dDB < dMinDB) { dMinDB = dDB; } m_PointList_Tracking_Normal.Add(objSweep.GetFrequencyMHZ(nInd), dDB, RFECommunicator.MIN_AMPLITUDE_DBM); //average if (objSweepAvg != null) { dDB = objSweepAvg.GetAmplitudeDBM(nInd) - m_objRFEAnalyzer.TrackingNormalizedData.GetAmplitudeDBM(nInd); if (dDB > dMaxDB) { dMaxDB = dDB; } if (dDB < dMinDB) { dMinDB = dDB; } m_PointList_Tracking_Avg.Add(objSweepAvg.GetFrequencyMHZ(nInd), dDB, RFECommunicator.MIN_AMPLITUDE_DBM); } } bool bUseVSWR = (m_ToolGroup_RFEGenTracking.ListSNAOptionsIndex == 2); if (bUseVSWR) { m_PointList_Tracking_Normal.ConvertToVSWR(100); m_PointList_Tracking_Avg.ConvertToVSWR(100); } m_GraphLine_Tracking_Normal.Points = m_PointList_Tracking_Normal; m_GraphLine_Tracking_Normal.IsVisible = true; m_GraphLine_Tracking_Normal.Label.IsVisible = true; m_GraphLine_Tracking_Avg.Points = m_PointList_Tracking_Avg; m_GraphLine_Tracking_Avg.IsVisible = true; m_GraphLine_Tracking_Avg.Label.IsVisible = true; if (!bUseVSWR) { //Limit lines are not supported in VSWR mode if (m_LimitLineGenerator_Max.Count > 1) { PointPairList listCheck = null; SelectSinglePointPairList(ref listCheck); if (listCheck != null) { m_GraphLimitLineGenerator_Max.Points = m_LimitLineGenerator_Max; m_GraphLimitLineGenerator_Max.IsVisible = true; if (m_LimitLineGenerator_Max.Intersect(listCheck, true)) { bPlaySound = true; m_GraphLimitLineGenerator_Max.Line.Width = 5; } else { m_GraphLimitLineGenerator_Max.Line.Width = 1; } int nDummy; m_LimitLineGenerator_Max.GetMaxMinValues(ref dMinDB, ref dMaxDB, out nDummy, out nDummy); dMarginMaxDB = 5; } else { m_GraphLimitLineGenerator_Max.IsVisible = false; } } if (m_LimitLineGenerator_Min.Count > 1) { PointPairList listCheck = null; SelectSinglePointPairList(ref listCheck); if (listCheck != null) { m_GraphLimitLineGenerator_Min.Points = m_LimitLineGenerator_Min; m_GraphLimitLineGenerator_Min.IsVisible = true; if (m_LimitLineGenerator_Min.Intersect(listCheck, false)) { bPlaySound = true; m_GraphLimitLineGenerator_Min.Line.Width = 5; } else { m_GraphLimitLineGenerator_Min.Line.Width = 1; } int nDummy; m_LimitLineGenerator_Min.GetMaxMinValues(ref dMinDB, ref dMaxDB, out nDummy, out nDummy); dMarginMinDB = 5; } else { m_GraphLimitLineGenerator_Min.IsVisible = false; } } } else { m_GraphLimitLineGenerator_Min.IsVisible = false; m_GraphLimitLineGenerator_Max.IsVisible = false; } m_GraphTrackingGenerator.GraphPane.XAxis.Scale.Min = objSweep.StartFrequencyMHZ; m_GraphTrackingGenerator.GraphPane.XAxis.Scale.Max = objSweep.EndFrequencyMHZ; double dGraphMin = m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Min; if (bReinitGraphLimits) { dGraphMin = -1E6; } if (bUseVSWR || (dGraphMin < dMinDB - (dMarginMinDB * 1.5)) || (dGraphMin > dMinDB - 5)) { if (bUseVSWR) { m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Min = 1; } else { m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Min = dMinDB - dMarginMinDB; } } double dGraphMax = m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Max; if (bReinitGraphLimits) { dGraphMax = 1E6; } if (bUseVSWR || (dGraphMax > dMaxDB + (dMarginMaxDB * 1.5)) || (dGraphMax < dMaxDB + 5)) { if (bUseVSWR) { m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Max = ConvertDB2VSWR(0.95 * dMaxDB, 105); } else { m_GraphTrackingGenerator.GraphPane.YAxis.Scale.Max = dMaxDB + dMarginMaxDB; } } if (bPlaySound && menuItemSoundAlarmLimitLine.Checked) { PlayNotificationSound(); } else { StopNotificationSound(); } //draw marker 1 double fTrackPeakMHZ = 0.0; if (m_arrMarkersEnabledMenu[0].Checked) { int nNormalIndex = -1; int nAvgIndex = -1; if (m_ToolGroup_RFEGenTracking.ListSNAOptions.Contains("Return Loss")) { nNormalIndex = m_PointList_Tracking_Normal.GetIndexMin(); nAvgIndex = m_PointList_Tracking_Avg.GetIndexMin(); } else { nNormalIndex = m_PointList_Tracking_Normal.GetIndexMax(); nAvgIndex = m_PointList_Tracking_Avg.GetIndexMax(); } double fTrackDBM = RFECommunicator.MIN_AMPLITUDE_DBM; if (m_ToolGroup_Markers_SNA.TrackSignalPeak == RFECommunicator.RFExplorerSignalType.Realtime) { fTrackPeakMHZ = m_PointList_Tracking_Normal[nNormalIndex].X; fTrackDBM = m_PointList_Tracking_Normal[nNormalIndex].Y; } else if (m_ToolGroup_Markers_SNA.TrackSignalPeak == RFECommunicator.RFExplorerSignalType.Average) { fTrackPeakMHZ = m_PointList_Tracking_Avg[nAvgIndex].X; fTrackDBM = m_PointList_Tracking_Avg[nAvgIndex].Y; } else { m_arrMarkersEnabledMenu[0].Checked = false; UpdateSNAMarkerControlContents(); } m_MarkersSNA.SetMarkerFrequency(0, fTrackPeakMHZ); } if (m_arrMarkersEnabledMenu[0].Checked) { double dAmplitude = m_PointList_Tracking_Normal.InterpolateX(m_MarkersSNA.GetMarkerFrequency(0)); m_MarkersSNA.UpdateMarker(0, RFECommunicator.RFExplorerSignalType.Realtime, dAmplitude); if ((m_ToolGroup_Markers_SNA.TrackSignalPeak == RFECommunicator.RFExplorerSignalType.Realtime) && menuShowPeak.Checked) { m_MarkersSNA.SetMarkerText(0, RFECommunicator.RFExplorerSignalType.Realtime, m_MarkersSNA.GetMarkerFrequency(0).ToString("0.000") + "MHZ\n" + dAmplitude.ToString("0.00") + GetCurrentAmplitudeUnitLabel()); } dAmplitude = m_PointList_Tracking_Avg.InterpolateX(m_MarkersSNA.GetMarkerFrequency(0)); m_MarkersSNA.UpdateMarker(0, RFECommunicator.RFExplorerSignalType.Average, dAmplitude); if ((m_ToolGroup_Markers_SNA.TrackSignalPeak == RFECommunicator.RFExplorerSignalType.Average) && menuShowPeak.Checked) { m_MarkersSNA.SetMarkerText(0, RFECommunicator.RFExplorerSignalType.Average, m_MarkersSNA.GetMarkerFrequency(0).ToString("0.000") + "MHZ\n" + dAmplitude.ToString("0.00") + GetCurrentAmplitudeUnitLabel()); } } UpdateMarkerCollectionFromMenuSNA(); //remove old text from all peak track markers and redraw m_MarkersSNA.CleanAllMarkerText(0); UpdateSNAMarkerControlValues(); m_GraphTrackingGenerator.AxisChange(); m_GraphTrackingGenerator.Refresh(); }