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