diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index e711ddc..2477c72 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -231,6 +231,7 @@
+
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index e711ddc..2477c72 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -231,6 +231,7 @@
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml
index 01aace9..53cc5ed 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml
+++ b/Correlator/Dialog/ImportResponseDialog.xaml
@@ -4,18 +4,29 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:hc="https://handyorg.github.io/handycontrol"
+ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="650"
Height="450"
AllowsTransparency="True"
Background="Transparent"
- Closed="ImportResponseDialog_OnClosed"
- Loaded="ImportResponseDialog_OnLoaded"
+ DataContext="{Binding ImportResponse, Source={StaticResource Locator}}"
ResizeMode="NoResize"
ShowInTaskbar="False"
WindowStartupLocation="CenterOwner"
WindowStyle="None"
mc:Ignorable="d">
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/Correlator/Correlator.csproj b/Correlator/Correlator.csproj
index e711ddc..2477c72 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -231,6 +231,7 @@
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml
index 01aace9..53cc5ed 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml
+++ b/Correlator/Dialog/ImportResponseDialog.xaml
@@ -4,18 +4,29 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:hc="https://handyorg.github.io/handycontrol"
+ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="650"
Height="450"
AllowsTransparency="True"
Background="Transparent"
- Closed="ImportResponseDialog_OnClosed"
- Loaded="ImportResponseDialog_OnLoaded"
+ DataContext="{Binding ImportResponse, Source={StaticResource Locator}}"
ResizeMode="NoResize"
ShowInTaskbar="False"
WindowStartupLocation="CenterOwner"
WindowStyle="None"
mc:Ignorable="d">
+
+
+
+
+
+
+
+
+
+
+
-
+
+ ShowClearButton="True"
+ Text="{Binding RedSensorFilePath}" />
-
+
@@ -140,23 +151,23 @@
+ ShowClearButton="True"
+ Text="{Binding BlueSensorFilePath}" />
-
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml.cs b/Correlator/Dialog/ImportResponseDialog.xaml.cs
index e79ea76..aa31511 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml.cs
+++ b/Correlator/Dialog/ImportResponseDialog.xaml.cs
@@ -1,13 +1,4 @@
-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;
+using System.Windows;
namespace Correlator.Dialog
{
@@ -16,165 +7,9 @@
///
public partial class ImportResponseDialog : Window
{
- private double[] _leftDataArray;
- private double[] _rightDataArray;
-
public ImportResponseDialog()
{
InitializeComponent();
-
- var dataModel = new CorrelatorDataModel();
-
- GoBackButton.Click += delegate
- {
- if (_leftDataArray == null || _rightDataArray == null)
- {
- MessageBox.Show("数据还未处理完毕,请稍后", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
-
- 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)
- {
- 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 e711ddc..2477c72 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -231,6 +231,7 @@
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml
index 01aace9..53cc5ed 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml
+++ b/Correlator/Dialog/ImportResponseDialog.xaml
@@ -4,18 +4,29 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:hc="https://handyorg.github.io/handycontrol"
+ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="650"
Height="450"
AllowsTransparency="True"
Background="Transparent"
- Closed="ImportResponseDialog_OnClosed"
- Loaded="ImportResponseDialog_OnLoaded"
+ DataContext="{Binding ImportResponse, Source={StaticResource Locator}}"
ResizeMode="NoResize"
ShowInTaskbar="False"
WindowStartupLocation="CenterOwner"
WindowStyle="None"
mc:Ignorable="d">
+
+
+
+
+
+
+
+
+
+
+
-
+
+ ShowClearButton="True"
+ Text="{Binding RedSensorFilePath}" />
-
+
@@ -140,23 +151,23 @@
+ ShowClearButton="True"
+ Text="{Binding BlueSensorFilePath}" />
-
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml.cs b/Correlator/Dialog/ImportResponseDialog.xaml.cs
index e79ea76..aa31511 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml.cs
+++ b/Correlator/Dialog/ImportResponseDialog.xaml.cs
@@ -1,13 +1,4 @@
-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;
+using System.Windows;
namespace Correlator.Dialog
{
@@ -16,165 +7,9 @@
///
public partial class ImportResponseDialog : Window
{
- private double[] _leftDataArray;
- private double[] _rightDataArray;
-
public ImportResponseDialog()
{
InitializeComponent();
-
- var dataModel = new CorrelatorDataModel();
-
- GoBackButton.Click += delegate
- {
- if (_leftDataArray == null || _rightDataArray == null)
- {
- MessageBox.Show("数据还未处理完毕,请稍后", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
-
- 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)
- {
- 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/View/HomePageProWindow.xaml b/Correlator/View/HomePageProWindow.xaml
index 86d21d0..55bfae1 100644
--- a/Correlator/View/HomePageProWindow.xaml
+++ b/Correlator/View/HomePageProWindow.xaml
@@ -400,7 +400,10 @@
VerticalAlignment="Bottom"
Source="{Binding RedTransmitterSignalIntensity, ConverterParameter=0, Converter={StaticResource SignalImageConverter}}" />
-
+
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml
index 01aace9..53cc5ed 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml
+++ b/Correlator/Dialog/ImportResponseDialog.xaml
@@ -4,18 +4,29 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:hc="https://handyorg.github.io/handycontrol"
+ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="650"
Height="450"
AllowsTransparency="True"
Background="Transparent"
- Closed="ImportResponseDialog_OnClosed"
- Loaded="ImportResponseDialog_OnLoaded"
+ DataContext="{Binding ImportResponse, Source={StaticResource Locator}}"
ResizeMode="NoResize"
ShowInTaskbar="False"
WindowStartupLocation="CenterOwner"
WindowStyle="None"
mc:Ignorable="d">
+
+
+
+
+
+
+
+
+
+
+
-
+
+ ShowClearButton="True"
+ Text="{Binding RedSensorFilePath}" />
-
+
@@ -140,23 +151,23 @@
+ ShowClearButton="True"
+ Text="{Binding BlueSensorFilePath}" />
-
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml.cs b/Correlator/Dialog/ImportResponseDialog.xaml.cs
index e79ea76..aa31511 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml.cs
+++ b/Correlator/Dialog/ImportResponseDialog.xaml.cs
@@ -1,13 +1,4 @@
-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;
+using System.Windows;
namespace Correlator.Dialog
{
@@ -16,165 +7,9 @@
///
public partial class ImportResponseDialog : Window
{
- private double[] _leftDataArray;
- private double[] _rightDataArray;
-
public ImportResponseDialog()
{
InitializeComponent();
-
- var dataModel = new CorrelatorDataModel();
-
- GoBackButton.Click += delegate
- {
- if (_leftDataArray == null || _rightDataArray == null)
- {
- MessageBox.Show("数据还未处理完毕,请稍后", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
-
- 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)
- {
- 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/View/HomePageProWindow.xaml b/Correlator/View/HomePageProWindow.xaml
index 86d21d0..55bfae1 100644
--- a/Correlator/View/HomePageProWindow.xaml
+++ b/Correlator/View/HomePageProWindow.xaml
@@ -400,7 +400,10 @@
VerticalAlignment="Bottom"
Source="{Binding RedTransmitterSignalIntensity, ConverterParameter=0, Converter={StaticResource SignalImageConverter}}" />
-
+
WindowLoadedCommand { get; set; }
+ public RelayCommand GoBackCommand { get; set; }
+ public RelayCommand SelectRedSensorFileCommand { get; set; }
+ public RelayCommand SelectBlueSensorFileCommand { get; set; }
+ public RelayCommand WindowClosedCommand { get; set; }
+
+ #endregion
+
+ private Window _window;
+ private bool _isRedSensor;
+ private readonly BackgroundWorker _backgroundWorker;
+ private readonly CorrelatorDataModel _dataModel;
+
+ #region VM
+
+ private string _redSensorFilePath;
+
+ public string RedSensorFilePath
+ {
+ get => _redSensorFilePath;
+ set
+ {
+ _redSensorFilePath = value;
+ RaisePropertyChanged(() => RedSensorFilePath);
+ }
+ }
+
+ private string _blueSensorFilePath;
+
+ public string BlueSensorFilePath
+ {
+ get => _blueSensorFilePath;
+ set
+ {
+ _blueSensorFilePath = value;
+ RaisePropertyChanged(() => BlueSensorFilePath);
+ }
+ }
+
+ private int _redProgressBarValue;
+
+ public int RedProgressBarValue
+ {
+ get => _redProgressBarValue;
+ set
+ {
+ _redProgressBarValue = value;
+ RaisePropertyChanged(() => RedProgressBarValue);
+ }
+ }
+
+ private int _blueProgressBarValue;
+
+ public int BlueProgressBarValue
+ {
+ get => _blueProgressBarValue;
+ set
+ {
+ _blueProgressBarValue = value;
+ RaisePropertyChanged(() => BlueProgressBarValue);
+ }
+ }
+
+ #endregion
+
+ public ImportResponseViewModel()
+ {
+ _backgroundWorker = new BackgroundWorker();
+ _backgroundWorker.WorkerReportsProgress = true;
+ _backgroundWorker.WorkerSupportsCancellation = true;
+ _backgroundWorker.DoWork += Worker_OnDoWork;
+ _backgroundWorker.ProgressChanged += Worker_OnProgressChanged;
+ _backgroundWorker.RunWorkerCompleted += Worker_OnRunWorkerCompleted;
+
+ _dataModel = new CorrelatorDataModel();
+
+ WindowLoadedCommand = new RelayCommand(delegate(Window window)
+ {
+ _window = window;
+ _window.MouseDown += delegate { _window.DragMove(); };
+ });
+
+ GoBackCommand = new RelayCommand(delegate
+ {
+ if (_dataModel.LeftDeviceDataArray == null || _dataModel.RightDeviceDataArray == null)
+ {
+ MessageBox.Show("数据还未处理完毕,请稍后", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ _window.Close();
+ });
+
+ SelectRedSensorFileCommand = new RelayCommand(delegate
+ {
+ _isRedSensor = true;
+ var fileDialog = new OpenFileDialog
+ {
+ // 设置默认格式
+ DefaultExt = ".txt",
+ Filter = "发射机数据文件(*.txt)|*.txt"
+ };
+ var result = fileDialog.ShowDialog();
+ if (result == true)
+ {
+ RedSensorFilePath = fileDialog.FileName;
+ //开始处理数据
+ _backgroundWorker.RunWorkerAsync();
+ }
+ });
+
+ SelectBlueSensorFileCommand = new RelayCommand(delegate
+ {
+ _isRedSensor = false;
+ var fileDialog = new OpenFileDialog
+ {
+ // 设置默认格式
+ DefaultExt = ".txt",
+ Filter = "发射机数据文件(*.txt)|*.txt"
+ };
+ var result = fileDialog.ShowDialog();
+ if (result == true)
+ {
+ BlueSensorFilePath = fileDialog.FileName;
+ //开始处理数据
+ _backgroundWorker.RunWorkerAsync();
+ }
+ });
+
+ WindowClosedCommand = new RelayCommand(delegate
+ {
+ Messenger.Default.Send("", MessengerToken.HomePageDeviceData);
+ });
+ }
+
+ private void Worker_OnDoWork(object sender, DoWorkEventArgs e)
+ {
+ if (_isRedSensor)
+ {
+ var dataFromFile = RedSensorFilePath.ReadFromFile();
+ var doubleArrays = dataFromFile.Select(HandleSerialPortData).ToList();
+
+ //格式化double[]
+ var totalData = new List();
+ for (var i = 0; i < doubleArrays.Count; i++)
+ {
+ totalData.AddRange(doubleArrays[i]);
+
+ var percent = (i + 1) / (float)doubleArrays.Count;
+ _backgroundWorker.ReportProgress((int)(percent * 100));
+ Thread.Sleep(10);
+ }
+
+ _dataModel.DevCode = DevCode.Dev1;
+ _dataModel.LeftReceiveDataTime = DateTime.Now;
+ _dataModel.LeftDeviceDataArray = totalData.ToArray();
+ }
+ else
+ {
+ var dataFromFile = BlueSensorFilePath.ReadFromFile();
+ var doubleArrays = dataFromFile.Select(HandleSerialPortData).ToList();
+
+ //格式化double[]
+ var totalData = new List();
+ for (var i = 0; i < doubleArrays.Count; i++)
+ {
+ totalData.AddRange(doubleArrays[i]);
+
+ var percent = (i + 1) / (float)doubleArrays.Count;
+ _backgroundWorker.ReportProgress((int)(percent * 100));
+ Thread.Sleep(10);
+ }
+
+ _dataModel.DevCode = DevCode.Dev2;
+ _dataModel.RightReceiveDataTime = DateTime.Now;
+ _dataModel.RightDeviceDataArray = totalData.ToArray();
+ }
+ }
+
+ private void Worker_OnProgressChanged(object sender, ProgressChangedEventArgs e)
+ {
+ if (_isRedSensor)
+ {
+ RedProgressBarValue = e.ProgressPercentage;
+ }
+ else
+ {
+ BlueProgressBarValue = e.ProgressPercentage;
+ }
+ }
+
+ private void Worker_OnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
+ {
+ //赋值给缓存
+ FlowStatus.CorrelatorData = _dataModel;
+ }
+
+ ///
+ /// 单条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 e711ddc..2477c72 100644
--- a/Correlator/Correlator.csproj
+++ b/Correlator/Correlator.csproj
@@ -231,6 +231,7 @@
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml b/Correlator/Dialog/ImportResponseDialog.xaml
index 01aace9..53cc5ed 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml
+++ b/Correlator/Dialog/ImportResponseDialog.xaml
@@ -4,18 +4,29 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:hc="https://handyorg.github.io/handycontrol"
+ xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Width="650"
Height="450"
AllowsTransparency="True"
Background="Transparent"
- Closed="ImportResponseDialog_OnClosed"
- Loaded="ImportResponseDialog_OnLoaded"
+ DataContext="{Binding ImportResponse, Source={StaticResource Locator}}"
ResizeMode="NoResize"
ShowInTaskbar="False"
WindowStartupLocation="CenterOwner"
WindowStyle="None"
mc:Ignorable="d">
+
+
+
+
+
+
+
+
+
+
+
-
+
+ ShowClearButton="True"
+ Text="{Binding RedSensorFilePath}" />
-
+
@@ -140,23 +151,23 @@
+ ShowClearButton="True"
+ Text="{Binding BlueSensorFilePath}" />
-
+
diff --git a/Correlator/Dialog/ImportResponseDialog.xaml.cs b/Correlator/Dialog/ImportResponseDialog.xaml.cs
index e79ea76..aa31511 100644
--- a/Correlator/Dialog/ImportResponseDialog.xaml.cs
+++ b/Correlator/Dialog/ImportResponseDialog.xaml.cs
@@ -1,13 +1,4 @@
-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;
+using System.Windows;
namespace Correlator.Dialog
{
@@ -16,165 +7,9 @@
///
public partial class ImportResponseDialog : Window
{
- private double[] _leftDataArray;
- private double[] _rightDataArray;
-
public ImportResponseDialog()
{
InitializeComponent();
-
- var dataModel = new CorrelatorDataModel();
-
- GoBackButton.Click += delegate
- {
- if (_leftDataArray == null || _rightDataArray == null)
- {
- MessageBox.Show("数据还未处理完毕,请稍后", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
-
- 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)
- {
- 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/View/HomePageProWindow.xaml b/Correlator/View/HomePageProWindow.xaml
index 86d21d0..55bfae1 100644
--- a/Correlator/View/HomePageProWindow.xaml
+++ b/Correlator/View/HomePageProWindow.xaml
@@ -400,7 +400,10 @@
VerticalAlignment="Bottom"
Source="{Binding RedTransmitterSignalIntensity, ConverterParameter=0, Converter={StaticResource SignalImageConverter}}" />
-
+
WindowLoadedCommand { get; set; }
+ public RelayCommand GoBackCommand { get; set; }
+ public RelayCommand SelectRedSensorFileCommand { get; set; }
+ public RelayCommand SelectBlueSensorFileCommand { get; set; }
+ public RelayCommand WindowClosedCommand { get; set; }
+
+ #endregion
+
+ private Window _window;
+ private bool _isRedSensor;
+ private readonly BackgroundWorker _backgroundWorker;
+ private readonly CorrelatorDataModel _dataModel;
+
+ #region VM
+
+ private string _redSensorFilePath;
+
+ public string RedSensorFilePath
+ {
+ get => _redSensorFilePath;
+ set
+ {
+ _redSensorFilePath = value;
+ RaisePropertyChanged(() => RedSensorFilePath);
+ }
+ }
+
+ private string _blueSensorFilePath;
+
+ public string BlueSensorFilePath
+ {
+ get => _blueSensorFilePath;
+ set
+ {
+ _blueSensorFilePath = value;
+ RaisePropertyChanged(() => BlueSensorFilePath);
+ }
+ }
+
+ private int _redProgressBarValue;
+
+ public int RedProgressBarValue
+ {
+ get => _redProgressBarValue;
+ set
+ {
+ _redProgressBarValue = value;
+ RaisePropertyChanged(() => RedProgressBarValue);
+ }
+ }
+
+ private int _blueProgressBarValue;
+
+ public int BlueProgressBarValue
+ {
+ get => _blueProgressBarValue;
+ set
+ {
+ _blueProgressBarValue = value;
+ RaisePropertyChanged(() => BlueProgressBarValue);
+ }
+ }
+
+ #endregion
+
+ public ImportResponseViewModel()
+ {
+ _backgroundWorker = new BackgroundWorker();
+ _backgroundWorker.WorkerReportsProgress = true;
+ _backgroundWorker.WorkerSupportsCancellation = true;
+ _backgroundWorker.DoWork += Worker_OnDoWork;
+ _backgroundWorker.ProgressChanged += Worker_OnProgressChanged;
+ _backgroundWorker.RunWorkerCompleted += Worker_OnRunWorkerCompleted;
+
+ _dataModel = new CorrelatorDataModel();
+
+ WindowLoadedCommand = new RelayCommand(delegate(Window window)
+ {
+ _window = window;
+ _window.MouseDown += delegate { _window.DragMove(); };
+ });
+
+ GoBackCommand = new RelayCommand(delegate
+ {
+ if (_dataModel.LeftDeviceDataArray == null || _dataModel.RightDeviceDataArray == null)
+ {
+ MessageBox.Show("数据还未处理完毕,请稍后", "温馨提示", MessageBoxButton.OK, MessageBoxImage.Error);
+ return;
+ }
+
+ _window.Close();
+ });
+
+ SelectRedSensorFileCommand = new RelayCommand(delegate
+ {
+ _isRedSensor = true;
+ var fileDialog = new OpenFileDialog
+ {
+ // 设置默认格式
+ DefaultExt = ".txt",
+ Filter = "发射机数据文件(*.txt)|*.txt"
+ };
+ var result = fileDialog.ShowDialog();
+ if (result == true)
+ {
+ RedSensorFilePath = fileDialog.FileName;
+ //开始处理数据
+ _backgroundWorker.RunWorkerAsync();
+ }
+ });
+
+ SelectBlueSensorFileCommand = new RelayCommand(delegate
+ {
+ _isRedSensor = false;
+ var fileDialog = new OpenFileDialog
+ {
+ // 设置默认格式
+ DefaultExt = ".txt",
+ Filter = "发射机数据文件(*.txt)|*.txt"
+ };
+ var result = fileDialog.ShowDialog();
+ if (result == true)
+ {
+ BlueSensorFilePath = fileDialog.FileName;
+ //开始处理数据
+ _backgroundWorker.RunWorkerAsync();
+ }
+ });
+
+ WindowClosedCommand = new RelayCommand(delegate
+ {
+ Messenger.Default.Send("", MessengerToken.HomePageDeviceData);
+ });
+ }
+
+ private void Worker_OnDoWork(object sender, DoWorkEventArgs e)
+ {
+ if (_isRedSensor)
+ {
+ var dataFromFile = RedSensorFilePath.ReadFromFile();
+ var doubleArrays = dataFromFile.Select(HandleSerialPortData).ToList();
+
+ //格式化double[]
+ var totalData = new List();
+ for (var i = 0; i < doubleArrays.Count; i++)
+ {
+ totalData.AddRange(doubleArrays[i]);
+
+ var percent = (i + 1) / (float)doubleArrays.Count;
+ _backgroundWorker.ReportProgress((int)(percent * 100));
+ Thread.Sleep(10);
+ }
+
+ _dataModel.DevCode = DevCode.Dev1;
+ _dataModel.LeftReceiveDataTime = DateTime.Now;
+ _dataModel.LeftDeviceDataArray = totalData.ToArray();
+ }
+ else
+ {
+ var dataFromFile = BlueSensorFilePath.ReadFromFile();
+ var doubleArrays = dataFromFile.Select(HandleSerialPortData).ToList();
+
+ //格式化double[]
+ var totalData = new List();
+ for (var i = 0; i < doubleArrays.Count; i++)
+ {
+ totalData.AddRange(doubleArrays[i]);
+
+ var percent = (i + 1) / (float)doubleArrays.Count;
+ _backgroundWorker.ReportProgress((int)(percent * 100));
+ Thread.Sleep(10);
+ }
+
+ _dataModel.DevCode = DevCode.Dev2;
+ _dataModel.RightReceiveDataTime = DateTime.Now;
+ _dataModel.RightDeviceDataArray = totalData.ToArray();
+ }
+ }
+
+ private void Worker_OnProgressChanged(object sender, ProgressChangedEventArgs e)
+ {
+ if (_isRedSensor)
+ {
+ RedProgressBarValue = e.ProgressPercentage;
+ }
+ else
+ {
+ BlueProgressBarValue = e.ProgressPercentage;
+ }
+ }
+
+ private void Worker_OnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
+ {
+ //赋值给缓存
+ FlowStatus.CorrelatorData = _dataModel;
+ }
+
+ ///
+ /// 单条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/ViewModelLocator.cs b/Correlator/ViewModel/ViewModelLocator.cs
index 0171da5..9a48833 100644
--- a/Correlator/ViewModel/ViewModelLocator.cs
+++ b/Correlator/ViewModel/ViewModelLocator.cs
@@ -48,6 +48,7 @@
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
SimpleIoc.Default.Register();
+ SimpleIoc.Default.Register();
#endregion
}
@@ -59,6 +60,7 @@
public SoundSpeedViewModel SoundSpeed => ServiceLocator.Current.GetInstance();
public AddSoundSpeedViewModel AddSoundSpeed => ServiceLocator.Current.GetInstance();
public EditSoundSpeedViewModel EditSoundSpeed => ServiceLocator.Current.GetInstance();
+ public ImportResponseViewModel ImportResponse => ServiceLocator.Current.GetInstance();
public static void Cleanup()
{