diff --git a/Correlator/Dialog/CheckResponseDialog.xaml.cs b/Correlator/Dialog/CheckResponseDialog.xaml.cs index f78189f..0d2400a 100644 --- a/Correlator/Dialog/CheckResponseDialog.xaml.cs +++ b/Correlator/Dialog/CheckResponseDialog.xaml.cs @@ -142,8 +142,14 @@ //下发数据全部正常指令 CommandSender.SendDataCheckResultCmd(SerialPortManager.Get.Sp, DevCode.Dev1, new List()); - //分析数据 - Messenger.Default.Send(DevCode.Dev1, MessengerToken.StartHandleSensorData); + //处理数据 + var tags = new List(); + foreach (var list in FlowStatus.RedSensorTagLists) + { + tags.AddRange(list); + } + + SerialPortManager.Get.HandleHydrophoneData(DevCode.Dev1, tags); } else if (RedSensorStepBar.StepIndex == 3) { @@ -184,8 +190,14 @@ { CommandSender.SendDataCheckResultCmd(SerialPortManager.Get.Sp, DevCode.Dev2, new List()); - //分析数据 - Messenger.Default.Send(DevCode.Dev2, MessengerToken.StartHandleSensorData); + //处理数据 + var tags = new List(); + foreach (var list in FlowStatus.BlueSensorTagLists) + { + tags.AddRange(list); + } + + SerialPortManager.Get.HandleHydrophoneData(DevCode.Dev2, tags); } else if (BlueSensorStepBar.StepIndex == 3) { diff --git a/Correlator/Dialog/CheckResponseDialog.xaml.cs b/Correlator/Dialog/CheckResponseDialog.xaml.cs index f78189f..0d2400a 100644 --- a/Correlator/Dialog/CheckResponseDialog.xaml.cs +++ b/Correlator/Dialog/CheckResponseDialog.xaml.cs @@ -142,8 +142,14 @@ //下发数据全部正常指令 CommandSender.SendDataCheckResultCmd(SerialPortManager.Get.Sp, DevCode.Dev1, new List()); - //分析数据 - Messenger.Default.Send(DevCode.Dev1, MessengerToken.StartHandleSensorData); + //处理数据 + var tags = new List(); + foreach (var list in FlowStatus.RedSensorTagLists) + { + tags.AddRange(list); + } + + SerialPortManager.Get.HandleHydrophoneData(DevCode.Dev1, tags); } else if (RedSensorStepBar.StepIndex == 3) { @@ -184,8 +190,14 @@ { CommandSender.SendDataCheckResultCmd(SerialPortManager.Get.Sp, DevCode.Dev2, new List()); - //分析数据 - Messenger.Default.Send(DevCode.Dev2, MessengerToken.StartHandleSensorData); + //处理数据 + var tags = new List(); + foreach (var list in FlowStatus.BlueSensorTagLists) + { + tags.AddRange(list); + } + + SerialPortManager.Get.HandleHydrophoneData(DevCode.Dev2, tags); } else if (BlueSensorStepBar.StepIndex == 3) { diff --git a/Correlator/Util/MessengerToken.cs b/Correlator/Util/MessengerToken.cs index 7d76541..759ffde 100644 --- a/Correlator/Util/MessengerToken.cs +++ b/Correlator/Util/MessengerToken.cs @@ -17,8 +17,5 @@ //显示点名弹窗 public const string ShowCheckResponseDialog = "202306060101"; - - //开始处理水听器数据 - public const string StartHandleSensorData = "202306290101"; } } \ No newline at end of file diff --git a/Correlator/Dialog/CheckResponseDialog.xaml.cs b/Correlator/Dialog/CheckResponseDialog.xaml.cs index f78189f..0d2400a 100644 --- a/Correlator/Dialog/CheckResponseDialog.xaml.cs +++ b/Correlator/Dialog/CheckResponseDialog.xaml.cs @@ -142,8 +142,14 @@ //下发数据全部正常指令 CommandSender.SendDataCheckResultCmd(SerialPortManager.Get.Sp, DevCode.Dev1, new List()); - //分析数据 - Messenger.Default.Send(DevCode.Dev1, MessengerToken.StartHandleSensorData); + //处理数据 + var tags = new List(); + foreach (var list in FlowStatus.RedSensorTagLists) + { + tags.AddRange(list); + } + + SerialPortManager.Get.HandleHydrophoneData(DevCode.Dev1, tags); } else if (RedSensorStepBar.StepIndex == 3) { @@ -184,8 +190,14 @@ { CommandSender.SendDataCheckResultCmd(SerialPortManager.Get.Sp, DevCode.Dev2, new List()); - //分析数据 - Messenger.Default.Send(DevCode.Dev2, MessengerToken.StartHandleSensorData); + //处理数据 + var tags = new List(); + foreach (var list in FlowStatus.BlueSensorTagLists) + { + tags.AddRange(list); + } + + SerialPortManager.Get.HandleHydrophoneData(DevCode.Dev2, tags); } else if (BlueSensorStepBar.StepIndex == 3) { diff --git a/Correlator/Util/MessengerToken.cs b/Correlator/Util/MessengerToken.cs index 7d76541..759ffde 100644 --- a/Correlator/Util/MessengerToken.cs +++ b/Correlator/Util/MessengerToken.cs @@ -17,8 +17,5 @@ //显示点名弹窗 public const string ShowCheckResponseDialog = "202306060101"; - - //开始处理水听器数据 - public const string StartHandleSensorData = "202306290101"; } } \ No newline at end of file diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs index d95348a..091cc04 100644 --- a/Correlator/Util/SerialPortManager.cs +++ b/Correlator/Util/SerialPortManager.cs @@ -28,40 +28,6 @@ private SerialPortManager() { Sp.DataReceived += DataReceivedFromSerialPort; - - //水听器数据预处理 - Messenger.Default.Register(this, MessengerToken.StartHandleSensorData, id => - { - if (id.Equals(DevCode.Dev1)) - { - var tags = new List(); - foreach (var list in FlowStatus.RedSensorTagLists) - { - tags.AddRange(list); - } - - HandleHydrophoneData(id, tags); - "SerialPortManager".WriteLog(id + "数据处理完成"); - } - else - { - var tags = new List(); - foreach (var list in FlowStatus.BlueSensorTagLists) - { - tags.AddRange(list); - } - - HandleHydrophoneData(id, tags); - "SerialPortManager".WriteLog(id + "数据处理完成"); - - //清空缓存 - FlowStatus.RedSensorTagLists.Clear(); - FlowStatus.BlueSensorTagLists.Clear(); - - //重新定义dataModel,清空之前的缓存 - _dataModel = new CorrelatorDataModel(); - } - }); } #endregion @@ -69,8 +35,8 @@ private readonly DevStatus _devStatus = new DevStatus(); //左右传感器设备数据 - private CorrelatorDataModel _dataModel = new CorrelatorDataModel(); - + private CorrelatorDataModel _dataModel; + /// /// 数据监听委托解注册 /// @@ -244,6 +210,11 @@ private void HandleCorrelatorData(string devCode, List tags) { + if (_dataModel == null) + { + _dataModel = new CorrelatorDataModel(); + } + var clobData = new double[3750]; //3750个采样点 //处理接到的噪声数据 @@ -286,12 +257,8 @@ //左右两边接收到的数据时间差超过10s,认为不是同一次此指令返回的,舍弃 if (diffTime >= 10) return; - FlowStatus.CorrelatorData = _dataModel; - Messenger.Default.Send("", MessengerToken.HomePageDeviceData); - //重新定义dataModel,清空之前的缓存 - _dataModel = new CorrelatorDataModel(); } else { @@ -305,10 +272,14 @@ /// /// /// - private void HandleHydrophoneData(string devCode, List tags) + public void HandleHydrophoneData(string devCode, List tags) { + if (_dataModel == null) + { + _dataModel = new CorrelatorDataModel(); + } + var clobData = new double[7500 * 60]; //7500*60个采样点 - //处理接到的噪声数据 var noiseTag = tags.GetUploadNoiseTag(); if (noiseTag != null) { @@ -333,32 +304,40 @@ { _dataModel.RightDeviceDataArray = clobData; } + + FlowStatus.CorrelatorData = _dataModel; + "SerialPortManager".WriteLog(devCode + "数据处理完成"); + } + else + { + Debug.WriteLine("SerialPortManager => noiseTag == null"); } // var dataFromFile = "C:\\Users\\Administrator\\Desktop\\测试数据.16.134833.txt".ReadFromFile(); // var index = dataFromFile.IndexOf("==============="); // - // var cacheData = new double[7500 * 60]; // _dataModel.DevCode = devCode; // if (devCode.Equals(DevCode.Dev1)) // { - // // for (var i = 1; i < index; i++) // { - // cacheData[i - 1] = Convert.ToDouble(dataFromFile[i]); + // clobData[i - 1] = Convert.ToDouble(dataFromFile[i]); // } // - // _dataModel.LeftDeviceDataArray = cacheData; + // _dataModel.LeftDeviceDataArray = clobData; // } // else // { // for (var i = index + 1; i < dataFromFile.Count; i++) // { - // cacheData[i - 450002] = Convert.ToDouble(dataFromFile[i]); + // clobData[i - 450002] = Convert.ToDouble(dataFromFile[i]); // } // - // _dataModel.RightDeviceDataArray = cacheData; + // _dataModel.RightDeviceDataArray = clobData; // } + // + // FlowStatus.CorrelatorData = _dataModel; + // "SerialPortManager".WriteLog(devCode + "数据处理完成"); } private void HandleListenData(List tags) diff --git a/Correlator/Dialog/CheckResponseDialog.xaml.cs b/Correlator/Dialog/CheckResponseDialog.xaml.cs index f78189f..0d2400a 100644 --- a/Correlator/Dialog/CheckResponseDialog.xaml.cs +++ b/Correlator/Dialog/CheckResponseDialog.xaml.cs @@ -142,8 +142,14 @@ //下发数据全部正常指令 CommandSender.SendDataCheckResultCmd(SerialPortManager.Get.Sp, DevCode.Dev1, new List()); - //分析数据 - Messenger.Default.Send(DevCode.Dev1, MessengerToken.StartHandleSensorData); + //处理数据 + var tags = new List(); + foreach (var list in FlowStatus.RedSensorTagLists) + { + tags.AddRange(list); + } + + SerialPortManager.Get.HandleHydrophoneData(DevCode.Dev1, tags); } else if (RedSensorStepBar.StepIndex == 3) { @@ -184,8 +190,14 @@ { CommandSender.SendDataCheckResultCmd(SerialPortManager.Get.Sp, DevCode.Dev2, new List()); - //分析数据 - Messenger.Default.Send(DevCode.Dev2, MessengerToken.StartHandleSensorData); + //处理数据 + var tags = new List(); + foreach (var list in FlowStatus.BlueSensorTagLists) + { + tags.AddRange(list); + } + + SerialPortManager.Get.HandleHydrophoneData(DevCode.Dev2, tags); } else if (BlueSensorStepBar.StepIndex == 3) { diff --git a/Correlator/Util/MessengerToken.cs b/Correlator/Util/MessengerToken.cs index 7d76541..759ffde 100644 --- a/Correlator/Util/MessengerToken.cs +++ b/Correlator/Util/MessengerToken.cs @@ -17,8 +17,5 @@ //显示点名弹窗 public const string ShowCheckResponseDialog = "202306060101"; - - //开始处理水听器数据 - public const string StartHandleSensorData = "202306290101"; } } \ No newline at end of file diff --git a/Correlator/Util/SerialPortManager.cs b/Correlator/Util/SerialPortManager.cs index d95348a..091cc04 100644 --- a/Correlator/Util/SerialPortManager.cs +++ b/Correlator/Util/SerialPortManager.cs @@ -28,40 +28,6 @@ private SerialPortManager() { Sp.DataReceived += DataReceivedFromSerialPort; - - //水听器数据预处理 - Messenger.Default.Register(this, MessengerToken.StartHandleSensorData, id => - { - if (id.Equals(DevCode.Dev1)) - { - var tags = new List(); - foreach (var list in FlowStatus.RedSensorTagLists) - { - tags.AddRange(list); - } - - HandleHydrophoneData(id, tags); - "SerialPortManager".WriteLog(id + "数据处理完成"); - } - else - { - var tags = new List(); - foreach (var list in FlowStatus.BlueSensorTagLists) - { - tags.AddRange(list); - } - - HandleHydrophoneData(id, tags); - "SerialPortManager".WriteLog(id + "数据处理完成"); - - //清空缓存 - FlowStatus.RedSensorTagLists.Clear(); - FlowStatus.BlueSensorTagLists.Clear(); - - //重新定义dataModel,清空之前的缓存 - _dataModel = new CorrelatorDataModel(); - } - }); } #endregion @@ -69,8 +35,8 @@ private readonly DevStatus _devStatus = new DevStatus(); //左右传感器设备数据 - private CorrelatorDataModel _dataModel = new CorrelatorDataModel(); - + private CorrelatorDataModel _dataModel; + /// /// 数据监听委托解注册 /// @@ -244,6 +210,11 @@ private void HandleCorrelatorData(string devCode, List tags) { + if (_dataModel == null) + { + _dataModel = new CorrelatorDataModel(); + } + var clobData = new double[3750]; //3750个采样点 //处理接到的噪声数据 @@ -286,12 +257,8 @@ //左右两边接收到的数据时间差超过10s,认为不是同一次此指令返回的,舍弃 if (diffTime >= 10) return; - FlowStatus.CorrelatorData = _dataModel; - Messenger.Default.Send("", MessengerToken.HomePageDeviceData); - //重新定义dataModel,清空之前的缓存 - _dataModel = new CorrelatorDataModel(); } else { @@ -305,10 +272,14 @@ /// /// /// - private void HandleHydrophoneData(string devCode, List tags) + public void HandleHydrophoneData(string devCode, List tags) { + if (_dataModel == null) + { + _dataModel = new CorrelatorDataModel(); + } + var clobData = new double[7500 * 60]; //7500*60个采样点 - //处理接到的噪声数据 var noiseTag = tags.GetUploadNoiseTag(); if (noiseTag != null) { @@ -333,32 +304,40 @@ { _dataModel.RightDeviceDataArray = clobData; } + + FlowStatus.CorrelatorData = _dataModel; + "SerialPortManager".WriteLog(devCode + "数据处理完成"); + } + else + { + Debug.WriteLine("SerialPortManager => noiseTag == null"); } // var dataFromFile = "C:\\Users\\Administrator\\Desktop\\测试数据.16.134833.txt".ReadFromFile(); // var index = dataFromFile.IndexOf("==============="); // - // var cacheData = new double[7500 * 60]; // _dataModel.DevCode = devCode; // if (devCode.Equals(DevCode.Dev1)) // { - // // for (var i = 1; i < index; i++) // { - // cacheData[i - 1] = Convert.ToDouble(dataFromFile[i]); + // clobData[i - 1] = Convert.ToDouble(dataFromFile[i]); // } // - // _dataModel.LeftDeviceDataArray = cacheData; + // _dataModel.LeftDeviceDataArray = clobData; // } // else // { // for (var i = index + 1; i < dataFromFile.Count; i++) // { - // cacheData[i - 450002] = Convert.ToDouble(dataFromFile[i]); + // clobData[i - 450002] = Convert.ToDouble(dataFromFile[i]); // } // - // _dataModel.RightDeviceDataArray = cacheData; + // _dataModel.RightDeviceDataArray = clobData; // } + // + // FlowStatus.CorrelatorData = _dataModel; + // "SerialPortManager".WriteLog(devCode + "数据处理完成"); } private void HandleListenData(List tags) diff --git a/Correlator/ViewModel/HomePageProViewModel.cs b/Correlator/ViewModel/HomePageProViewModel.cs index 5130e63..e6d15f7 100644 --- a/Correlator/ViewModel/HomePageProViewModel.cs +++ b/Correlator/ViewModel/HomePageProViewModel.cs @@ -571,6 +571,9 @@ _runningTimer.Stop(); StartButtonEnabled = true; + //清空缓存 + FlowStatus.RedSensorTagLists.Clear(); + FlowStatus.BlueSensorTagLists.Clear(); FlowStatus.RedSensorIsEnable = false; FlowStatus.BlueSensorIsEnable = false; DialogHub.Get.DismissLoadingDialog(); @@ -583,7 +586,7 @@ /// private void CalculateData(CorrelatorDataModel dataModel) { - if (dataModel.LeftDeviceDataArray.Any() && dataModel.RightDeviceDataArray.Any()) + if (dataModel.LeftDeviceDataArray != null && dataModel.RightDeviceDataArray != null) { Debug.WriteLine("HomePageProViewModel => 开始计算"); var array = _correlator.locating(11, @@ -766,7 +769,16 @@ var leftCacheData = new double[7500 * 60]; for (var i = 1; i < index; i++) { - leftCacheData[i - 1] = Convert.ToDouble(dataFromFile[i]); + try + { + leftCacheData[i - 1] = Convert.ToDouble(dataFromFile[i]); + } + catch (FormatException e) + { + Console.WriteLine(e); + Debug.WriteLine($"HomePageProViewModel => {dataFromFile[i]}"); + throw; + } } dataModel.DevCode = DevCode.Dev1; @@ -777,7 +789,16 @@ //450001 - 900000 for (var i = index + 1; i < dataFromFile.Count; i++) { - rightCacheData[i - 450002] = Convert.ToDouble(dataFromFile[i]); + try + { + rightCacheData[i - 450002] = Convert.ToDouble(dataFromFile[i]); + } + catch (FormatException e) + { + Console.WriteLine(e); + Debug.WriteLine($"HomePageProViewModel => {dataFromFile[i]}"); + throw; + } } dataModel.DevCode = DevCode.Dev2;