public WaterfallSpectrumWin() { InitializeComponent(); waterfallSpectrum = null; ready = false; timer = new Timer(); CanClose = false; FormClosing += WaterfallSpectrumWin_FormClosing; }
public void initWaterfallSpectrum(WaterfallSpectrum _waterfallSpectrum) { FIFOdepth = 32768; input = new FIFO(FIFOdepth); _blockSize = 4096; _windowType = FFTProcessor.WindowType.Hann; waterfallSpectrum = _waterfallSpectrum; timer.Interval = 50; // ms timer.Tick += Timer_Tick; fftProcessor = new FFTProcessor(_blockSize, waterfallSpectrum.owner.sampleRate, _windowType); fftBlockSizes = new List <int>(); for (int i = 2048; i <= 8192; i *= 2) { waterfallSpectrumBlockSize.Items.Add(String.Format("{0} --> {1:f1}ms", i, 1000.0 * i / waterfallSpectrum.owner.sampleRate)); fftBlockSizes.Add(i); } waterfallSpectrumBlockSize.SelectedIndex = fftBlockSizes.IndexOf(_blockSize); waterfallSpectrumBlockSize.SelectedIndexChanged += waterfallSpectrumBlockSize_SelectedIndexChanged; string[] windows = Enum.GetNames(typeof(FFTProcessor.WindowType)); fftWindows = new List <FFTProcessor.WindowType>(); for (int i = 0; i < windows.Length; i++) { fftWindows.Add((FFTProcessor.WindowType)i); waterfallSpectrumWindow.Items.Add(windows[i]); } waterfallSpectrumWindow.SelectedIndex = fftWindows.IndexOf(_windowType); waterfallSpectrumWindow.SelectedIndexChanged += waterfallSpectrumWindow_SelectedIndexChanged; waterfallSpectrumScreen.initWaterfallSpectrumScreen(this); double bst = (double)_blockSize / waterfallSpectrum.owner.sampleRate; waterfallSpectrumScreen.gridY.max = (waterfallSpectrumScreen.gridY.low - waterfallSpectrumScreen.gridY.high) * bst; if (waterfallSpectrumScreen.gridF.logScale) { waterfallSpectrumFLog.Checked = true; } waterfallSpectrumFLog.Click += waterfallSpectrumFLog_Click; waterfallSpectrumFMin.Value = Convert.ToDecimal(waterfallSpectrumScreen.gridF.min); waterfallSpectrumFMax.Value = Convert.ToDecimal(waterfallSpectrumScreen.gridF.max); waterfallSpectrumFMin.ValueChanged += WaterfallSpectrumFMin_ValueChanged; waterfallSpectrumFMax.ValueChanged += WaterfallSpectrumFMax_ValueChanged; waterfallSpectrumAutoScale.Click += WaterfallSpectrumAutoScale_Click; waterfallSpectrumShowGrid.Checked = waterfallSpectrumScreen.drawGrid; waterfallSpectrumShowGrid.Click += WaterfallSpectrumShowGrid_Click; waterfallSpectrumRun.Click += WaterfallSpectrumRun_Click; waterfallSpectrumColorScheme.Items.Add("KrYW"); waterfallSpectrumColorScheme.Items.Add("KbBW"); waterfallSpectrumColorScheme.Items.Add("KrgBW"); waterfallSpectrumColorScheme.Items.Add("KW"); waterfallSpectrumColorScheme.Items.Add("KmryGCBW"); waterfallSpectrumColorScheme.Text = waterfallSpectrumScreen.colorTable.scheme; waterfallSpectrumColorScheme.TextChanged += WaterfallSpectrumColorScheme_TextChanged; waterfallLines = new WaterfallLineFIFO(waterfallSpectrumScreen, 1024, _blockSize / 2, waterfallSpectrum.owner.sampleRate / 2, waterfallSpectrumScreen.Width, waterfallSpectrumScreen.Height); ready = true; run = true; timer.Enabled = true; }