|
|
|
@ -18,75 +18,14 @@ using SkiaSharp; |
|
|
|
using LiveChartsCore.Defaults; |
|
|
|
using static System.Net.WebRequestMethods; |
|
|
|
using System.Collections.ObjectModel; |
|
|
|
using DyeingComputer.Properties; |
|
|
|
using LiveChartsCore.Measure; |
|
|
|
using LiveChartsCore.Motion; |
|
|
|
|
|
|
|
namespace DyeingComputer.ViewModel |
|
|
|
{ |
|
|
|
public partial class CurveDiagramViewModel : ObservableObject//ViewModelBase
|
|
|
|
{ |
|
|
|
/* public ISeries[] Series { get; set; } = |
|
|
|
{ |
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.Temperature +"1", |
|
|
|
Values = new DateTimePoint[] |
|
|
|
{ |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-01 09:08:00"), 24), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-02 09:08:00"), 57), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-03 09:08:00"), 67), |
|
|
|
}, |
|
|
|
Stroke = new SolidColorPaint(s_blue, 2), |
|
|
|
GeometrySize = 2, |
|
|
|
GeometryStroke = new SolidColorPaint(s_blue, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 0, |
|
|
|
}, |
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.Temperature +"2", |
|
|
|
Values = new DateTimePoint[] |
|
|
|
{ |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-01 09:08:00"), 424), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-02 09:08:00"), 57), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-03 09:08:00"), 647), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-04 09:08:00"), 532), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-05 09:08:00"), 57), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-06 09:08:00"), 287), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-07 09:08:00"), 57), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-8 09:08:00"), 17), |
|
|
|
}, |
|
|
|
Fill = null, |
|
|
|
Stroke = new SolidColorPaint(s_blue, 2), |
|
|
|
GeometrySize = 2, |
|
|
|
GeometryStroke = new SolidColorPaint(s_blue, 2), |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 0, |
|
|
|
}, |
|
|
|
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.WaterLevel, |
|
|
|
Values = new DateTimePoint[] |
|
|
|
{ |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-01 09:08:00"), 4), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-02 09:08:00"), 57), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-03 09:08:00"), 647), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-04 09:08:00"), 5732), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-05 09:08:00"), 5457), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-06 09:08:00"), 2257), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-07 09:08:00"), 57), |
|
|
|
new DateTimePoint(Convert.ToDateTime( "2024-01-8 09:08:00"), 517), |
|
|
|
}, |
|
|
|
|
|
|
|
Fill = null, |
|
|
|
Stroke = new SolidColorPaint(s_red, 2), |
|
|
|
GeometrySize = 2, |
|
|
|
GeometryStroke = new SolidColorPaint(s_red, 2), |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 1, |
|
|
|
|
|
|
|
} |
|
|
|
};*/ |
|
|
|
public ISeries[] Series { get; set; } |
|
|
|
//x轴时间格式
|
|
|
|
public Axis[] XAxes { get; set; } = |
|
|
|
@ -100,11 +39,21 @@ namespace DyeingComputer.ViewModel |
|
|
|
}; |
|
|
|
//颜色
|
|
|
|
private static readonly SKColor s_blue = new SKColor(25, 118, 210); |
|
|
|
private static readonly SKColor s_blue_0 = new SKColor(25, 18, 210); |
|
|
|
private static readonly SKColor s_blue_1 = new SKColor(25, 118, 170); |
|
|
|
private static readonly SKColor s_blue_2 = new SKColor(25, 118, 130); |
|
|
|
private static readonly SKColor s_blue_3 = new SKColor(25, 118, 90); |
|
|
|
private static readonly SKColor s_blue_4 = new SKColor(25, 118, 50); |
|
|
|
private static readonly SKColor s_red = new SKColor(229, 57, 53); |
|
|
|
private static readonly SKColor s_red_1 = new SKColor(189, 57, 53); |
|
|
|
private static readonly SKColor s_red_2 = new SKColor(149, 57, 53); |
|
|
|
private static readonly SKColor s_red_3 = new SKColor(109, 57, 53); |
|
|
|
private static readonly SKColor s_yellow = new SKColor(198, 167, 0); |
|
|
|
public ICartesianAxis[] YAxes { get; set; } ={ |
|
|
|
new Axis //y在此轴上缩放
|
|
|
|
{ |
|
|
|
MinLimit =0, |
|
|
|
MaxLimit =150, |
|
|
|
Name = Properties.Resources.Temperature +" ( °C )", |
|
|
|
NameTextSize = 24, |
|
|
|
NamePaint = new SolidColorPaint(s_blue), |
|
|
|
@ -115,11 +64,13 @@ namespace DyeingComputer.ViewModel |
|
|
|
TicksPaint = new SolidColorPaint(s_blue), |
|
|
|
SubticksPaint = new SolidColorPaint(s_blue), |
|
|
|
DrawTicksPath = true, |
|
|
|
CrosshairSnapEnabled = true |
|
|
|
CrosshairSnapEnabled = true, |
|
|
|
Position = LiveChartsCore.Measure.AxisPosition.Start |
|
|
|
},//温度轴
|
|
|
|
new Axis // the "hundreds" series will be scaled on this axis
|
|
|
|
{ |
|
|
|
Name = Properties.Resources.Flowmeter +" ( L )", |
|
|
|
MinLimit =0, |
|
|
|
Name = Properties.Resources.WaterLevel +" ( L )", |
|
|
|
NameTextSize = 24, |
|
|
|
NamePaint = new SolidColorPaint(s_red), |
|
|
|
NamePadding = new LiveChartsCore.Drawing.Padding(0, 20), |
|
|
|
@ -129,15 +80,42 @@ namespace DyeingComputer.ViewModel |
|
|
|
TicksPaint = new SolidColorPaint(s_red), |
|
|
|
SubticksPaint = new SolidColorPaint(s_red), |
|
|
|
DrawTicksPath = true, |
|
|
|
ShowSeparatorLines = false, |
|
|
|
CrosshairSnapEnabled = true, |
|
|
|
Position = LiveChartsCore.Measure.AxisPosition.End |
|
|
|
}, //液位轴
|
|
|
|
new Axis //
|
|
|
|
{ |
|
|
|
MinLimit =0, |
|
|
|
MaxLimit =14, |
|
|
|
Name = "PH ( pH )", |
|
|
|
NameTextSize = 16, |
|
|
|
NamePaint = new SolidColorPaint(s_yellow), |
|
|
|
NamePadding = new LiveChartsCore.Drawing.Padding(0, 20), |
|
|
|
Padding = new LiveChartsCore.Drawing.Padding(20, 0, 0, 0), |
|
|
|
TextSize = 16, |
|
|
|
LabelsPaint = new SolidColorPaint(s_yellow), |
|
|
|
TicksPaint = new SolidColorPaint(s_yellow), |
|
|
|
SubticksPaint = new SolidColorPaint(s_yellow), |
|
|
|
DrawTicksPath = true, |
|
|
|
CrosshairSnapEnabled = true, |
|
|
|
Position = LiveChartsCore.Measure.AxisPosition.End |
|
|
|
}, //PH轴
|
|
|
|
|
|
|
|
//new AnimatableAxisBounds
|
|
|
|
}; |
|
|
|
|
|
|
|
private readonly Random _r = new Random(); |
|
|
|
private readonly ObservableCollection<DateTimePoint> _values; |
|
|
|
private DateTimePoint _current; |
|
|
|
private readonly ObservableCollection<DateTimePoint> MTT_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> MTL_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> MTH_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> MST_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> MUT_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> STTA_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> STLA_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> STTB_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> STLB_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> STTC_values; |
|
|
|
private readonly ObservableCollection<DateTimePoint> STLC_values; |
|
|
|
|
|
|
|
private SQLiteHelper SQLiteHelpers = null; //定义数据库
|
|
|
|
private readonly string ChartAdress = Environment.CurrentDirectory + "\\DataBase\\Chart.db"; //数据库路径
|
|
|
|
@ -151,38 +129,190 @@ namespace DyeingComputer.ViewModel |
|
|
|
SQLiteHelpers = new SQLiteHelper(ChartAdress); //数据库连接路径
|
|
|
|
SQLiteHelpers.Open(); //打开数据库
|
|
|
|
CDB = SQLiteHelpers.ExecuteDataSet("select * from Chart where DYELOT = '" + MainWindowViewModel.WorkNumder + "'order by Time", null).Tables[0]; |
|
|
|
CDB = SQLiteHelpers.ExecuteDataSet("select * from Chart order by Time", null).Tables[0]; |
|
|
|
SQLiteHelpers.Close(); |
|
|
|
CDB_Count = CDB.Rows.Count; |
|
|
|
|
|
|
|
var items = new List<DateTimePoint>(); |
|
|
|
var MTT_items = new List<DateTimePoint>(); |
|
|
|
var MTL_items = new List<DateTimePoint>(); |
|
|
|
var MTH_items = new List<DateTimePoint>(); |
|
|
|
var MST_items = new List<DateTimePoint>(); |
|
|
|
var MUT_items = new List<DateTimePoint>(); |
|
|
|
var STTA_items = new List<DateTimePoint>(); |
|
|
|
var STLA_items = new List<DateTimePoint>(); |
|
|
|
var STTB_items = new List<DateTimePoint>(); |
|
|
|
var STLB_items = new List<DateTimePoint>(); |
|
|
|
var STTC_items = new List<DateTimePoint>(); |
|
|
|
var STLC_items = new List<DateTimePoint>(); |
|
|
|
for (var i = 0; i < CDB_Count; i++) |
|
|
|
{ |
|
|
|
// _current += _r.Next(-9, 10);
|
|
|
|
// CDB.Rows[i].Field<string>("varchar")
|
|
|
|
items.Add(new DateTimePoint(Convert.ToDateTime(CDB.Rows[i].Field<string>("Time")), CDB.Rows[i].Field<double>("MTT"))); |
|
|
|
DateTime TIME = Convert.ToDateTime(CDB.Rows[i].Field<string>("Time")); |
|
|
|
MTT_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MTT"))); |
|
|
|
MTL_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MTL"))); |
|
|
|
MTH_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MTH"))); |
|
|
|
MST_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MST"))); |
|
|
|
MUT_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("MUT"))); |
|
|
|
if (MainWindowViewModel.SM01 == 1) |
|
|
|
{ |
|
|
|
STTA_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTA"))); |
|
|
|
STLA_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLA"))); |
|
|
|
} |
|
|
|
if (MainWindowViewModel.SM02 == 1) |
|
|
|
{ |
|
|
|
STTB_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTB"))); |
|
|
|
STLB_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLB"))); |
|
|
|
} |
|
|
|
if (MainWindowViewModel.SM03 == 1) |
|
|
|
{ |
|
|
|
STTC_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STTC"))); |
|
|
|
STLC_items.Add(new DateTimePoint(TIME, CDB.Rows[i].Field<double>("STLC"))); |
|
|
|
} |
|
|
|
} |
|
|
|
_values = new ObservableCollection<DateTimePoint>(items); |
|
|
|
|
|
|
|
MTT_values = new ObservableCollection<DateTimePoint>(MTT_items); |
|
|
|
MTL_values = new ObservableCollection<DateTimePoint>(MTL_items); |
|
|
|
MTH_values = new ObservableCollection<DateTimePoint>(MTH_items); |
|
|
|
MST_values = new ObservableCollection<DateTimePoint>(MST_items); |
|
|
|
MUT_values = new ObservableCollection<DateTimePoint>(MUT_items); |
|
|
|
if (MainWindowViewModel.SM01 == 1) |
|
|
|
{ |
|
|
|
STTA_values = new ObservableCollection<DateTimePoint>(STTA_items); |
|
|
|
STLA_values = new ObservableCollection<DateTimePoint>(STLA_items); |
|
|
|
} |
|
|
|
if (MainWindowViewModel.SM02 == 1) |
|
|
|
{ |
|
|
|
STTB_values = new ObservableCollection<DateTimePoint>(STTB_items); |
|
|
|
STLB_values = new ObservableCollection<DateTimePoint>(STLB_items); |
|
|
|
} |
|
|
|
if (MainWindowViewModel.SM03 == 1) |
|
|
|
{ |
|
|
|
STTC_values = new ObservableCollection<DateTimePoint>(STTC_items); |
|
|
|
STLC_values = new ObservableCollection<DateTimePoint>(STLC_items); |
|
|
|
} |
|
|
|
Series = new ISeries[] |
|
|
|
{ |
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.Temperature +"1", |
|
|
|
Values = _values, |
|
|
|
Name = Properties.Resources.MasterCylinder +"PH", |
|
|
|
Values = MTH_values, |
|
|
|
Stroke = new SolidColorPaint(s_yellow, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_yellow, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 2, |
|
|
|
}, //PH
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Resources.Target + Resources.Temperature, |
|
|
|
Values = MST_values, |
|
|
|
Stroke = new SolidColorPaint(s_blue_0, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_blue_0, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 0, |
|
|
|
}, //目标温度
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.Temperature +"1("+Properties.Resources.MasterCylinder+")", |
|
|
|
Values = MTT_values, |
|
|
|
Stroke = new SolidColorPaint(s_blue, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_blue, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 0, |
|
|
|
}, |
|
|
|
|
|
|
|
}, //主缸
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.Temperature +"2("+Properties.Resources.MasterCylinder+Properties.Resources.Bottom+")", |
|
|
|
Values = MUT_values, |
|
|
|
Stroke = new SolidColorPaint(s_blue_4, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_blue_4, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 0, |
|
|
|
}, //缸底
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.Temperature +"3("+Resources.Medicine + Resources.Tank +"1)", |
|
|
|
Values = STTA_values, |
|
|
|
Stroke = new SolidColorPaint(s_blue_1, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_blue_1, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 0, |
|
|
|
}, //附缸1
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.Temperature +"4("+Resources.Medicine + Resources.Tank +"2)", |
|
|
|
Values = STTB_values, |
|
|
|
Stroke = new SolidColorPaint(s_blue_2, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_blue_2, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 0, |
|
|
|
}, //附缸2
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.Temperature +"5("+Resources.Medicine + Resources.Tank +"3)", |
|
|
|
Values = STTC_values, |
|
|
|
Stroke = new SolidColorPaint(s_blue_3, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_blue_3, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 0, |
|
|
|
}, //附缸3
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.WaterLevel +"("+Properties.Resources.MasterCylinder+")", |
|
|
|
Values = MTL_values, |
|
|
|
Stroke = new SolidColorPaint(s_red, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_red, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 1, |
|
|
|
}, //主缸液位
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.WaterLevel +"("+Resources.Medicine + Resources.Tank +"1)", |
|
|
|
Values = STLA_values, |
|
|
|
Stroke = new SolidColorPaint(s_red_1, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_red_1, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 1, |
|
|
|
}, //附缸1液位
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.WaterLevel +"("+Resources.Medicine + Resources.Tank +"2)", |
|
|
|
Values = STLB_values, |
|
|
|
Stroke = new SolidColorPaint(s_red_2, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_red_2, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 1, |
|
|
|
}, //附缸2液位
|
|
|
|
new LineSeries<DateTimePoint> |
|
|
|
{ |
|
|
|
Name = Properties.Resources.WaterLevel +"("+Resources.Medicine + Resources.Tank +"3)", |
|
|
|
Values = STLC_values, |
|
|
|
Stroke = new SolidColorPaint(s_red_3, 2), |
|
|
|
GeometrySize = 0, |
|
|
|
GeometryStroke = new SolidColorPaint(s_red_3, 2), |
|
|
|
Fill = null, |
|
|
|
LineSmoothness = 0, |
|
|
|
ScalesYAt = 1, |
|
|
|
}, //附缸3 液位
|
|
|
|
}; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|