diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 85614e0..81f79bb 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -183,6 +183,9 @@
EditSoundSpeedDialog.xaml
+
+ ImportResponseDialog.xaml
+
LoadingDialog.xaml
@@ -257,6 +260,10 @@
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 85614e0..81f79bb 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -183,6 +183,9 @@
EditSoundSpeedDialog.xaml
+
+ ImportResponseDialog.xaml
+
LoadingDialog.xaml
@@ -257,6 +260,10 @@
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml
new file mode 100644
index 0000000..01aace9
--- /dev/null
+++ b/Correlator/Dialog/ImportResponseDialog.xaml
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 85614e0..81f79bb 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -183,6 +183,9 @@
EditSoundSpeedDialog.xaml
+
+ ImportResponseDialog.xaml
+
LoadingDialog.xaml
@@ -257,6 +260,10 @@
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml
new file mode 100644
index 0000000..01aace9
--- /dev/null
+++ b/Correlator/Dialog/ImportResponseDialog.xaml
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml.cs b/Correlator/Dialog/ImportResponseDialog.xaml.cs
new file mode 100644
index 0000000..dc9f511
--- /dev/null
+++ b/Correlator/Dialog/ImportResponseDialog.xaml.cs
@@ -0,0 +1,177 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows;
+using Correlator.Model;
+using Correlator.SensorHubTag;
+using Correlator.Util;
+using GalaSoft.MvvmLight.Messaging;
+using Microsoft.Win32;
+using MessageBox = HandyControl.Controls.MessageBox;
+
+namespace Correlator.Dialog
+{
+ ///
+ /// ImportResponseDialog.xaml 的交互逻辑
+ ///
+ public partial class ImportResponseDialog : Window
+ {
+ private double[] _leftDataArray;
+ private double[] _rightDataArray;
+
+ public ImportResponseDialog()
+ {
+ InitializeComponent();
+
+ var dataModel = new CorrelatorDataModel();
+
+ GoBackButton.Click += delegate { Close(); };
+
+ SelectRedSensorFileButton.Click += delegate
+ {
+ var fileDialog = new OpenFileDialog
+ {
+ // 设置默认格式
+ DefaultExt = ".txt",
+ Filter = "发射机数据文件(*.txt)|*.txt"
+ };
+ var result = fileDialog.ShowDialog();
+ if (result == true)
+ {
+ RedSensorFileTextBox.Text = fileDialog.FileName;
+ //ProgressBar 开始
+ RedSensorFileProgressBar.Value = 0;
+ var dataFromFile = fileDialog.FileName.ReadFromFile();
+ var doubleArrays = new List>();
+ foreach (var s in dataFromFile)
+ {
+ //处理单条数据
+ var realData = HandleSerialPortData(s);
+ doubleArrays.Add(realData);
+ }
+
+ //格式化double[]
+ var totalData = new List();
+ foreach (var item in doubleArrays)
+ {
+ totalData.AddRange(item);
+ }
+
+ _leftDataArray = totalData.ToArray();
+ dataModel.DevCode = DevCode.Dev1;
+ dataModel.LeftReceiveDataTime = DateTime.Now;
+ dataModel.LeftDeviceDataArray = _leftDataArray;
+
+ //ProgressBar 结束
+ RedSensorFileProgressBar.Value = 100;
+ }
+ };
+
+ SelectBlueSensorFileButton.Click += delegate
+ {
+ var fileDialog = new OpenFileDialog
+ {
+ // 设置默认格式
+ DefaultExt = ".txt",
+ Filter = "发射机数据文件(*.txt)|*.txt"
+ };
+ var result = fileDialog.ShowDialog();
+ if (result == true)
+ {
+ BlueSensorFileTextBox.Text = fileDialog.FileName;
+ //ProgressBar 开始
+ BlueSensorFileProgressBar.Value = 0;
+ var dataFromFile = fileDialog.FileName.ReadFromFile();
+ var doubleArrays = new List>();
+ foreach (var s in dataFromFile)
+ {
+ //处理单条数据
+ var realData = HandleSerialPortData(s);
+ doubleArrays.Add(realData);
+ }
+
+ //格式化double[]
+ var totalData = new List();
+ foreach (var item in doubleArrays)
+ {
+ totalData.AddRange(item);
+ }
+
+ _rightDataArray = totalData.ToArray();
+ dataModel.DevCode = DevCode.Dev2;
+ dataModel.RightReceiveDataTime = DateTime.Now;
+ dataModel.RightDeviceDataArray = _rightDataArray;
+
+ //ProgressBar 结束
+ BlueSensorFileProgressBar.Value = 100;
+ }
+ };
+
+ //赋值给缓存
+ FlowStatus.CorrelatorData = dataModel;
+ }
+
+ private void ImportResponseDialog_OnLoaded(object sender, RoutedEventArgs e)
+ {
+ MouseDown += delegate { DragMove(); };
+ }
+
+ private void ImportResponseDialog_OnClosed(object sender, EventArgs e)
+ {
+ if (_leftDataArray == null || _rightDataArray == null)
+ {
+ MessageBox.Show("数据还未处理完毕,请稍后", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ Messenger.Default.Send("", MessengerToken.HomePageDeviceData);
+ }
+
+ ///
+ /// 单条Hex原始数据转List
+ ///
+ ///
+ ///
+ private List HandleSerialPortData(string data)
+ {
+ //将string转为byte[]
+ var temp = new List();
+ for (var i = 0; i < data.Length; i += 2)
+ {
+ temp.Add(data.Substring(i, 2));
+ }
+
+ var bytes = new byte[temp.Count];
+ for (var i = 0; i < temp.Count; i++)
+ {
+ bytes[i] = Convert.ToByte(temp[i], 16);
+ }
+
+ //测试是否转化成功
+ if (!data.Equals(BitConverter.ToString(bytes).Replace("-", "")))
+ {
+ MessageBox.Show("数据转化失败!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+ return new List();
+ }
+
+ var tagBytes = new byte[bytes.Length - 18];
+ Array.Copy(bytes, 16, tagBytes, 0, bytes.Length - 18);
+ var tags = tagBytes.GetTags();
+
+ //其实就3个Tag,[CellTag,TimeTag,UploadTag]
+ var noiseTag = tags.Where(tag => tag is UploadTag).Cast().First();
+ //理论上noiseTag不会为空
+ var num = noiseTag.Len / 3;
+ var realData = new List();
+ for (var i = 0; i < num; i++)
+ {
+ var dStr = new byte[3];
+ Array.Copy(noiseTag.DataValue, i * 3, dStr, 0, 3);
+
+ realData.Add(dStr.HexToDouble());
+ }
+
+ return realData;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index 85614e0..81f79bb 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -183,6 +183,9 @@
EditSoundSpeedDialog.xaml
+
+ ImportResponseDialog.xaml
+
LoadingDialog.xaml
@@ -257,6 +260,10 @@
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml
new file mode 100644
index 0000000..01aace9
--- /dev/null
+++ b/Correlator/Dialog/ImportResponseDialog.xaml
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml.cs b/Correlator/Dialog/ImportResponseDialog.xaml.cs
new file mode 100644
index 0000000..dc9f511
--- /dev/null
+++ b/Correlator/Dialog/ImportResponseDialog.xaml.cs
@@ -0,0 +1,177 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Windows;
+using Correlator.Model;
+using Correlator.SensorHubTag;
+using Correlator.Util;
+using GalaSoft.MvvmLight.Messaging;
+using Microsoft.Win32;
+using MessageBox = HandyControl.Controls.MessageBox;
+
+namespace Correlator.Dialog
+{
+ ///
+ /// ImportResponseDialog.xaml 的交互逻辑
+ ///
+ public partial class ImportResponseDialog : Window
+ {
+ private double[] _leftDataArray;
+ private double[] _rightDataArray;
+
+ public ImportResponseDialog()
+ {
+ InitializeComponent();
+
+ var dataModel = new CorrelatorDataModel();
+
+ GoBackButton.Click += delegate { Close(); };
+
+ SelectRedSensorFileButton.Click += delegate
+ {
+ var fileDialog = new OpenFileDialog
+ {
+ // 设置默认格式
+ DefaultExt = ".txt",
+ Filter = "发射机数据文件(*.txt)|*.txt"
+ };
+ var result = fileDialog.ShowDialog();
+ if (result == true)
+ {
+ RedSensorFileTextBox.Text = fileDialog.FileName;
+ //ProgressBar 开始
+ RedSensorFileProgressBar.Value = 0;
+ var dataFromFile = fileDialog.FileName.ReadFromFile();
+ var doubleArrays = new List>();
+ foreach (var s in dataFromFile)
+ {
+ //处理单条数据
+ var realData = HandleSerialPortData(s);
+ doubleArrays.Add(realData);
+ }
+
+ //格式化double[]
+ var totalData = new List();
+ foreach (var item in doubleArrays)
+ {
+ totalData.AddRange(item);
+ }
+
+ _leftDataArray = totalData.ToArray();
+ dataModel.DevCode = DevCode.Dev1;
+ dataModel.LeftReceiveDataTime = DateTime.Now;
+ dataModel.LeftDeviceDataArray = _leftDataArray;
+
+ //ProgressBar 结束
+ RedSensorFileProgressBar.Value = 100;
+ }
+ };
+
+ SelectBlueSensorFileButton.Click += delegate
+ {
+ var fileDialog = new OpenFileDialog
+ {
+ // 设置默认格式
+ DefaultExt = ".txt",
+ Filter = "发射机数据文件(*.txt)|*.txt"
+ };
+ var result = fileDialog.ShowDialog();
+ if (result == true)
+ {
+ BlueSensorFileTextBox.Text = fileDialog.FileName;
+ //ProgressBar 开始
+ BlueSensorFileProgressBar.Value = 0;
+ var dataFromFile = fileDialog.FileName.ReadFromFile();
+ var doubleArrays = new List>();
+ foreach (var s in dataFromFile)
+ {
+ //处理单条数据
+ var realData = HandleSerialPortData(s);
+ doubleArrays.Add(realData);
+ }
+
+ //格式化double[]
+ var totalData = new List();
+ foreach (var item in doubleArrays)
+ {
+ totalData.AddRange(item);
+ }
+
+ _rightDataArray = totalData.ToArray();
+ dataModel.DevCode = DevCode.Dev2;
+ dataModel.RightReceiveDataTime = DateTime.Now;
+ dataModel.RightDeviceDataArray = _rightDataArray;
+
+ //ProgressBar 结束
+ BlueSensorFileProgressBar.Value = 100;
+ }
+ };
+
+ //赋值给缓存
+ FlowStatus.CorrelatorData = dataModel;
+ }
+
+ private void ImportResponseDialog_OnLoaded(object sender, RoutedEventArgs e)
+ {
+ MouseDown += delegate { DragMove(); };
+ }
+
+ private void ImportResponseDialog_OnClosed(object sender, EventArgs e)
+ {
+ if (_leftDataArray == null || _rightDataArray == null)
+ {
+ MessageBox.Show("数据还未处理完毕,请稍后", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ Messenger.Default.Send("", MessengerToken.HomePageDeviceData);
+ }
+
+ ///
+ /// 单条Hex原始数据转List
+ ///
+ ///
+ ///
+ private List HandleSerialPortData(string data)
+ {
+ //将string转为byte[]
+ var temp = new List();
+ for (var i = 0; i < data.Length; i += 2)
+ {
+ temp.Add(data.Substring(i, 2));
+ }
+
+ var bytes = new byte[temp.Count];
+ for (var i = 0; i < temp.Count; i++)
+ {
+ bytes[i] = Convert.ToByte(temp[i], 16);
+ }
+
+ //测试是否转化成功
+ if (!data.Equals(BitConverter.ToString(bytes).Replace("-", "")))
+ {
+ MessageBox.Show("数据转化失败!", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
+ return new List();
+ }
+
+ var tagBytes = new byte[bytes.Length - 18];
+ Array.Copy(bytes, 16, tagBytes, 0, bytes.Length - 18);
+ var tags = tagBytes.GetTags();
+
+ //其实就3个Tag,[CellTag,TimeTag,UploadTag]
+ var noiseTag = tags.Where(tag => tag is UploadTag).Cast().First();
+ //理论上noiseTag不会为空
+ var num = noiseTag.Len / 3;
+ var realData = new List();
+ for (var i = 0; i < num; i++)
+ {
+ var dStr = new byte[3];
+ Array.Copy(noiseTag.DataValue, i * 3, dStr, 0, 3);
+
+ realData.Add(dStr.HexToDouble());
+ }
+
+ return realData;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Correlator/ViewModel/HomePageProViewModel.cs b/Correlator/ViewModel/HomePageProViewModel.cs
index 75a4540..6847b68 100644
--- a/Correlator/ViewModel/HomePageProViewModel.cs
+++ b/Correlator/ViewModel/HomePageProViewModel.cs
@@ -19,7 +19,6 @@
using GalaSoft.MvvmLight.Messaging;
using HandyControl.Controls;
using MathWorks.MATLAB.NET.Arrays;
-using Microsoft.Win32;
using Newtonsoft.Json;
using ComboBox = System.Windows.Controls.ComboBox;
using MessageBox = HandyControl.Controls.MessageBox;
@@ -713,22 +712,28 @@
{
if (CheckParamLegitimacy())
{
- var fileDialog = new OpenFileDialog
+ // var fileDialog = new OpenFileDialog
+ // {
+ // // 设置默认格式
+ // DefaultExt = ".txt",
+ // Filter = "发射机数据文件(*.txt)|*.txt"
+ // };
+ // var result = fileDialog.ShowDialog();
+ // if (result == true)
+ // {
+ // var dataFromFile = fileDialog.FileName.ReadFromFile();
+ //
+ // //赋值给缓存,比用消息传递更直接
+ // FlowStatus.CorrelatorData = dataFromFile.LocalDataToDataModel();
+ //
+ // Messenger.Default.Send("", MessengerToken.HomePageDeviceData);
+ // }
+
+ var importResponseDialog = new ImportResponseDialog()
{
- // 设置默认格式
- DefaultExt = ".txt",
- Filter = "发射机数据文件(*.txt)|*.txt"
+ Owner = _homePageWindow
};
- var result = fileDialog.ShowDialog();
- if (result == true)
- {
- var dataFromFile = fileDialog.FileName.ReadFromFile();
-
- //赋值给缓存,比用消息传递更直接
- FlowStatus.CorrelatorData = dataFromFile.LocalDataToDataModel();
-
- Messenger.Default.Send("", MessengerToken.HomePageDeviceData);
- }
+ importResponseDialog.ShowDialog();
}
});