/// <summary>
        /// 配置分析参数
        /// </summary>
        /// <param name="refWaveform">参考波形</param>
        public void SetAnalyzeParam(SteppedLevelSineWaveform refWaveform)
        {
            analyzer.SetReferenceWaveform(refWaveform.GetRawWaveform() as ManagedAudioLibrary.SteppedLevelSineWaveform);
            this.refWaveform = refWaveform;
            this.RefWaveform = refWaveform;

            IsAnalyzeParamSet = true;
        }
Esempio n. 2
0
        /// <summary>
        /// SteppedLevelSine波形生成
        /// </summary>
        /// <param name="sampleRate">采样率</param>
        /// <param name="amplitudeMin">最小频率</param>
        /// <param name="amplitudeMax">最大频率</param>
        /// <param name="frequency">频率</param>
        /// <param name="steps">波幅阶数</param>
        /// <param name="minCycle">最小周期</param>
        /// <param name="minDuration">最小时间</param>
        /// <param name="isLog">是否对数波形</param>
        /// <param name="isInverse">是否反转</param>
        /// <returns>波形数据</returns>
        public static double[] SteppedLevelSineWaveform(double sampleRate,
                                                        double amplitudeMin, double amplitudeMax, double frequency, ushort steps,
                                                        ushort minCycle, double minDuration, bool isLog = false, bool isInverse = false)
        {
            SteppedLevelSineWaveform steppedLevelSineWaveform = new SteppedLevelSineWaveform();

            steppedLevelSineWaveform.CreateData(amplitudeMin, amplitudeMax, frequency, steps,
                                                isLog, isInverse, minCycle, minDuration, sampleRate);
            double[] waveData = new double[steppedLevelSineWaveform.GetTotalPoints()];
            steppedLevelSineWaveform.GetCopyOfData(waveData);
            return(waveData);
        }
Esempio n. 3
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;

            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();
        }
Esempio n. 4
0
        public static Form GetGenerator(GeneratorType type)
        {
            Form generatorPanel = null;

            switch (type)
            {
            case GeneratorType.AribitraryWaveform:
                break;

            case GeneratorType.FromWavFile:
                break;

            case GeneratorType.LogChirpWaveform:
                generatorPanel = new LogChripWaveForm();
                break;

            case GeneratorType.MultiToneWaveform:
                generatorPanel = new MultiToneWaveForm();
                break;

            case GeneratorType.SingleToneWaveForm:
                generatorPanel = new SingleToneWaveForm();
                break;

            case GeneratorType.DualToneWaveForm:
                generatorPanel = new DualToneWaveForm();
                break;

            case GeneratorType.SteppedLevelSineWaveform:
                generatorPanel = new SteppedLevelSineWaveform();
                break;

            case GeneratorType.SteppedSineWaveform:
                generatorPanel = new SteppedSineWave();
                break;

            default:
                break;
            }
            return(generatorPanel);
        }