/// <summary>Fetches common results from the OFDM ModAcc measurement.</summary> /// <param name="wlanSignal">Specifies the WLAN signal to fetch results from.</param> /// <param name="selectorString">(Optional) Specifies the result name. See the RFmx help for more documentation of this parameter.</param> /// <returns>Common OFDM ModAcc measurement results.</returns> public static OFDMModAccResults FetchOFDMModAcc(RFmxWlanMX wlanSignal, string selectorString = "") { OFDMModAccResults modAccResults = new OFDMModAccResults(); wlanSignal.OfdmModAcc.Results.FetchCompositeRmsEvm(selectorString, 10, out modAccResults.CompositeRMSEVMMean_dB, out modAccResults.CompositeDataRMSEVMMean_dB, out modAccResults.CompositePilotRMSEVMMean_dB); wlanSignal.OfdmModAcc.Results.FetchNumberOfSymbolsUsed(selectorString, 10, out modAccResults.NumberOfSymbolsUsed); return(modAccResults); }
/// <summary> /// This example illustrates how to use the RFmxWLAN APIs to configure the analyzer to perform an OFDMModAcc measurement. /// You can use the Generator Basic example to generate the WLAN signal before running this example. /// </summary> static void Main(string[] args) { Console.WriteLine("\n----------------------- WLAN Analyzer Example -----------------------\n"); double centerFrequency = 3.5e9; //Hz string resourceName = "5840"; string signalString = "Signal0"; string resultString = "Result0"; SA.RFmxInstr.InstrumentConfiguration saInstrConfig; SA.CommonConfiguration saCommonConfig; SA.AutoLevelConfiguration saAutolevelConfig; SA.RFmxWLAN.StandardConfiguration wlanStandardConfig; SA.RFmxWLAN.OFDMModAccConfiguration modaccConfig; SA.RFmxWLAN.OFDMModAccResults modAccResults = new OFDMModAccResults(); //Analyzer Configuration Console.WriteLine("Configure...\n"); saInstrConfig = SA.RFmxInstr.InstrumentConfiguration.GetDefault(); saCommonConfig = saCommonConfig = SA.CommonConfiguration.GetDefault(); saCommonConfig.ExternalAttenuation_dB = 0; saCommonConfig.CenterFrequency_Hz = centerFrequency; saCommonConfig.ReferenceLevel_dBm = 0.0; saAutolevelConfig = SA.AutoLevelConfiguration.GetDefault(); saAutolevelConfig.Enabled = true; saAutolevelConfig.MeasurementInterval_s = 10e-3; wlanStandardConfig = SA.RFmxWLAN.StandardConfiguration.GetDefault(); wlanStandardConfig.ChannelBandwidth_Hz = 80.0e6; wlanStandardConfig.Standard = RFmxWlanMXStandard.Standard802_11ax; modaccConfig = SA.RFmxWLAN.OFDMModAccConfiguration.GetDefault(); #region Configure Analyzer RFmxInstrMX instr = new RFmxInstrMX(resourceName, ""); SA.RFmxInstr.ConfigureInstrument(instr, saInstrConfig); RFmxWlanMX wlan = instr.GetWlanSignalConfiguration(signalString); SA.RFmxWLAN.ConfigureCommon(wlan, saCommonConfig); SA.RFmxWLAN.ConfigureStandard(wlan, wlanStandardConfig); #endregion #region Measure Console.WriteLine("Measure...\n"); ConfigureOFDMModAcc(wlan, modaccConfig); RFmxWlanMXMeasurementTypes[] lteMeasurements = new RFmxWlanMXMeasurementTypes[1] { RFmxWlanMXMeasurementTypes.OfdmModAcc }; SA.RFmxWLAN.SelectAndInitiateMeasurements(wlan, lteMeasurements, saAutolevelConfig, false, "", resultString); modAccResults = FetchOFDMModAcc(wlan, RFmxWlanMX.BuildResultString(resultString)); //print Results Console.WriteLine("\n---------------------- ModAcc Results ---------------------\n"); Console.WriteLine("Composite RMS EVM (dB): {0:N}", modAccResults.CompositeRMSEVMMean_dB); #endregion wlan.Dispose(); instr.Close(); Console.WriteLine("Please press any key to close the application.\n"); Console.ReadKey(); }
public static OFDMModAccResults FetchOFDMModAcc(RFmxWlanMX wlanSignal, string selectorString = "") { OFDMModAccResults modAccResults = new OFDMModAccResults(); wlanSignal.OfdmModAcc.Results.FetchChainRmsEvmPerSymbolMeanTrace(selectorString, 10, ref modAccResults.EVMperSymbolTrace); wlanSignal.OfdmModAcc.Results.FetchDataConstellationTrace(selectorString, 10, ref modAccResults.DataConstellation); wlanSignal.OfdmModAcc.Results.FetchCompositeRmsEvm(selectorString, 10, out modAccResults.CompositeRMSEVMMean_dB, out modAccResults.CompositeDataRMSEVMMean_dB, out modAccResults.CompositePilotRMSEVMMean_dB); wlanSignal.OfdmModAcc.Results.FetchNumberOfSymbolsUsed(selectorString, 10, out modAccResults.NumberOfSymbolsUsed); return(modAccResults); }
private void Measure(SiteConfiguration site, StreamWriter fileStream) { OFDMModAccResults results = FetchOFDMModAcc(site.wlan); loggingThread.Enqueue((stream, rst) => stream.WriteLine(rst.CompositeRMSEVMMean_dB), fileStream, results); }
static void Main() { #region Configure Generation string resourceName = "VST2"; string filePath = Path.GetFullPath(@"Support Files\80211a_20M_48Mbps.tdms"); NIRfsg nIRfsg = new NIRfsg(resourceName, false, false); InstrumentConfiguration instrConfig = InstrumentConfiguration.GetDefault(); instrConfig.CarrierFrequency_Hz = 2.412e9; ConfigureInstrument(nIRfsg, instrConfig); Waveform waveform = LoadWaveformFromTDMS(filePath); DownloadWaveform(nIRfsg, waveform); WaveformTimingConfiguration timing = new WaveformTimingConfiguration { DutyCycle_Percent = 60, PreBurstTime_s = 1e-9, PostBurstTime_s = 1e-9, BurstStartTriggerExport = "PXI_Trig0" }; PAENConfiguration paenConfig = new PAENConfiguration { PAEnableMode = PAENMode.Dynamic, PAEnableTriggerExportTerminal = "PFI0", PAEnableTriggerMode = RfsgMarkerEventOutputBehaviour.Toggle }; ConfigureBurstedGeneration(nIRfsg, waveform, timing, paenConfig, out double period, out _); nIRfsg.Initiate(); #endregion RFmxInstrMX instr = new RFmxInstrMX("VST2", ""); RFmxWlanMX wlan = instr.GetWlanSignalConfiguration(); instr.GetWlanSignalConfiguration(); CommonConfiguration commonConfiguration = CommonConfiguration.GetDefault(); commonConfiguration.CenterFrequency_Hz = 2.412e9; AutoLevelConfiguration autoLevel = new AutoLevelConfiguration { AutoLevelMeasureTime_s = period, AutoLevelReferenceLevel = true }; SA.RFmxWLAN.ConfigureCommon(instr, wlan, commonConfiguration, autoLevel); SignalConfiguration signal = SignalConfiguration.GetDefault(); signal.AutoDetectSignal = false; signal.ChannelBandwidth_Hz = 20e6; signal.Standard = RFmxWlanMXStandard.Standard802_11ag; SA.RFmxWLAN.ConfigureSignal(wlan, signal); TxPConfiguration txpConfig = new TxPConfiguration { AveragingCount = 10, MaximumMeasurementInterval_s = waveform.BurstLength_s, AveragingEnabled = RFmxWlanMXTxpAveragingEnabled.True }; SA.RFmxWLAN.ConfigureTxP(wlan, txpConfig); OFDMModAccConfiguration modAccConfig = OFDMModAccConfiguration.GetDefault(); modAccConfig.OptimizeDynamicRangeForEvmEnabled = RFmxWlanMXOfdmModAccOptimizeDynamicRangeForEvmEnabled.False; modAccConfig.AveragingEnabled = RFmxWlanMXOfdmModAccAveragingEnabled.True; SA.RFmxWLAN.ConfigureOFDMModAcc(wlan, modAccConfig); TxPServoConfiguration servoConfig = TxPServoConfiguration.GetDefault(); servoConfig.TargetTxPPower_dBm = 0.5; SA.RFmxWLAN.TxPServoPower(wlan, nIRfsg, servoConfig, autoLevel); SEMConfiguration semConfig = SEMConfiguration.GetDefault(); SA.RFmxWLAN.ConfigureSEM(wlan, semConfig); wlan.Initiate("", ""); TxPResults txpRes = SA.RFmxWLAN.FetchTxP(wlan); OFDMModAccResults modAccResults = SA.RFmxWLAN.FetchOFDMModAcc(wlan); SEMResults semResults = SA.RFmxWLAN.FetchSEM(wlan); Console.WriteLine("TXP Avg Power: {0:N}", txpRes.AveragePowerMean_dBm); Console.WriteLine("Composite RMS EVM (dB): {0:N}", modAccResults.CompositeRMSEVMMean_dB); Console.WriteLine("\n----------Lower Offset Measurements----------\n"); for (int i = 0; i < semResults.LowerOffsetMargin_dB.Length; i++) { Console.WriteLine("Offset {0}", i); Console.WriteLine("Measurement Status :{0}", semResults.lowerOffsetMeasurementStatus[i]); Console.WriteLine("Margin (dB) :{0}", semResults.LowerOffsetMargin_dB[i]); Console.WriteLine("Margin Frequency (Hz) :{0}", semResults.LowerOffsetMarginFrequency_Hz[i]); Console.WriteLine("Margin Absolute Power (dBm) :{0}\n", semResults.LowerOffsetMarginAbsolutePower_dBm[i]); } Console.WriteLine("\n----------Upper Offset Measurements----------\n"); for (int i = 0; i < semResults.UpperOffsetMargin_dB.Length; i++) { Console.WriteLine("Offset {0}", i); Console.WriteLine("Measurement Status :{0}", semResults.upperOffsetMeasurementStatus[i]); Console.WriteLine("Margin (dB) :{0}", semResults.UpperOffsetMargin_dB[i]); Console.WriteLine("Margin Frequency (Hz) :{0}", semResults.UpperOffsetMarginFrequency_Hz[i]); Console.WriteLine("Margin Absolute Power (dBm) :{0}\n", semResults.UpperOffsetMarginAbsolutePower_dBm[i]); } Console.WriteLine("\n--------------------\n\nPress any key to exit."); Console.ReadKey(); wlan.Dispose(); instr.Close(); AbortGeneration(nIRfsg); CloseInstrument(nIRfsg); }