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_refChannel.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(); double[,] readWaveform = new double[input.GetSamplesToAcquire(), 2]; input.ReadData(ref readWaveform, readWaveform.GetLength(0), GlobalInfo.ReadTimeOut); double[,] plotData = new double[readWaveform.GetLength(1), readWaveform.GetLength(0)]; ArrayManipulation.Transpose(readWaveform, ref plotData); // easyChart_data.Plot(plotData); _globalInfo.Mainform.Invoke(new Action <double[, ], double, double>(easyChart_data.Plot), plotData, 0, 1); _refData = new double[plotData.GetLength(1)]; _testData = new double[plotData.GetLength(1)]; Buffer.BlockCopy(plotData, 0, _refData, 0, _refData.Length * sizeof(double)); Buffer.BlockCopy(plotData, _testData.Length * sizeof(double), _testData, 0, _testData.Length * sizeof(double)); double[] spectrum = new double[_testData.Length / 2]; double df; Spectrum.PowerSpectrum(_testData, input.GetSampleRate(), ref spectrum, out df); // easyChart_spectrum.Plot(spectrum.Take(1000).ToArray(), 0, df); _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_spectrum.Plot), spectrum, 0, df); _analyzeSize = (uint)Math.Ceiling(outTime * _globalInfo.AITask.GetSampleRate()); }
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_testWaveform.Plot(_testData); _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_testWaveform.Plot), _testData, 0, 1); double[] spectrum = new double[_testData.Length / 2]; double df; Spectrum.PowerSpectrum(_testData, input.GetSampleRate(), ref spectrum, out df); // easyChart_spectrum.Plot(spectrum, 0, df); _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_spectrum.Plot), spectrum, 0, df); _analyzeSize = (uint)Math.Ceiling(outTime * _globalInfo.AITask.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; dataGridView_result.Rows.Clear(); 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_refChannel.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(); double[,] readWaveform = new double[input.GetSamplesToAcquire(), 2]; input.ReadData(ref readWaveform, readWaveform.GetLength(0), GlobalInfo.ReadTimeOut); double[,] plotData = new double[readWaveform.GetLength(1), readWaveform.GetLength(0)]; ArrayManipulation.Transpose(readWaveform, ref plotData); _globalInfo.Mainform.Invoke(new Action <double[, ], double, double>(easyChart_waveform.Plot), plotData, 0, 1); _testData = new double[plotData.GetLength(1)]; Buffer.BlockCopy(plotData, 0, _testData, 0, _testData.Length * sizeof(double)); _refWaveform = waveGenerator.GetRefWaveform() as SteppedLevelSineWaveform; // double[] peakToPeak, thd, nr, thdPlusNr, rms; // SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeSteppedLevelSineWaveform(testWaveData, refWaveform, // out peakToPeak, out thd, out nr, out thdPlusNr, out rms); _analyzeSize = _refWaveform.GetTotalPoints(); }
public void Start() { Generator waveGenerator = tableLayoutPanel_waveConfig.Controls[0] as Generator; double sampleRate = (double)numericUpDown_sampleRate.Value; AITask.AITask input = _globalInfo.AITask; AOTask.AOTask output = _globalInfo.AOTask; output.SetUpdateRate(sampleRate); input.SetSampleRate(sampleRate); double[] outData = waveGenerator.GetWaveform().GetWaveData(); double channelRange = (double)(waveGenerator.GetAmplitude()); output.AddChannel(comboBox_aoChannel.SelectedIndex, -1 * channelRange, channelRange); input.AddChannel(comboBox_refChannel.SelectedIndex, -1 * channelRange, channelRange); input.AddChannel(comboBox_testChannel.SelectedIndex, -1 * channelRange, channelRange); 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(); double[,] readData = new double[input.GetSamplesToAcquire(), 2]; input.ReadData(ref readData, input.GetSamplesToAcquire(), GlobalInfo.ReadTimeOut); _refData = new double[readData.GetLength(0)]; _testData = new double[readData.GetLength(0)]; for (int i = 0; i < readData.GetLength(0); i++) { _refData[i] = readData[i, 0]; _testData[i] = readData[i, 1]; } double[,] plotData = new double[2, readData.GetLength(0)]; Buffer.BlockCopy(_refData, 0, plotData, 0, _refData.Length * sizeof(double)); Buffer.BlockCopy(_testData, 0, plotData, _refData.Length * sizeof(double), _testData.Length * sizeof(double)); // easyChart_data.Plot(plotData); _globalInfo.Mainform.Invoke(new Action <double[, ], double, double>(easyChart_data.Plot), plotData, 0, 1); _refWaveform = waveGenerator.GetRefWaveform() as SteppedSineWaveform; // ArrayPair<double, double> crossTalk = SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeSteppedSineCrosstalk( // refWaveForm, testWaveForm, _globalInfo.AITask.GetSampleRate(), frequencyMax, frequencyMin, steps, minCycle, minDuration, amplitude); _analyzeSize = _refWaveform.GetTotalPoints(); }
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(); }
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, input.GetSamplesToAcquire(), GlobalInfo.ReadTimeOut); _globalInfo.Mainform.Invoke(new Action <double[], double, double>(easyChart_testWaveform.Plot), _testData, 0, 1); // double[] responseX, responseY, thdX, thdY; // SeeSharpTools.JY.Audio.AudioAnalyzer.AnalyzeLogChripWave(readWaveform, // (LogChirpWaveform) waveGenerator.GetRefWaveform(), input.GetSampleRate(), out responseX, // out responseY, out thdX, out thdY); _refWaveform = (LogChirpWaveform)waveGenerator.GetRefWaveform(); _analyzeSize = _refWaveform.GetTotalPoints(); }