/// <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); }
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(); }