diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index f5dbe51..fd3375f 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.IO; using Correlator.Util; using NAudio.Wave; @@ -58,6 +60,29 @@ } } + public void Write(string locateDataDir, string fileTag, List pcmArray) + { + var time = DateTime.Now.ToString("yyyyMMdd_HHmmss"); + var wavFileName = $"{DirectoryManager.GetAudioDir()}/{fileTag}_{time}.wav"; + + var waveFileWriter = new WaveFileWriter(wavFileName, _waveFormat); + //二位数组转一维数组 + var bytes = new List(); + foreach (var pcm in pcmArray) + { + bytes.AddRange(pcm); + } + + waveFileWriter.Write(bytes.ToArray(), 0, bytes.Count); + waveFileWriter.Dispose(); + + //保存为原始PCM文件 + var pcmFileName = $"{locateDataDir}/{fileTag}_{time}.pcm"; + var fs = new FileStream(pcmFileName, FileMode.Create, FileAccess.Write); + fs.Write(bytes.ToArray(), 0, bytes.Count); + fs.Dispose(); + } + public void Stop() { _isStopped = true; diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index f5dbe51..fd3375f 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.IO; using Correlator.Util; using NAudio.Wave; @@ -58,6 +60,29 @@ } } + public void Write(string locateDataDir, string fileTag, List pcmArray) + { + var time = DateTime.Now.ToString("yyyyMMdd_HHmmss"); + var wavFileName = $"{DirectoryManager.GetAudioDir()}/{fileTag}_{time}.wav"; + + var waveFileWriter = new WaveFileWriter(wavFileName, _waveFormat); + //二位数组转一维数组 + var bytes = new List(); + foreach (var pcm in pcmArray) + { + bytes.AddRange(pcm); + } + + waveFileWriter.Write(bytes.ToArray(), 0, bytes.Count); + waveFileWriter.Dispose(); + + //保存为原始PCM文件 + var pcmFileName = $"{locateDataDir}/{fileTag}_{time}.pcm"; + var fs = new FileStream(pcmFileName, FileMode.Create, FileAccess.Write); + fs.Write(bytes.ToArray(), 0, bytes.Count); + fs.Dispose(); + } + public void Stop() { _isStopped = true; diff --git a/Correlator/DataService/IAudioService.cs b/Correlator/DataService/IAudioService.cs index f6e157a..3295b74 100644 --- a/Correlator/DataService/IAudioService.cs +++ b/Correlator/DataService/IAudioService.cs @@ -1,4 +1,5 @@ -using NAudio.Wave; +using System.Collections.Generic; +using NAudio.Wave; namespace Correlator.DataService { @@ -11,13 +12,21 @@ /// /// void Start(string deviceCode); - + /// /// 缓存听音数据 /// /// void Write(byte[] pcm); - + + /// + /// 保存计算采集的数据为wav文件 + /// + /// + /// + /// + void Write(string locateDataDir, string fileTag, List pcmArray); + /// /// 结束听音 /// diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index f5dbe51..fd3375f 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.IO; using Correlator.Util; using NAudio.Wave; @@ -58,6 +60,29 @@ } } + public void Write(string locateDataDir, string fileTag, List pcmArray) + { + var time = DateTime.Now.ToString("yyyyMMdd_HHmmss"); + var wavFileName = $"{DirectoryManager.GetAudioDir()}/{fileTag}_{time}.wav"; + + var waveFileWriter = new WaveFileWriter(wavFileName, _waveFormat); + //二位数组转一维数组 + var bytes = new List(); + foreach (var pcm in pcmArray) + { + bytes.AddRange(pcm); + } + + waveFileWriter.Write(bytes.ToArray(), 0, bytes.Count); + waveFileWriter.Dispose(); + + //保存为原始PCM文件 + var pcmFileName = $"{locateDataDir}/{fileTag}_{time}.pcm"; + var fs = new FileStream(pcmFileName, FileMode.Create, FileAccess.Write); + fs.Write(bytes.ToArray(), 0, bytes.Count); + fs.Dispose(); + } + public void Stop() { _isStopped = true; diff --git a/Correlator/DataService/IAudioService.cs b/Correlator/DataService/IAudioService.cs index f6e157a..3295b74 100644 --- a/Correlator/DataService/IAudioService.cs +++ b/Correlator/DataService/IAudioService.cs @@ -1,4 +1,5 @@ -using NAudio.Wave; +using System.Collections.Generic; +using NAudio.Wave; namespace Correlator.DataService { @@ -11,13 +12,21 @@ /// /// void Start(string deviceCode); - + /// /// 缓存听音数据 /// /// void Write(byte[] pcm); - + + /// + /// 保存计算采集的数据为wav文件 + /// + /// + /// + /// + void Write(string locateDataDir, string fileTag, List pcmArray); + /// /// 结束听音 /// diff --git a/Correlator/DataService/SerialPortServiceImpl.cs b/Correlator/DataService/SerialPortServiceImpl.cs index b5a1e2b..5fd31ae 100644 --- a/Correlator/DataService/SerialPortServiceImpl.cs +++ b/Correlator/DataService/SerialPortServiceImpl.cs @@ -158,32 +158,32 @@ break; case 22543: - // if (receivedData[0] == 0xA3 && receivedData[1] == 0x20) - // { - // int index = receivedData[15]; - // //取出seq,确定收到的是第几包数据 - // RuntimeCache.SeqCaches.Add(index); - // - // var response = BitConverter.ToString(receivedData).Replace("-", ""); - // //收集数据 - // if (deviceId.Equals(RuntimeCache.Dev1)) - // { - // //原始数据 - // RuntimeCache.RedSensorOriginalResp.Add(index, response); - // //解析之后的数据 - // RuntimeCache.RedSensorResponseTags.Add(index, tags); - // } - // else - // { - // //原始数据 - // RuntimeCache.BlueSensorOriginalResp.Add(index, response); - // //解析之后的数据 - // RuntimeCache.BlueSensorResponseTags.Add(index, tags); - // } - // } + if (receivedData[0] == 0xA3 && receivedData[1] == 0x20) + { + int index = receivedData[15]; + //取出seq,确定收到的是第几包数据 + RuntimeCache.SeqCaches.Add(index); + + var response = BitConverter.ToString(receivedData).Replace("-", ""); + //收集数据 + if (deviceId.Equals(RuntimeCache.Dev1)) + { + //原始数据 + RuntimeCache.RedSensorOriginalResp.Add(index, response); + //解析之后的数据 + RuntimeCache.RedSensorResponseTags.Add(index, tags); + } + else + { + //原始数据 + RuntimeCache.BlueSensorOriginalResp.Add(index, response); + //解析之后的数据 + RuntimeCache.BlueSensorResponseTags.Add(index, tags); + } + } //TODO 采用水听器数据,但是模式是加速度计模式 - HandleCorrelatorData(deviceId, tags); + // HandleCorrelatorData(deviceId, tags); break; case 15024: //听音 HandleListenData(tags); diff --git a/Correlator/DataService/AudioServiceImpl.cs b/Correlator/DataService/AudioServiceImpl.cs index f5dbe51..fd3375f 100644 --- a/Correlator/DataService/AudioServiceImpl.cs +++ b/Correlator/DataService/AudioServiceImpl.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.IO; using Correlator.Util; using NAudio.Wave; @@ -58,6 +60,29 @@ } } + public void Write(string locateDataDir, string fileTag, List pcmArray) + { + var time = DateTime.Now.ToString("yyyyMMdd_HHmmss"); + var wavFileName = $"{DirectoryManager.GetAudioDir()}/{fileTag}_{time}.wav"; + + var waveFileWriter = new WaveFileWriter(wavFileName, _waveFormat); + //二位数组转一维数组 + var bytes = new List(); + foreach (var pcm in pcmArray) + { + bytes.AddRange(pcm); + } + + waveFileWriter.Write(bytes.ToArray(), 0, bytes.Count); + waveFileWriter.Dispose(); + + //保存为原始PCM文件 + var pcmFileName = $"{locateDataDir}/{fileTag}_{time}.pcm"; + var fs = new FileStream(pcmFileName, FileMode.Create, FileAccess.Write); + fs.Write(bytes.ToArray(), 0, bytes.Count); + fs.Dispose(); + } + public void Stop() { _isStopped = true; diff --git a/Correlator/DataService/IAudioService.cs b/Correlator/DataService/IAudioService.cs index f6e157a..3295b74 100644 --- a/Correlator/DataService/IAudioService.cs +++ b/Correlator/DataService/IAudioService.cs @@ -1,4 +1,5 @@ -using NAudio.Wave; +using System.Collections.Generic; +using NAudio.Wave; namespace Correlator.DataService { @@ -11,13 +12,21 @@ /// /// void Start(string deviceCode); - + /// /// 缓存听音数据 /// /// void Write(byte[] pcm); - + + /// + /// 保存计算采集的数据为wav文件 + /// + /// + /// + /// + void Write(string locateDataDir, string fileTag, List pcmArray); + /// /// 结束听音 /// diff --git a/Correlator/DataService/SerialPortServiceImpl.cs b/Correlator/DataService/SerialPortServiceImpl.cs index b5a1e2b..5fd31ae 100644 --- a/Correlator/DataService/SerialPortServiceImpl.cs +++ b/Correlator/DataService/SerialPortServiceImpl.cs @@ -158,32 +158,32 @@ break; case 22543: - // if (receivedData[0] == 0xA3 && receivedData[1] == 0x20) - // { - // int index = receivedData[15]; - // //取出seq,确定收到的是第几包数据 - // RuntimeCache.SeqCaches.Add(index); - // - // var response = BitConverter.ToString(receivedData).Replace("-", ""); - // //收集数据 - // if (deviceId.Equals(RuntimeCache.Dev1)) - // { - // //原始数据 - // RuntimeCache.RedSensorOriginalResp.Add(index, response); - // //解析之后的数据 - // RuntimeCache.RedSensorResponseTags.Add(index, tags); - // } - // else - // { - // //原始数据 - // RuntimeCache.BlueSensorOriginalResp.Add(index, response); - // //解析之后的数据 - // RuntimeCache.BlueSensorResponseTags.Add(index, tags); - // } - // } + if (receivedData[0] == 0xA3 && receivedData[1] == 0x20) + { + int index = receivedData[15]; + //取出seq,确定收到的是第几包数据 + RuntimeCache.SeqCaches.Add(index); + + var response = BitConverter.ToString(receivedData).Replace("-", ""); + //收集数据 + if (deviceId.Equals(RuntimeCache.Dev1)) + { + //原始数据 + RuntimeCache.RedSensorOriginalResp.Add(index, response); + //解析之后的数据 + RuntimeCache.RedSensorResponseTags.Add(index, tags); + } + else + { + //原始数据 + RuntimeCache.BlueSensorOriginalResp.Add(index, response); + //解析之后的数据 + RuntimeCache.BlueSensorResponseTags.Add(index, tags); + } + } //TODO 采用水听器数据,但是模式是加速度计模式 - HandleCorrelatorData(deviceId, tags); + // HandleCorrelatorData(deviceId, tags); break; case 15024: //听音 HandleListenData(tags); diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml index a325f9e..faffd3a 100644 --- a/Correlator/Dialog/ImportResponseDialog.xaml +++ b/Correlator/Dialog/ImportResponseDialog.xaml @@ -78,6 +78,11 @@ Foreground="#cecece" Text="Raw Data Import Wizard" /> + +