diff --git a/SoundReceiver/Detector.cs b/SoundReceiver/Detector.cs index d0d5ecf..cd23e9f 100644 --- a/SoundReceiver/Detector.cs +++ b/SoundReceiver/Detector.cs @@ -73,8 +73,11 @@ public byte[] Detect(short[] signal, List bitLevels, out double? snr, ou double[] d23 = Integrate(d21, integrateBitLen2); if (debug) SaveWav("d23.wav", SignalDtoS(d23)); - double[] d24 = new double[d22.Length - integrateBitLen2]; - double[] d25 = new double[d22.Length - integrateBitLen2]; + int d24len = d22.Length - integrateBitLen2; + if (d24len <= 0) + throw new SignalException("Not enough samples"); + double[] d24 = new double[d24len]; + double[] d25 = new double[d24len]; MinMax(d22, integrateBitLen2, d24, d25); if (debug) SaveWav("d24.wav", SignalDtoS(d24)); @@ -200,7 +203,6 @@ public byte[] Detect(short[] signal, List bitLevels, out double? snr, ou int deltaRange = Convert.ToInt32(estBitlen * 2); - //int deltaRange = 0; int eqSize = (int)(10 * estBitlen) | 1; Complex[] d3 = new Complex[signalEndFine - signalStartFine + diff --git a/SoundReceiver/MainWindow.xaml.cs b/SoundReceiver/MainWindow.xaml.cs index 4f58c0c..30f0374 100644 --- a/SoundReceiver/MainWindow.xaml.cs +++ b/SoundReceiver/MainWindow.xaml.cs @@ -65,6 +65,7 @@ void StartButton_Click(object sender, RoutedEventArgs e) // WaveIn needs to be reinitialized each time: // https://github.com/naudio/NAudio/issues/49#issuecomment-280446686 + waveIn?.Dispose(); waveIn = new WaveIn(); waveIn.WaveFormat = new WaveFormat(44100, 1); waveIn.DataAvailable += waveIn_DataAvailable; @@ -80,6 +81,8 @@ void StartButton_Click(object sender, RoutedEventArgs e) { if (ex.Result == MmResult.BadDeviceId) MessageTextBox.Text = "[Recording device is not found]"; + else + MessageTextBox.Text = $"[Recording error: {ex.Result}]"; } } @@ -88,7 +91,6 @@ void StopButton_Click(object sender, RoutedEventArgs e) createWavFile = Keyboard.Modifiers.HasFlag(ModifierKeys.Control); waveIn.StopRecording(); - waveIn = null; StopButton.IsEnabled = false; }