public void Start() { double sampleRate = (double)numericUpDown_sampleRate.Value; double amplitude = (double)numericUpDown_amplitude.Value; double targetFrequency = (double)numericUpDown_targetFreq.Value; double duration = (double)numericUpDown_Duration.Value / 1000; AITask.AITask input = _globalInfo.AITask; AOTask.AOTask output = _globalInfo.AOTask; output.SetUpdateRate(sampleRate); input.SetSampleRate(sampleRate); double channelRange = (double)(numericUpDown_amplitude.Value); output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange); input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange); double[] outData = AudioGenerator.SingleToneWaveform(output.GetUpdateRate(), (uint)(output.GetUpdateRate() * duration), amplitude, targetFrequency, 0); output.SetSamplesToUpdate(outData.Length); double outTime = outData.Length / output.GetUpdateRate(); input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime)); output.WriteData(outData, -1); input.Start(); output.Start(); _testData = new double[input.GetSamplesToAcquire()]; input.ReadData(ref _testData, _testData.Length, GlobalInfo.ReadTimeOut); //Added by Way output.Stop(); input.Stop(); // easyChart_data.Plot(_testData); _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_data.Plot), _testData, 0, 1); double[] spectrum = new double[_testData.Length / 2]; double df; //Change unit to dBm Spectrum.PowerSpectrum(_testData, input.GetSampleRate(), ref spectrum, out df, SpectrumUnits.V2); _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_spectrum.Plot), spectrum, 0, df); // double amp, thd, nr, thdPlusNRatio; // double[] harmonicPower; // SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeSingleToneWave(readWaveform, // targetFrequency, sampleRate, out amp, out thd, out nr, out thdPlusNRatio, // out harmonicPower); _analyzeSize = (uint)Math.Ceiling(outTime * input.GetSampleRate()); }
public void Start() { if (null == tableLayoutPanel_waveConfig.Controls[0]) { return; } double sampleRate = (double)numericUpDown_sampleRate.Value; Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator; AITask.AITask input = _globalInfo.AITask; AOTask.AOTask output = _globalInfo.AOTask; output.SetUpdateRate(sampleRate); input.SetSampleRate(sampleRate); double channelRange = waveGenerator.GetAmplitude(); output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange); input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange); double[] outData = waveGenerator.Generate(); output.SetSamplesToUpdate(outData.Length); double outTime = outData.Length / output.GetUpdateRate(); input.SetSamplesToAcquire((int)(outTime * input.GetSampleRate() * GlobalInfo.ExtraReadTime)); output.WriteData(outData, -1); input.Start(); output.Start(); _testData = new double[input.GetSamplesToAcquire()]; input.ReadData(ref _testData, _testData.Length, GlobalInfo.ReadTimeOut); // easyChart_waveform.Plot(_testData); _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_waveform.Plot), _testData, 0, 1); input.Stop(); output.Stop(); _refWaveform = waveGenerator.GetRefWaveform() as MultiToneWaveform; // double peakToPeak, acRms, dcRms, max, min, tdPlusN; // double[] acPart, powerSpectrum, phaseSpectrum; // SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeMultiToneWaveform(readWaveform, _refWaveform, _globalInfo.AITask.GetSampleRate(), // out peakToPeak, out acRms, out dcRms, out max, out min, out tdPlusN, out acPart, out powerSpectrum, out phaseSpectrum); _analyzeSize = _refWaveform.GetTotalPoints(); }