示例#1
0
        /// <summary>
        /// LogChirp波形生成
        /// </summary>
        /// <param name="sampleRate">采样率</param>
        /// <param name="waveLength">波形长度</param>
        /// <param name="amplitude">波幅</param>
        /// <param name="frequencyMin">最低频率</param>
        /// <param name="frequencyMax">最高频率</param>
        /// <param name="preSweepRatio">前向延伸比</param>
        /// <param name="postSweepRatio">后向延伸比</param>
        /// <returns>波形数据</returns>
        public static double[] LogChirpWaveform(double sampleRate, uint waveLength, double amplitude,
                                                double frequencyMin, double frequencyMax, double preSweepRatio, double postSweepRatio)
        {
            LogChirpWaveform logChirpWaveform = new LogChirpWaveform();

            logChirpWaveform.CreateData(amplitude, frequencyMin, frequencyMax, preSweepRatio,
                                        postSweepRatio, waveLength, sampleRate);
            double[] waveData = new double[logChirpWaveform.GetTotalPoints()];
            logChirpWaveform.GetCopyOfData(waveData);
            return(waveData);
        }
示例#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, 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();
        }