diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj index 5d2635c..014fc50 100644 --- a/Correlator/Correlator.csproj +++ b/Correlator/Correlator.csproj @@ -230,7 +230,6 @@ - diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj index 5d2635c..014fc50 100644 --- a/Correlator/Correlator.csproj +++ b/Correlator/Correlator.csproj @@ -230,7 +230,6 @@ - diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index d72a74e..12bfc7a 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,8 +1,5 @@ using System; -using Correlator.Util; using NAudio.Wave; -using WaveFormat = NAudio.Wave.WaveFormat; -using WaveOut = NAudio.Wave.WaveOut; namespace Correlator.DataService { @@ -11,38 +8,41 @@ private WaveFileWriter _waveFileWriter; private readonly WaveOut _waveOut = new WaveOut(); - private readonly BufferedWaveProvider _waveProvider = new BufferedWaveProvider(new WaveFormat(7500, 24, 1)); + + private readonly Lazy _lazyWaveProvider = new Lazy( + () => new BufferedWaveProvider(new WaveFormat(7500, 24, 1)) + ); public void Start() { - _waveOut.Init(_waveProvider); + _waveOut.Init(_lazyWaveProvider.Value); _waveOut.Play(); - var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; - _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); - //初始化wav文件头 - var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 1, 7500, 24); - _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); + // var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; + // _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); + // var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 7500, 16, 1); + // _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); } public void Write(byte[] pcm) { - _waveProvider.AddSamples(pcm, 0, pcm.Length); + _lazyWaveProvider.Value.AddSamples(pcm, 0, pcm.Length); //将pcm数据保存为wav格式文件 - if (_waveFileWriter == null) - { - return; - } - _waveFileWriter.Write(pcm, 0, pcm.Length); + // if (_waveFileWriter == null) + // { + // return; + // } + // + // _waveFileWriter.Write(pcm, 0, pcm.Length); } public void Stop() { _waveOut.Stop(); - _waveFileWriter.Dispose(); - _waveFileWriter = null; + // _waveFileWriter.Dispose(); + // _waveFileWriter = null; } } } \ No newline at end of file diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj index 5d2635c..014fc50 100644 --- a/Correlator/Correlator.csproj +++ b/Correlator/Correlator.csproj @@ -230,7 +230,6 @@ - diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index d72a74e..12bfc7a 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,8 +1,5 @@ using System; -using Correlator.Util; using NAudio.Wave; -using WaveFormat = NAudio.Wave.WaveFormat; -using WaveOut = NAudio.Wave.WaveOut; namespace Correlator.DataService { @@ -11,38 +8,41 @@ private WaveFileWriter _waveFileWriter; private readonly WaveOut _waveOut = new WaveOut(); - private readonly BufferedWaveProvider _waveProvider = new BufferedWaveProvider(new WaveFormat(7500, 24, 1)); + + private readonly Lazy _lazyWaveProvider = new Lazy( + () => new BufferedWaveProvider(new WaveFormat(7500, 24, 1)) + ); public void Start() { - _waveOut.Init(_waveProvider); + _waveOut.Init(_lazyWaveProvider.Value); _waveOut.Play(); - var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; - _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); - //初始化wav文件头 - var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 1, 7500, 24); - _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); + // var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; + // _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); + // var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 7500, 16, 1); + // _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); } public void Write(byte[] pcm) { - _waveProvider.AddSamples(pcm, 0, pcm.Length); + _lazyWaveProvider.Value.AddSamples(pcm, 0, pcm.Length); //将pcm数据保存为wav格式文件 - if (_waveFileWriter == null) - { - return; - } - _waveFileWriter.Write(pcm, 0, pcm.Length); + // if (_waveFileWriter == null) + // { + // return; + // } + // + // _waveFileWriter.Write(pcm, 0, pcm.Length); } public void Stop() { _waveOut.Stop(); - _waveFileWriter.Dispose(); - _waveFileWriter = null; + // _waveFileWriter.Dispose(); + // _waveFileWriter = null; } } } \ No newline at end of file diff --git a/Correlator/DataService/SerialPortServiceImpl.cs b/Correlator/DataService/SerialPortServiceImpl.cs index 6276999..ee77bc4 100644 --- a/Correlator/DataService/SerialPortServiceImpl.cs +++ b/Correlator/DataService/SerialPortServiceImpl.cs @@ -5,7 +5,6 @@ using System.Text; using System.Threading; using System.Windows; -using System.Windows.Threading; using Correlator.Events; using Correlator.Model; using Correlator.SensorHubTag; @@ -26,23 +25,11 @@ //左右传感器设备数据 private CorrelatorDataModel _dataModel; - private readonly DispatcherTimer _timer = new DispatcherTimer - { - Interval = TimeSpan.FromSeconds(1) - }; - public SerialPortServiceImpl(IEventAggregator eventAggregator, IAudioService audioService) { _eventAggregator = eventAggregator; _audioService = audioService; Sp.DataReceived += DataReceivedFromSerialPort; - //波形图数据处理线程 - if (_timer.IsEnabled) - { - _timer.Stop(); - } - - _timer.Start(); } private void DataReceivedFromSerialPort(object sender, SerialDataReceivedEventArgs args) @@ -286,40 +273,6 @@ pcm[i * 3 + 0] = 0x00; } - _audioService.Write(pcm); - - //波形图数据栈 - _arrayStack.Push(pcm); - // _timer.Tick += delegate - // { - // AudioWaveModel waveModel; - // if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = true - // }; - // } - // else - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = false - // }; - // } - // - // var pop = _arrayStack.Pop(); - // var floatArray = new float[pop.Length / 4]; - // Buffer.BlockCopy(pop, 0, floatArray, 0, pop.Length); - // // for (var i = 0; i < floatArray.Length; i++) - // // { - // // floatArray[i] = pcm[i * 4] | pcm[i * 4 + 1] << 8 | pcm[i * 4 + 2] << 16 | pcm[i * 4 + 3] << 24; - // // } - // - // waveModel.WavePoints = floatArray; - // _eventAggregator.GetEvent().Publish(waveModel); - // }; - //保存听音数据 if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { @@ -329,11 +282,15 @@ { FlowStatus.BlueSoundCaches.Add(pcm); } + + //将pcm数据写入缓存 + _audioService.Write(pcm); + + //TODO 波形图数据,暂时无法实现,先用NAudio获取到的声音代替 + // _eventAggregator.GetEvent().Publish(sts); } } - private readonly Stack _arrayStack = new Stack(); - public void HandleHydrophoneData(string devCode, List tags) { if (_dataModel == null) diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj index 5d2635c..014fc50 100644 --- a/Correlator/Correlator.csproj +++ b/Correlator/Correlator.csproj @@ -230,7 +230,6 @@ - diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index d72a74e..12bfc7a 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,8 +1,5 @@ using System; -using Correlator.Util; using NAudio.Wave; -using WaveFormat = NAudio.Wave.WaveFormat; -using WaveOut = NAudio.Wave.WaveOut; namespace Correlator.DataService { @@ -11,38 +8,41 @@ private WaveFileWriter _waveFileWriter; private readonly WaveOut _waveOut = new WaveOut(); - private readonly BufferedWaveProvider _waveProvider = new BufferedWaveProvider(new WaveFormat(7500, 24, 1)); + + private readonly Lazy _lazyWaveProvider = new Lazy( + () => new BufferedWaveProvider(new WaveFormat(7500, 24, 1)) + ); public void Start() { - _waveOut.Init(_waveProvider); + _waveOut.Init(_lazyWaveProvider.Value); _waveOut.Play(); - var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; - _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); - //初始化wav文件头 - var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 1, 7500, 24); - _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); + // var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; + // _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); + // var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 7500, 16, 1); + // _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); } public void Write(byte[] pcm) { - _waveProvider.AddSamples(pcm, 0, pcm.Length); + _lazyWaveProvider.Value.AddSamples(pcm, 0, pcm.Length); //将pcm数据保存为wav格式文件 - if (_waveFileWriter == null) - { - return; - } - _waveFileWriter.Write(pcm, 0, pcm.Length); + // if (_waveFileWriter == null) + // { + // return; + // } + // + // _waveFileWriter.Write(pcm, 0, pcm.Length); } public void Stop() { _waveOut.Stop(); - _waveFileWriter.Dispose(); - _waveFileWriter = null; + // _waveFileWriter.Dispose(); + // _waveFileWriter = null; } } } \ No newline at end of file diff --git a/Correlator/DataService/SerialPortServiceImpl.cs b/Correlator/DataService/SerialPortServiceImpl.cs index 6276999..ee77bc4 100644 --- a/Correlator/DataService/SerialPortServiceImpl.cs +++ b/Correlator/DataService/SerialPortServiceImpl.cs @@ -5,7 +5,6 @@ using System.Text; using System.Threading; using System.Windows; -using System.Windows.Threading; using Correlator.Events; using Correlator.Model; using Correlator.SensorHubTag; @@ -26,23 +25,11 @@ //左右传感器设备数据 private CorrelatorDataModel _dataModel; - private readonly DispatcherTimer _timer = new DispatcherTimer - { - Interval = TimeSpan.FromSeconds(1) - }; - public SerialPortServiceImpl(IEventAggregator eventAggregator, IAudioService audioService) { _eventAggregator = eventAggregator; _audioService = audioService; Sp.DataReceived += DataReceivedFromSerialPort; - //波形图数据处理线程 - if (_timer.IsEnabled) - { - _timer.Stop(); - } - - _timer.Start(); } private void DataReceivedFromSerialPort(object sender, SerialDataReceivedEventArgs args) @@ -286,40 +273,6 @@ pcm[i * 3 + 0] = 0x00; } - _audioService.Write(pcm); - - //波形图数据栈 - _arrayStack.Push(pcm); - // _timer.Tick += delegate - // { - // AudioWaveModel waveModel; - // if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = true - // }; - // } - // else - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = false - // }; - // } - // - // var pop = _arrayStack.Pop(); - // var floatArray = new float[pop.Length / 4]; - // Buffer.BlockCopy(pop, 0, floatArray, 0, pop.Length); - // // for (var i = 0; i < floatArray.Length; i++) - // // { - // // floatArray[i] = pcm[i * 4] | pcm[i * 4 + 1] << 8 | pcm[i * 4 + 2] << 16 | pcm[i * 4 + 3] << 24; - // // } - // - // waveModel.WavePoints = floatArray; - // _eventAggregator.GetEvent().Publish(waveModel); - // }; - //保存听音数据 if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { @@ -329,11 +282,15 @@ { FlowStatus.BlueSoundCaches.Add(pcm); } + + //将pcm数据写入缓存 + _audioService.Write(pcm); + + //TODO 波形图数据,暂时无法实现,先用NAudio获取到的声音代替 + // _eventAggregator.GetEvent().Publish(sts); } } - private readonly Stack _arrayStack = new Stack(); - public void HandleHydrophoneData(string devCode, List tags) { if (_dataModel == null) diff --git a/Correlator/Events/RenderAudioOscillogramEvent.cs b/Correlator/Events/RenderAudioOscillogramEvent.cs index 3658b18..3768112 100644 --- a/Correlator/Events/RenderAudioOscillogramEvent.cs +++ b/Correlator/Events/RenderAudioOscillogramEvent.cs @@ -1,9 +1,8 @@ -using Correlator.Model; -using Prism.Events; +using Prism.Events; namespace Correlator.Events { - public class RenderAudioOscillogramEvent : PubSubEvent + public class RenderAudioOscillogramEvent : PubSubEvent { } } \ No newline at end of file diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj index 5d2635c..014fc50 100644 --- a/Correlator/Correlator.csproj +++ b/Correlator/Correlator.csproj @@ -230,7 +230,6 @@ - diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index d72a74e..12bfc7a 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,8 +1,5 @@ using System; -using Correlator.Util; using NAudio.Wave; -using WaveFormat = NAudio.Wave.WaveFormat; -using WaveOut = NAudio.Wave.WaveOut; namespace Correlator.DataService { @@ -11,38 +8,41 @@ private WaveFileWriter _waveFileWriter; private readonly WaveOut _waveOut = new WaveOut(); - private readonly BufferedWaveProvider _waveProvider = new BufferedWaveProvider(new WaveFormat(7500, 24, 1)); + + private readonly Lazy _lazyWaveProvider = new Lazy( + () => new BufferedWaveProvider(new WaveFormat(7500, 24, 1)) + ); public void Start() { - _waveOut.Init(_waveProvider); + _waveOut.Init(_lazyWaveProvider.Value); _waveOut.Play(); - var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; - _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); - //初始化wav文件头 - var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 1, 7500, 24); - _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); + // var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; + // _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); + // var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 7500, 16, 1); + // _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); } public void Write(byte[] pcm) { - _waveProvider.AddSamples(pcm, 0, pcm.Length); + _lazyWaveProvider.Value.AddSamples(pcm, 0, pcm.Length); //将pcm数据保存为wav格式文件 - if (_waveFileWriter == null) - { - return; - } - _waveFileWriter.Write(pcm, 0, pcm.Length); + // if (_waveFileWriter == null) + // { + // return; + // } + // + // _waveFileWriter.Write(pcm, 0, pcm.Length); } public void Stop() { _waveOut.Stop(); - _waveFileWriter.Dispose(); - _waveFileWriter = null; + // _waveFileWriter.Dispose(); + // _waveFileWriter = null; } } } \ No newline at end of file diff --git a/Correlator/DataService/SerialPortServiceImpl.cs b/Correlator/DataService/SerialPortServiceImpl.cs index 6276999..ee77bc4 100644 --- a/Correlator/DataService/SerialPortServiceImpl.cs +++ b/Correlator/DataService/SerialPortServiceImpl.cs @@ -5,7 +5,6 @@ using System.Text; using System.Threading; using System.Windows; -using System.Windows.Threading; using Correlator.Events; using Correlator.Model; using Correlator.SensorHubTag; @@ -26,23 +25,11 @@ //左右传感器设备数据 private CorrelatorDataModel _dataModel; - private readonly DispatcherTimer _timer = new DispatcherTimer - { - Interval = TimeSpan.FromSeconds(1) - }; - public SerialPortServiceImpl(IEventAggregator eventAggregator, IAudioService audioService) { _eventAggregator = eventAggregator; _audioService = audioService; Sp.DataReceived += DataReceivedFromSerialPort; - //波形图数据处理线程 - if (_timer.IsEnabled) - { - _timer.Stop(); - } - - _timer.Start(); } private void DataReceivedFromSerialPort(object sender, SerialDataReceivedEventArgs args) @@ -286,40 +273,6 @@ pcm[i * 3 + 0] = 0x00; } - _audioService.Write(pcm); - - //波形图数据栈 - _arrayStack.Push(pcm); - // _timer.Tick += delegate - // { - // AudioWaveModel waveModel; - // if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = true - // }; - // } - // else - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = false - // }; - // } - // - // var pop = _arrayStack.Pop(); - // var floatArray = new float[pop.Length / 4]; - // Buffer.BlockCopy(pop, 0, floatArray, 0, pop.Length); - // // for (var i = 0; i < floatArray.Length; i++) - // // { - // // floatArray[i] = pcm[i * 4] | pcm[i * 4 + 1] << 8 | pcm[i * 4 + 2] << 16 | pcm[i * 4 + 3] << 24; - // // } - // - // waveModel.WavePoints = floatArray; - // _eventAggregator.GetEvent().Publish(waveModel); - // }; - //保存听音数据 if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { @@ -329,11 +282,15 @@ { FlowStatus.BlueSoundCaches.Add(pcm); } + + //将pcm数据写入缓存 + _audioService.Write(pcm); + + //TODO 波形图数据,暂时无法实现,先用NAudio获取到的声音代替 + // _eventAggregator.GetEvent().Publish(sts); } } - private readonly Stack _arrayStack = new Stack(); - public void HandleHydrophoneData(string devCode, List tags) { if (_dataModel == null) diff --git a/Correlator/Events/RenderAudioOscillogramEvent.cs b/Correlator/Events/RenderAudioOscillogramEvent.cs index 3658b18..3768112 100644 --- a/Correlator/Events/RenderAudioOscillogramEvent.cs +++ b/Correlator/Events/RenderAudioOscillogramEvent.cs @@ -1,9 +1,8 @@ -using Correlator.Model; -using Prism.Events; +using Prism.Events; namespace Correlator.Events { - public class RenderAudioOscillogramEvent : PubSubEvent + public class RenderAudioOscillogramEvent : PubSubEvent { } } \ No newline at end of file diff --git a/Correlator/Model/AudioWaveModel.cs b/Correlator/Model/AudioWaveModel.cs deleted file mode 100644 index 1a61bbb..0000000 --- a/Correlator/Model/AudioWaveModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Correlator.Model -{ - public class AudioWaveModel - { - public bool IsRedSensor { get; set; } - public float[] WavePoints { get; set; } - } -} \ No newline at end of file diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj index 5d2635c..014fc50 100644 --- a/Correlator/Correlator.csproj +++ b/Correlator/Correlator.csproj @@ -230,7 +230,6 @@ - diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index d72a74e..12bfc7a 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,8 +1,5 @@ using System; -using Correlator.Util; using NAudio.Wave; -using WaveFormat = NAudio.Wave.WaveFormat; -using WaveOut = NAudio.Wave.WaveOut; namespace Correlator.DataService { @@ -11,38 +8,41 @@ private WaveFileWriter _waveFileWriter; private readonly WaveOut _waveOut = new WaveOut(); - private readonly BufferedWaveProvider _waveProvider = new BufferedWaveProvider(new WaveFormat(7500, 24, 1)); + + private readonly Lazy _lazyWaveProvider = new Lazy( + () => new BufferedWaveProvider(new WaveFormat(7500, 24, 1)) + ); public void Start() { - _waveOut.Init(_waveProvider); + _waveOut.Init(_lazyWaveProvider.Value); _waveOut.Play(); - var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; - _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); - //初始化wav文件头 - var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 1, 7500, 24); - _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); + // var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; + // _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); + // var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 7500, 16, 1); + // _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); } public void Write(byte[] pcm) { - _waveProvider.AddSamples(pcm, 0, pcm.Length); + _lazyWaveProvider.Value.AddSamples(pcm, 0, pcm.Length); //将pcm数据保存为wav格式文件 - if (_waveFileWriter == null) - { - return; - } - _waveFileWriter.Write(pcm, 0, pcm.Length); + // if (_waveFileWriter == null) + // { + // return; + // } + // + // _waveFileWriter.Write(pcm, 0, pcm.Length); } public void Stop() { _waveOut.Stop(); - _waveFileWriter.Dispose(); - _waveFileWriter = null; + // _waveFileWriter.Dispose(); + // _waveFileWriter = null; } } } \ No newline at end of file diff --git a/Correlator/DataService/SerialPortServiceImpl.cs b/Correlator/DataService/SerialPortServiceImpl.cs index 6276999..ee77bc4 100644 --- a/Correlator/DataService/SerialPortServiceImpl.cs +++ b/Correlator/DataService/SerialPortServiceImpl.cs @@ -5,7 +5,6 @@ using System.Text; using System.Threading; using System.Windows; -using System.Windows.Threading; using Correlator.Events; using Correlator.Model; using Correlator.SensorHubTag; @@ -26,23 +25,11 @@ //左右传感器设备数据 private CorrelatorDataModel _dataModel; - private readonly DispatcherTimer _timer = new DispatcherTimer - { - Interval = TimeSpan.FromSeconds(1) - }; - public SerialPortServiceImpl(IEventAggregator eventAggregator, IAudioService audioService) { _eventAggregator = eventAggregator; _audioService = audioService; Sp.DataReceived += DataReceivedFromSerialPort; - //波形图数据处理线程 - if (_timer.IsEnabled) - { - _timer.Stop(); - } - - _timer.Start(); } private void DataReceivedFromSerialPort(object sender, SerialDataReceivedEventArgs args) @@ -286,40 +273,6 @@ pcm[i * 3 + 0] = 0x00; } - _audioService.Write(pcm); - - //波形图数据栈 - _arrayStack.Push(pcm); - // _timer.Tick += delegate - // { - // AudioWaveModel waveModel; - // if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = true - // }; - // } - // else - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = false - // }; - // } - // - // var pop = _arrayStack.Pop(); - // var floatArray = new float[pop.Length / 4]; - // Buffer.BlockCopy(pop, 0, floatArray, 0, pop.Length); - // // for (var i = 0; i < floatArray.Length; i++) - // // { - // // floatArray[i] = pcm[i * 4] | pcm[i * 4 + 1] << 8 | pcm[i * 4 + 2] << 16 | pcm[i * 4 + 3] << 24; - // // } - // - // waveModel.WavePoints = floatArray; - // _eventAggregator.GetEvent().Publish(waveModel); - // }; - //保存听音数据 if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { @@ -329,11 +282,15 @@ { FlowStatus.BlueSoundCaches.Add(pcm); } + + //将pcm数据写入缓存 + _audioService.Write(pcm); + + //TODO 波形图数据,暂时无法实现,先用NAudio获取到的声音代替 + // _eventAggregator.GetEvent().Publish(sts); } } - private readonly Stack _arrayStack = new Stack(); - public void HandleHydrophoneData(string devCode, List tags) { if (_dataModel == null) diff --git a/Correlator/Events/RenderAudioOscillogramEvent.cs b/Correlator/Events/RenderAudioOscillogramEvent.cs index 3658b18..3768112 100644 --- a/Correlator/Events/RenderAudioOscillogramEvent.cs +++ b/Correlator/Events/RenderAudioOscillogramEvent.cs @@ -1,9 +1,8 @@ -using Correlator.Model; -using Prism.Events; +using Prism.Events; namespace Correlator.Events { - public class RenderAudioOscillogramEvent : PubSubEvent + public class RenderAudioOscillogramEvent : PubSubEvent { } } \ No newline at end of file diff --git a/Correlator/Model/AudioWaveModel.cs b/Correlator/Model/AudioWaveModel.cs deleted file mode 100644 index 1a61bbb..0000000 --- a/Correlator/Model/AudioWaveModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Correlator.Model -{ - public class AudioWaveModel - { - public bool IsRedSensor { get; set; } - public float[] WavePoints { get; set; } - } -} \ No newline at end of file diff --git a/Correlator/Util/LogWithConsole.cs b/Correlator/Util/LogWithConsole.cs index 47bb8a9..bc42276 100644 --- a/Correlator/Util/LogWithConsole.cs +++ b/Correlator/Util/LogWithConsole.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System; namespace Correlator.Util { @@ -12,7 +12,7 @@ public static void WriteLog(this string className, string log) { LogHelper.Info(log); - Debug.WriteLine($"{className} => " + log); + Console.WriteLine($@"{className} => {log}"); } } } \ No newline at end of file diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj index 5d2635c..014fc50 100644 --- a/Correlator/Correlator.csproj +++ b/Correlator/Correlator.csproj @@ -230,7 +230,6 @@ - diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index d72a74e..12bfc7a 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,8 +1,5 @@ using System; -using Correlator.Util; using NAudio.Wave; -using WaveFormat = NAudio.Wave.WaveFormat; -using WaveOut = NAudio.Wave.WaveOut; namespace Correlator.DataService { @@ -11,38 +8,41 @@ private WaveFileWriter _waveFileWriter; private readonly WaveOut _waveOut = new WaveOut(); - private readonly BufferedWaveProvider _waveProvider = new BufferedWaveProvider(new WaveFormat(7500, 24, 1)); + + private readonly Lazy _lazyWaveProvider = new Lazy( + () => new BufferedWaveProvider(new WaveFormat(7500, 24, 1)) + ); public void Start() { - _waveOut.Init(_waveProvider); + _waveOut.Init(_lazyWaveProvider.Value); _waveOut.Play(); - var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; - _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); - //初始化wav文件头 - var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 1, 7500, 24); - _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); + // var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; + // _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); + // var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 7500, 16, 1); + // _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); } public void Write(byte[] pcm) { - _waveProvider.AddSamples(pcm, 0, pcm.Length); + _lazyWaveProvider.Value.AddSamples(pcm, 0, pcm.Length); //将pcm数据保存为wav格式文件 - if (_waveFileWriter == null) - { - return; - } - _waveFileWriter.Write(pcm, 0, pcm.Length); + // if (_waveFileWriter == null) + // { + // return; + // } + // + // _waveFileWriter.Write(pcm, 0, pcm.Length); } public void Stop() { _waveOut.Stop(); - _waveFileWriter.Dispose(); - _waveFileWriter = null; + // _waveFileWriter.Dispose(); + // _waveFileWriter = null; } } } \ No newline at end of file diff --git a/Correlator/DataService/SerialPortServiceImpl.cs b/Correlator/DataService/SerialPortServiceImpl.cs index 6276999..ee77bc4 100644 --- a/Correlator/DataService/SerialPortServiceImpl.cs +++ b/Correlator/DataService/SerialPortServiceImpl.cs @@ -5,7 +5,6 @@ using System.Text; using System.Threading; using System.Windows; -using System.Windows.Threading; using Correlator.Events; using Correlator.Model; using Correlator.SensorHubTag; @@ -26,23 +25,11 @@ //左右传感器设备数据 private CorrelatorDataModel _dataModel; - private readonly DispatcherTimer _timer = new DispatcherTimer - { - Interval = TimeSpan.FromSeconds(1) - }; - public SerialPortServiceImpl(IEventAggregator eventAggregator, IAudioService audioService) { _eventAggregator = eventAggregator; _audioService = audioService; Sp.DataReceived += DataReceivedFromSerialPort; - //波形图数据处理线程 - if (_timer.IsEnabled) - { - _timer.Stop(); - } - - _timer.Start(); } private void DataReceivedFromSerialPort(object sender, SerialDataReceivedEventArgs args) @@ -286,40 +273,6 @@ pcm[i * 3 + 0] = 0x00; } - _audioService.Write(pcm); - - //波形图数据栈 - _arrayStack.Push(pcm); - // _timer.Tick += delegate - // { - // AudioWaveModel waveModel; - // if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = true - // }; - // } - // else - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = false - // }; - // } - // - // var pop = _arrayStack.Pop(); - // var floatArray = new float[pop.Length / 4]; - // Buffer.BlockCopy(pop, 0, floatArray, 0, pop.Length); - // // for (var i = 0; i < floatArray.Length; i++) - // // { - // // floatArray[i] = pcm[i * 4] | pcm[i * 4 + 1] << 8 | pcm[i * 4 + 2] << 16 | pcm[i * 4 + 3] << 24; - // // } - // - // waveModel.WavePoints = floatArray; - // _eventAggregator.GetEvent().Publish(waveModel); - // }; - //保存听音数据 if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { @@ -329,11 +282,15 @@ { FlowStatus.BlueSoundCaches.Add(pcm); } + + //将pcm数据写入缓存 + _audioService.Write(pcm); + + //TODO 波形图数据,暂时无法实现,先用NAudio获取到的声音代替 + // _eventAggregator.GetEvent().Publish(sts); } } - private readonly Stack _arrayStack = new Stack(); - public void HandleHydrophoneData(string devCode, List tags) { if (_dataModel == null) diff --git a/Correlator/Events/RenderAudioOscillogramEvent.cs b/Correlator/Events/RenderAudioOscillogramEvent.cs index 3658b18..3768112 100644 --- a/Correlator/Events/RenderAudioOscillogramEvent.cs +++ b/Correlator/Events/RenderAudioOscillogramEvent.cs @@ -1,9 +1,8 @@ -using Correlator.Model; -using Prism.Events; +using Prism.Events; namespace Correlator.Events { - public class RenderAudioOscillogramEvent : PubSubEvent + public class RenderAudioOscillogramEvent : PubSubEvent { } } \ No newline at end of file diff --git a/Correlator/Model/AudioWaveModel.cs b/Correlator/Model/AudioWaveModel.cs deleted file mode 100644 index 1a61bbb..0000000 --- a/Correlator/Model/AudioWaveModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Correlator.Model -{ - public class AudioWaveModel - { - public bool IsRedSensor { get; set; } - public float[] WavePoints { get; set; } - } -} \ No newline at end of file diff --git a/Correlator/Util/LogWithConsole.cs b/Correlator/Util/LogWithConsole.cs index 47bb8a9..bc42276 100644 --- a/Correlator/Util/LogWithConsole.cs +++ b/Correlator/Util/LogWithConsole.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System; namespace Correlator.Util { @@ -12,7 +12,7 @@ public static void WriteLog(this string className, string log) { LogHelper.Info(log); - Debug.WriteLine($"{className} => " + log); + Console.WriteLine($@"{className} => {log}"); } } } \ No newline at end of file diff --git a/Correlator/ViewModels/AuditionViewModel.cs b/Correlator/ViewModels/AuditionViewModel.cs index ba51489..19c2ae8 100644 --- a/Correlator/ViewModels/AuditionViewModel.cs +++ b/Correlator/ViewModels/AuditionViewModel.cs @@ -4,9 +4,12 @@ using Correlator.SensorHubTag; using Correlator.Util; using NAudio.CoreAudioApi; +using NAudio.Wave; using Prism.Commands; +using Prism.Events; using Prism.Mvvm; using Prism.Services.Dialogs; +using WaveFormat = NAudio.Wave.WaveFormat; namespace Correlator.ViewModels { @@ -45,7 +48,12 @@ private readonly ISerialPortService _serialPortService; private readonly IAudioService _audioService; - public AuditionViewModel(ISerialPortService serialPortService, IAudioService audioService) + private static readonly Lazy LazyWaveIn = new Lazy( + () => new WaveIn { WaveFormat = new WaveFormat(7500, 1) } + ); + + public AuditionViewModel(ISerialPortService serialPortService, IAudioService audioService, + IEventAggregator eventAggregator) { _serialPortService = serialPortService; _audioService = audioService; @@ -71,6 +79,32 @@ ListenAudio(); }); BlueSensorMuteCommand = new DelegateCommand(SetCurrentMicVolume); + + //音频监听 + // LazyWaveIn.Value.DataAvailable += delegate(object sender, WaveInEventArgs args) + // { + // _isStartRecording = true; + // + // var buffer = args.Buffer; + // + // var sts = new float[buffer.Length / 2]; + // var outIndex = 0; + // for (var i = 0; i < buffer.Length; i += 2) + // { + // sts[outIndex++] = BitConverter.ToInt16(buffer, i) / 32768f; + // } + // + // if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) + // { + // eventAggregator.GetEvent().Publish(sts); + // } + // else + // { + // eventAggregator.GetEvent().Publish(sts); + // } + // }; + // + // LazyWaveIn.Value.RecordingStopped += delegate { _isStartRecording = false; }; } /// @@ -80,12 +114,12 @@ { if (_isStartRecording) { - _isStartRecording = false; CommandSender.SendSoundStopCmd(_serialPortService.Sp, _isRedSensor ? DevCode.Dev1 : DevCode.Dev2); _audioService.Stop(); + _isStartRecording = false; if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { - //TODO Test + //TODO 保存原始PCM数据到文件 // using (var fs = new FileStream("C:\\Users\\Administrator\\Desktop\\input.pcm", // FileMode.Append, FileAccess.Write)) // { @@ -94,7 +128,7 @@ // fs.Write(cache, 0, cache.Length); // } // } - + FlowStatus.RedSoundCaches.SaveSoundData(); FlowStatus.RedSoundCaches.Clear(); } @@ -103,13 +137,19 @@ FlowStatus.BlueSoundCaches.SaveSoundData(); FlowStatus.BlueSoundCaches.Clear(); } + + //波形图停止模拟 + // LazyWaveIn.Value.StopRecording(); } else { - _isStartRecording = true; - _audioService.Start(); - FlowStatus.CurrentListenSoundDevCode = _isRedSensor ? DevCode.Dev1 : DevCode.Dev2; CommandSender.SendSoundCollectCmd(_serialPortService.Sp, _isRedSensor ? DevCode.Dev1 : DevCode.Dev2); + FlowStatus.CurrentListenSoundDevCode = _isRedSensor ? DevCode.Dev1 : DevCode.Dev2; + _audioService.Start(); + _isStartRecording = true; + + //波形图开始模拟 + // LazyWaveIn.Value.StartRecording(); } } diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj index 5d2635c..014fc50 100644 --- a/Correlator/Correlator.csproj +++ b/Correlator/Correlator.csproj @@ -230,7 +230,6 @@ - diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index d72a74e..12bfc7a 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,8 +1,5 @@ using System; -using Correlator.Util; using NAudio.Wave; -using WaveFormat = NAudio.Wave.WaveFormat; -using WaveOut = NAudio.Wave.WaveOut; namespace Correlator.DataService { @@ -11,38 +8,41 @@ private WaveFileWriter _waveFileWriter; private readonly WaveOut _waveOut = new WaveOut(); - private readonly BufferedWaveProvider _waveProvider = new BufferedWaveProvider(new WaveFormat(7500, 24, 1)); + + private readonly Lazy _lazyWaveProvider = new Lazy( + () => new BufferedWaveProvider(new WaveFormat(7500, 24, 1)) + ); public void Start() { - _waveOut.Init(_waveProvider); + _waveOut.Init(_lazyWaveProvider.Value); _waveOut.Play(); - var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; - _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); - //初始化wav文件头 - var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 1, 7500, 24); - _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); + // var fileName = $"{DirectoryManager.GetAudioDir()}/听音_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.wav"; + // _waveFileWriter = new WaveFileWriter(fileName, new WaveFormat(7500, 24, 1)); + // var fileHeader = AudioHub.CreateWaveFileHeader(int.MaxValue, 7500, 16, 1); + // _waveFileWriter.Write(fileHeader, 0, fileHeader.Length); } public void Write(byte[] pcm) { - _waveProvider.AddSamples(pcm, 0, pcm.Length); + _lazyWaveProvider.Value.AddSamples(pcm, 0, pcm.Length); //将pcm数据保存为wav格式文件 - if (_waveFileWriter == null) - { - return; - } - _waveFileWriter.Write(pcm, 0, pcm.Length); + // if (_waveFileWriter == null) + // { + // return; + // } + // + // _waveFileWriter.Write(pcm, 0, pcm.Length); } public void Stop() { _waveOut.Stop(); - _waveFileWriter.Dispose(); - _waveFileWriter = null; + // _waveFileWriter.Dispose(); + // _waveFileWriter = null; } } } \ No newline at end of file diff --git a/Correlator/DataService/SerialPortServiceImpl.cs b/Correlator/DataService/SerialPortServiceImpl.cs index 6276999..ee77bc4 100644 --- a/Correlator/DataService/SerialPortServiceImpl.cs +++ b/Correlator/DataService/SerialPortServiceImpl.cs @@ -5,7 +5,6 @@ using System.Text; using System.Threading; using System.Windows; -using System.Windows.Threading; using Correlator.Events; using Correlator.Model; using Correlator.SensorHubTag; @@ -26,23 +25,11 @@ //左右传感器设备数据 private CorrelatorDataModel _dataModel; - private readonly DispatcherTimer _timer = new DispatcherTimer - { - Interval = TimeSpan.FromSeconds(1) - }; - public SerialPortServiceImpl(IEventAggregator eventAggregator, IAudioService audioService) { _eventAggregator = eventAggregator; _audioService = audioService; Sp.DataReceived += DataReceivedFromSerialPort; - //波形图数据处理线程 - if (_timer.IsEnabled) - { - _timer.Stop(); - } - - _timer.Start(); } private void DataReceivedFromSerialPort(object sender, SerialDataReceivedEventArgs args) @@ -286,40 +273,6 @@ pcm[i * 3 + 0] = 0x00; } - _audioService.Write(pcm); - - //波形图数据栈 - _arrayStack.Push(pcm); - // _timer.Tick += delegate - // { - // AudioWaveModel waveModel; - // if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = true - // }; - // } - // else - // { - // waveModel = new AudioWaveModel - // { - // IsRedSensor = false - // }; - // } - // - // var pop = _arrayStack.Pop(); - // var floatArray = new float[pop.Length / 4]; - // Buffer.BlockCopy(pop, 0, floatArray, 0, pop.Length); - // // for (var i = 0; i < floatArray.Length; i++) - // // { - // // floatArray[i] = pcm[i * 4] | pcm[i * 4 + 1] << 8 | pcm[i * 4 + 2] << 16 | pcm[i * 4 + 3] << 24; - // // } - // - // waveModel.WavePoints = floatArray; - // _eventAggregator.GetEvent().Publish(waveModel); - // }; - //保存听音数据 if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { @@ -329,11 +282,15 @@ { FlowStatus.BlueSoundCaches.Add(pcm); } + + //将pcm数据写入缓存 + _audioService.Write(pcm); + + //TODO 波形图数据,暂时无法实现,先用NAudio获取到的声音代替 + // _eventAggregator.GetEvent().Publish(sts); } } - private readonly Stack _arrayStack = new Stack(); - public void HandleHydrophoneData(string devCode, List tags) { if (_dataModel == null) diff --git a/Correlator/Events/RenderAudioOscillogramEvent.cs b/Correlator/Events/RenderAudioOscillogramEvent.cs index 3658b18..3768112 100644 --- a/Correlator/Events/RenderAudioOscillogramEvent.cs +++ b/Correlator/Events/RenderAudioOscillogramEvent.cs @@ -1,9 +1,8 @@ -using Correlator.Model; -using Prism.Events; +using Prism.Events; namespace Correlator.Events { - public class RenderAudioOscillogramEvent : PubSubEvent + public class RenderAudioOscillogramEvent : PubSubEvent { } } \ No newline at end of file diff --git a/Correlator/Model/AudioWaveModel.cs b/Correlator/Model/AudioWaveModel.cs deleted file mode 100644 index 1a61bbb..0000000 --- a/Correlator/Model/AudioWaveModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Correlator.Model -{ - public class AudioWaveModel - { - public bool IsRedSensor { get; set; } - public float[] WavePoints { get; set; } - } -} \ No newline at end of file diff --git a/Correlator/Util/LogWithConsole.cs b/Correlator/Util/LogWithConsole.cs index 47bb8a9..bc42276 100644 --- a/Correlator/Util/LogWithConsole.cs +++ b/Correlator/Util/LogWithConsole.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System; namespace Correlator.Util { @@ -12,7 +12,7 @@ public static void WriteLog(this string className, string log) { LogHelper.Info(log); - Debug.WriteLine($"{className} => " + log); + Console.WriteLine($@"{className} => {log}"); } } } \ No newline at end of file diff --git a/Correlator/ViewModels/AuditionViewModel.cs b/Correlator/ViewModels/AuditionViewModel.cs index ba51489..19c2ae8 100644 --- a/Correlator/ViewModels/AuditionViewModel.cs +++ b/Correlator/ViewModels/AuditionViewModel.cs @@ -4,9 +4,12 @@ using Correlator.SensorHubTag; using Correlator.Util; using NAudio.CoreAudioApi; +using NAudio.Wave; using Prism.Commands; +using Prism.Events; using Prism.Mvvm; using Prism.Services.Dialogs; +using WaveFormat = NAudio.Wave.WaveFormat; namespace Correlator.ViewModels { @@ -45,7 +48,12 @@ private readonly ISerialPortService _serialPortService; private readonly IAudioService _audioService; - public AuditionViewModel(ISerialPortService serialPortService, IAudioService audioService) + private static readonly Lazy LazyWaveIn = new Lazy( + () => new WaveIn { WaveFormat = new WaveFormat(7500, 1) } + ); + + public AuditionViewModel(ISerialPortService serialPortService, IAudioService audioService, + IEventAggregator eventAggregator) { _serialPortService = serialPortService; _audioService = audioService; @@ -71,6 +79,32 @@ ListenAudio(); }); BlueSensorMuteCommand = new DelegateCommand(SetCurrentMicVolume); + + //音频监听 + // LazyWaveIn.Value.DataAvailable += delegate(object sender, WaveInEventArgs args) + // { + // _isStartRecording = true; + // + // var buffer = args.Buffer; + // + // var sts = new float[buffer.Length / 2]; + // var outIndex = 0; + // for (var i = 0; i < buffer.Length; i += 2) + // { + // sts[outIndex++] = BitConverter.ToInt16(buffer, i) / 32768f; + // } + // + // if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) + // { + // eventAggregator.GetEvent().Publish(sts); + // } + // else + // { + // eventAggregator.GetEvent().Publish(sts); + // } + // }; + // + // LazyWaveIn.Value.RecordingStopped += delegate { _isStartRecording = false; }; } /// @@ -80,12 +114,12 @@ { if (_isStartRecording) { - _isStartRecording = false; CommandSender.SendSoundStopCmd(_serialPortService.Sp, _isRedSensor ? DevCode.Dev1 : DevCode.Dev2); _audioService.Stop(); + _isStartRecording = false; if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { - //TODO Test + //TODO 保存原始PCM数据到文件 // using (var fs = new FileStream("C:\\Users\\Administrator\\Desktop\\input.pcm", // FileMode.Append, FileAccess.Write)) // { @@ -94,7 +128,7 @@ // fs.Write(cache, 0, cache.Length); // } // } - + FlowStatus.RedSoundCaches.SaveSoundData(); FlowStatus.RedSoundCaches.Clear(); } @@ -103,13 +137,19 @@ FlowStatus.BlueSoundCaches.SaveSoundData(); FlowStatus.BlueSoundCaches.Clear(); } + + //波形图停止模拟 + // LazyWaveIn.Value.StopRecording(); } else { - _isStartRecording = true; - _audioService.Start(); - FlowStatus.CurrentListenSoundDevCode = _isRedSensor ? DevCode.Dev1 : DevCode.Dev2; CommandSender.SendSoundCollectCmd(_serialPortService.Sp, _isRedSensor ? DevCode.Dev1 : DevCode.Dev2); + FlowStatus.CurrentListenSoundDevCode = _isRedSensor ? DevCode.Dev1 : DevCode.Dev2; + _audioService.Start(); + _isStartRecording = true; + + //波形图开始模拟 + // LazyWaveIn.Value.StartRecording(); } } diff --git a/Correlator/Views/AuditionView.xaml.cs b/Correlator/Views/AuditionView.xaml.cs index 9f3eae6..27cf9c2 100644 --- a/Correlator/Views/AuditionView.xaml.cs +++ b/Correlator/Views/AuditionView.xaml.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; using System.Drawing; -using System.Windows; using System.Windows.Controls; using Correlator.Events; -using Correlator.Model; +using Correlator.SensorHubTag; +using Correlator.Util; using Prism.Events; namespace Correlator.Views @@ -14,60 +14,56 @@ { InitializeComponent(); + var redSensorPlot = RedSensorScottPlotChart.Plot; //去掉四周坐标轴 - RedSensorScottPlotChart.Plot.XAxis.IsVisible = false; - RedSensorScottPlotChart.Plot.XAxis2.IsVisible = false; - RedSensorScottPlotChart.Plot.YAxis.IsVisible = false; - RedSensorScottPlotChart.Plot.YAxis2.IsVisible = false; + redSensorPlot.XAxis.IsVisible = false; + redSensorPlot.XAxis2.IsVisible = false; + redSensorPlot.YAxis.IsVisible = false; + redSensorPlot.YAxis2.IsVisible = false; - BlueSensorScottPlotChart.Plot.XAxis.IsVisible = false; - BlueSensorScottPlotChart.Plot.XAxis2.IsVisible = false; - BlueSensorScottPlotChart.Plot.YAxis.IsVisible = false; - BlueSensorScottPlotChart.Plot.YAxis2.IsVisible = false; + var blueSensorPlot = BlueSensorScottPlotChart.Plot; + blueSensorPlot.XAxis.IsVisible = false; + blueSensorPlot.XAxis2.IsVisible = false; + blueSensorPlot.YAxis.IsVisible = false; + blueSensorPlot.YAxis2.IsVisible = false; - eventAggregator.GetEvent().Subscribe(delegate(AudioWaveModel model) + eventAggregator.GetEvent().Subscribe(delegate(float[] floats) { - Application.Current.Dispatcher.Invoke(delegate + //更新波形图Y轴 + if (FlowStatus.CurrentListenSoundDevCode == DevCode.Dev1) { - if (model.IsRedSensor) + RedSensorScottPlotChart.Plot.Clear(); + RedSensorScottPlotChart.Refresh(); + + var xDoubles = new List(); + var yDoubles = new List(); + + for (var i = 0; i < floats.Length; i++) { - RedSensorScottPlotChart.Plot.Clear(); - RedSensorScottPlotChart.Refresh(); - - var xDoubles = new List(); - var yDoubles = new List(); - - for (var i = 0; i < model.WavePoints.Length; i++) - { - xDoubles.Add(i); - yDoubles.Add(model.WavePoints[i]); - } - - RedSensorScottPlotChart.Plot.AddSignalXY( - xDoubles.ToArray(), yDoubles.ToArray(), Color.LimeGreen - ); - RedSensorScottPlotChart.Refresh(); + xDoubles.Add(i); + yDoubles.Add(floats[i]); } - else + + RedSensorScottPlotChart.Plot.AddSignalXY(xDoubles.ToArray(), yDoubles.ToArray(), Color.LimeGreen); + RedSensorScottPlotChart.Refresh(); + } + else + { + BlueSensorScottPlotChart.Plot.Clear(); + BlueSensorScottPlotChart.Refresh(); + + var xDoubles = new List(); + var yDoubles = new List(); + + for (var i = 0; i < floats.Length; i++) { - BlueSensorScottPlotChart.Plot.Clear(); - BlueSensorScottPlotChart.Refresh(); - - var xDoubles = new List(); - var yDoubles = new List(); - - for (var i = 0; i < model.WavePoints.Length; i++) - { - xDoubles.Add(i); - yDoubles.Add(model.WavePoints[i]); - } - - BlueSensorScottPlotChart.Plot.AddSignalXY( - xDoubles.ToArray(), yDoubles.ToArray(), Color.LimeGreen - ); - BlueSensorScottPlotChart.Refresh(); + xDoubles.Add(i); + yDoubles.Add(floats[i]); } - }); + + BlueSensorScottPlotChart.Plot.AddSignalXY(xDoubles.ToArray(), yDoubles.ToArray(), Color.LimeGreen); + BlueSensorScottPlotChart.Refresh(); + } }); } }