Ejemplo n.º 1
0
        public WaterfallSpectrumWin()
        {
            InitializeComponent();

            waterfallSpectrum = null;
            ready             = false;

            timer = new Timer();

            CanClose     = false;
            FormClosing += WaterfallSpectrumWin_FormClosing;
        }
Ejemplo n.º 2
0
        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;
        }