diff --git a/Correlator.sln.DotSettings.user b/Correlator.sln.DotSettings.user index 15da52d..f74df5c 100644 --- a/Correlator.sln.DotSettings.user +++ b/Correlator.sln.DotSettings.user @@ -7,4 +7,5 @@ <Assembly Path="D:\Code\Rider Projects\相关仪\测试版\correlator\packages\log4net.2.0.15\lib\net45\log4net.dll" /> </AssemblyExplorer> True + True True \ No newline at end of file diff --git a/Correlator.sln.DotSettings.user b/Correlator.sln.DotSettings.user index 15da52d..f74df5c 100644 --- a/Correlator.sln.DotSettings.user +++ b/Correlator.sln.DotSettings.user @@ -7,4 +7,5 @@ <Assembly Path="D:\Code\Rider Projects\相关仪\测试版\correlator\packages\log4net.2.0.15\lib\net45\log4net.dll" /> </AssemblyExplorer> True + True True \ No newline at end of file diff --git a/Correlator/Util/MessengerToken.cs b/Correlator/Util/MessengerToken.cs index 18cfcb5..ce6dbda 100644 --- a/Correlator/Util/MessengerToken.cs +++ b/Correlator/Util/MessengerToken.cs @@ -71,6 +71,9 @@ //选频重新计算 public const string ReStartCalculate = "202212090104"; + //渲染相关系数关系图 + public const string RenderOscillogram = "202301130101"; + public const string ClearOscillogram = "202301150101"; #endregion } } \ No newline at end of file diff --git a/Correlator.sln.DotSettings.user b/Correlator.sln.DotSettings.user index 15da52d..f74df5c 100644 --- a/Correlator.sln.DotSettings.user +++ b/Correlator.sln.DotSettings.user @@ -7,4 +7,5 @@ <Assembly Path="D:\Code\Rider Projects\相关仪\测试版\correlator\packages\log4net.2.0.15\lib\net45\log4net.dll" /> </AssemblyExplorer> True + True True \ No newline at end of file diff --git a/Correlator/Util/MessengerToken.cs b/Correlator/Util/MessengerToken.cs index 18cfcb5..ce6dbda 100644 --- a/Correlator/Util/MessengerToken.cs +++ b/Correlator/Util/MessengerToken.cs @@ -71,6 +71,9 @@ //选频重新计算 public const string ReStartCalculate = "202212090104"; + //渲染相关系数关系图 + public const string RenderOscillogram = "202301130101"; + public const string ClearOscillogram = "202301150101"; #endregion } } \ No newline at end of file diff --git a/Correlator/View/HomePageWindow.xaml b/Correlator/View/HomePageWindow.xaml index ca21565..8d35134 100644 --- a/Correlator/View/HomePageWindow.xaml +++ b/Correlator/View/HomePageWindow.xaml @@ -4,8 +4,6 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:converter="clr-namespace:Correlator.Converter" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:gd="clr-namespace:LiveCharts.Geared;assembly=LiveCharts.Geared" - xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="相关仪" d:DesignHeight="768" @@ -87,23 +85,20 @@ - + + - - + @@ -132,25 +127,10 @@ - - - - - - - - - - - - - - - + @@ -161,7 +141,10 @@ VerticalAlignment="Bottom" /> - + @@ -181,7 +164,10 @@ - + diff --git a/Correlator.sln.DotSettings.user b/Correlator.sln.DotSettings.user index 15da52d..f74df5c 100644 --- a/Correlator.sln.DotSettings.user +++ b/Correlator.sln.DotSettings.user @@ -7,4 +7,5 @@ <Assembly Path="D:\Code\Rider Projects\相关仪\测试版\correlator\packages\log4net.2.0.15\lib\net45\log4net.dll" /> </AssemblyExplorer> True + True True \ No newline at end of file diff --git a/Correlator/Util/MessengerToken.cs b/Correlator/Util/MessengerToken.cs index 18cfcb5..ce6dbda 100644 --- a/Correlator/Util/MessengerToken.cs +++ b/Correlator/Util/MessengerToken.cs @@ -71,6 +71,9 @@ //选频重新计算 public const string ReStartCalculate = "202212090104"; + //渲染相关系数关系图 + public const string RenderOscillogram = "202301130101"; + public const string ClearOscillogram = "202301150101"; #endregion } } \ No newline at end of file diff --git a/Correlator/View/HomePageWindow.xaml b/Correlator/View/HomePageWindow.xaml index ca21565..8d35134 100644 --- a/Correlator/View/HomePageWindow.xaml +++ b/Correlator/View/HomePageWindow.xaml @@ -4,8 +4,6 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:converter="clr-namespace:Correlator.Converter" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:gd="clr-namespace:LiveCharts.Geared;assembly=LiveCharts.Geared" - xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="相关仪" d:DesignHeight="768" @@ -87,23 +85,20 @@ - + + - - + @@ -132,25 +127,10 @@ - - - - - - - - - - - - - - - + @@ -161,7 +141,10 @@ VerticalAlignment="Bottom" /> - + @@ -181,7 +164,10 @@ - + diff --git a/Correlator/View/HomePageWindow.xaml.cs b/Correlator/View/HomePageWindow.xaml.cs index 77d0163..45b032a 100644 --- a/Correlator/View/HomePageWindow.xaml.cs +++ b/Correlator/View/HomePageWindow.xaml.cs @@ -1,8 +1,14 @@ -using System.Windows; +using System; +using System.Windows; using System.Windows.Media; using System.Windows.Shapes; using Correlator.Util; using GalaSoft.MvvmLight.Messaging; +using MathWorks.MATLAB.NET.Arrays; +using ScottPlot; +using ScottPlot.Plottable; +using Color = System.Drawing.Color; +using HorizontalAlignment = System.Windows.HorizontalAlignment; namespace Correlator.View { @@ -12,6 +18,34 @@ { InitializeComponent(); + //渲染数据波形图 + Messenger.Default.Register(this, MessengerToken.RenderOscillogram, array => + { + LogWithConsole.WriteLine("开始渲染波形图", "HomePageWindow"); + //柱状图横坐标集合 + var xDoubles = GetArray((MWNumericArray)array[5]); + //柱状图纵坐标集合 + var yDoubles = GetArray((MWNumericArray)array[4]); + Application.Current.Dispatcher.Invoke(delegate + { + //点如果较少,可以直接AddBar,但是超过一千个点,不能直接AddBar,否则Bar颜色会被边框覆盖从而呈现黑色 + ScottplotView.Plot.Add(new BarPlot(DataGen.Consecutive(xDoubles.Length), yDoubles, null, null) + { + FillColor = Color.FromArgb(255, 49, 151, 36), + BorderColor = Color.FromArgb(255, 49, 151, 36), + BorderLineWidth = 0.1f + }); + ScottplotView.Refresh(); + }); + }); + + Messenger.Default.Register(this, MessengerToken.ClearOscillogram, s => + { + LogWithConsole.WriteLine("清空波形图", "HomePageWindow"); + ScottplotView.Plot.Clear(); + ScottplotView.Refresh(); + }); + Messenger.Default.Register(this, MessengerToken.CloseHomePageWindow, s => { Close(); }); //频段过滤 @@ -152,7 +186,7 @@ private void Window_Loaded(object sender, RoutedEventArgs e) { - var colorBrush = new SolidColorBrush(Color.FromArgb(255, 84, 84, 84)); + var colorBrush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 84, 84, 84)); const int strokeThickness = 1; //水平线 var horizontalLine = new Line @@ -198,5 +232,17 @@ HorizontalLineGrid.Children.Add(shorterScale); } } + + private static double[] GetArray(MWNumericArray inputMw) + { + var num = inputMw.NumberOfElements; + var outArray = new double[num]; + for (var i = 0; i < num; i++) + { + outArray[i] = Convert.ToDouble(inputMw[i + 1].ToString()); + } + + return outArray; + } } } \ No newline at end of file diff --git a/Correlator.sln.DotSettings.user b/Correlator.sln.DotSettings.user index 15da52d..f74df5c 100644 --- a/Correlator.sln.DotSettings.user +++ b/Correlator.sln.DotSettings.user @@ -7,4 +7,5 @@ <Assembly Path="D:\Code\Rider Projects\相关仪\测试版\correlator\packages\log4net.2.0.15\lib\net45\log4net.dll" /> </AssemblyExplorer> True + True True \ No newline at end of file diff --git a/Correlator/Util/MessengerToken.cs b/Correlator/Util/MessengerToken.cs index 18cfcb5..ce6dbda 100644 --- a/Correlator/Util/MessengerToken.cs +++ b/Correlator/Util/MessengerToken.cs @@ -71,6 +71,9 @@ //选频重新计算 public const string ReStartCalculate = "202212090104"; + //渲染相关系数关系图 + public const string RenderOscillogram = "202301130101"; + public const string ClearOscillogram = "202301150101"; #endregion } } \ No newline at end of file diff --git a/Correlator/View/HomePageWindow.xaml b/Correlator/View/HomePageWindow.xaml index ca21565..8d35134 100644 --- a/Correlator/View/HomePageWindow.xaml +++ b/Correlator/View/HomePageWindow.xaml @@ -4,8 +4,6 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:converter="clr-namespace:Correlator.Converter" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:gd="clr-namespace:LiveCharts.Geared;assembly=LiveCharts.Geared" - xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="相关仪" d:DesignHeight="768" @@ -87,23 +85,20 @@ - + + - - + @@ -132,25 +127,10 @@ - - - - - - - - - - - - - - - + @@ -161,7 +141,10 @@ VerticalAlignment="Bottom" /> - + @@ -181,7 +164,10 @@ - + diff --git a/Correlator/View/HomePageWindow.xaml.cs b/Correlator/View/HomePageWindow.xaml.cs index 77d0163..45b032a 100644 --- a/Correlator/View/HomePageWindow.xaml.cs +++ b/Correlator/View/HomePageWindow.xaml.cs @@ -1,8 +1,14 @@ -using System.Windows; +using System; +using System.Windows; using System.Windows.Media; using System.Windows.Shapes; using Correlator.Util; using GalaSoft.MvvmLight.Messaging; +using MathWorks.MATLAB.NET.Arrays; +using ScottPlot; +using ScottPlot.Plottable; +using Color = System.Drawing.Color; +using HorizontalAlignment = System.Windows.HorizontalAlignment; namespace Correlator.View { @@ -12,6 +18,34 @@ { InitializeComponent(); + //渲染数据波形图 + Messenger.Default.Register(this, MessengerToken.RenderOscillogram, array => + { + LogWithConsole.WriteLine("开始渲染波形图", "HomePageWindow"); + //柱状图横坐标集合 + var xDoubles = GetArray((MWNumericArray)array[5]); + //柱状图纵坐标集合 + var yDoubles = GetArray((MWNumericArray)array[4]); + Application.Current.Dispatcher.Invoke(delegate + { + //点如果较少,可以直接AddBar,但是超过一千个点,不能直接AddBar,否则Bar颜色会被边框覆盖从而呈现黑色 + ScottplotView.Plot.Add(new BarPlot(DataGen.Consecutive(xDoubles.Length), yDoubles, null, null) + { + FillColor = Color.FromArgb(255, 49, 151, 36), + BorderColor = Color.FromArgb(255, 49, 151, 36), + BorderLineWidth = 0.1f + }); + ScottplotView.Refresh(); + }); + }); + + Messenger.Default.Register(this, MessengerToken.ClearOscillogram, s => + { + LogWithConsole.WriteLine("清空波形图", "HomePageWindow"); + ScottplotView.Plot.Clear(); + ScottplotView.Refresh(); + }); + Messenger.Default.Register(this, MessengerToken.CloseHomePageWindow, s => { Close(); }); //频段过滤 @@ -152,7 +186,7 @@ private void Window_Loaded(object sender, RoutedEventArgs e) { - var colorBrush = new SolidColorBrush(Color.FromArgb(255, 84, 84, 84)); + var colorBrush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 84, 84, 84)); const int strokeThickness = 1; //水平线 var horizontalLine = new Line @@ -198,5 +232,17 @@ HorizontalLineGrid.Children.Add(shorterScale); } } + + private static double[] GetArray(MWNumericArray inputMw) + { + var num = inputMw.NumberOfElements; + var outArray = new double[num]; + for (var i = 0; i < num; i++) + { + outArray[i] = Convert.ToDouble(inputMw[i + 1].ToString()); + } + + return outArray; + } } } \ No newline at end of file diff --git a/Correlator/ViewModel/HomePageViewModel.cs b/Correlator/ViewModel/HomePageViewModel.cs index 9ae0e0d..03939ff 100644 --- a/Correlator/ViewModel/HomePageViewModel.cs +++ b/Correlator/ViewModel/HomePageViewModel.cs @@ -16,8 +16,6 @@ using GalaSoft.MvvmLight.Command; using GalaSoft.MvvmLight.Messaging; using HandyControl.Controls; -using LiveCharts.Defaults; -using LiveCharts.Geared; using MathWorks.MATLAB.NET.Arrays; using Newtonsoft.Json; using MessageBox = HandyControl.Controls.MessageBox; @@ -310,21 +308,6 @@ } } - /// - /// Chart点数据 - /// - private GearedValues _columnValues; - - public GearedValues ColumnValues - { - get => _columnValues; - set - { - _columnValues = value; - RaisePropertyChanged(() => ColumnValues); - } - } - #endregion #region ButtonIsEnabled @@ -861,10 +844,10 @@ SoundSpeed = "0"; NoiseValue = "未设置"; PassTime = "0"; - //复位时将波形图数据清空 - ColumnValues?.Clear(); _runningSeconds = 0; _runningTimer.Stop(); + //清空波形图 + Messenger.Default.Send("", MessengerToken.ClearOscillogram); } /// @@ -903,6 +886,39 @@ SenderClass.SendCorrelatorWakeUpCmd(SerialPortManager.Instance.SerialPort); Thread.Sleep(10 * 1000); } + + //TODO 测试数据 + // var dataModel = new CorrelatorDataModel + // { + // LeftDeviceDataArray = new double[3750], + // RightDeviceDataArray = new double[3750] + // }; + // using (var streamReader = new StreamReader(new FileStream( + // @"C:\Users\Administrator\Desktop\LeftData.txt", FileMode.Open, FileAccess.Read)) + // ) + // { + // var data = streamReader.ReadToEnd(); + // var dataArray = data.Split(new[] { "\r\n" }, StringSplitOptions.None); + // for (var i = 0; i < dataArray.Length; i++) + // { + // dataModel.LeftDeviceDataArray[i] = double.Parse(dataArray[i]); + // } + // } + // + // using (var streamReader = new StreamReader(new FileStream( + // @"C:\Users\Administrator\Desktop\RightData.txt", FileMode.Open, FileAccess.Read)) + // ) + // { + // var data = streamReader.ReadToEnd(); + // var dataArray = data.Split(new[] { "\r\n" }, StringSplitOptions.None); + // for (var i = 0; i < dataArray.Length; i++) + // { + // dataModel.RightDeviceDataArray[i] = double.Parse(dataArray[i]); + // } + // } + // + // Thread.Sleep(3 * 1000); + // Messenger.Default.Send(dataModel, MessengerToken.HomePageDeviceData); } /// @@ -941,23 +957,8 @@ // SpeedDistance = timeDiff; // SpeedValue = timeDiff.ToString(CultureInfo.InvariantCulture) + "ms"; - //柱状图纵坐标集合 - var yDoubles = GetArray((MWNumericArray)array[4]); - //柱状图横坐标集合 - var xDoubles = GetArray((MWNumericArray)array[5]); - //绑定柱状图 - ColumnValues = new GearedValues(); - var count = xDoubles.Length; - for (var i = 0; i < count; i++) - { - ColumnValues.Add(new ObservablePoint - { - X = xDoubles[i], - Y = yDoubles[i] - }); - } - - ColumnValues.WithQuality(Quality.Medium); + //将数据发送到HomePageWindow.xaml.cs页面进行渲染 + Messenger.Default.Send(array, MessengerToken.RenderOscillogram); var maxFreLowOut = Convert.ToInt32(array[6].ToString()); //低频 var maxFreHighOut = Convert.ToInt32(array[7].ToString()); //高频 @@ -973,17 +974,5 @@ FlowStatus.CanGetSignal = true; return true; } - - private static double[] GetArray(MWNumericArray inputMw) - { - var num = inputMw.NumberOfElements; - var outArray = new double[num]; - for (var i = 0; i < num; i++) - { - outArray[i] = Convert.ToDouble(inputMw[i + 1].ToString()); - } - - return outArray; - } } } \ No newline at end of file