Пример #1
0
        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());
        }
Пример #2
0
        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();
        }