曲线图优化

This commit is contained in:
GukSang.Jin
2026-02-04 15:38:42 +08:00
parent 32de88764c
commit e52782f16e

View File

@@ -9,13 +9,15 @@ namespace 全自动水压检测仪
{ {
/// <summary> /// <summary>
/// 图表管理器 - 负责实时曲线图的创建和数据更新 /// 图表管理器 - 负责实时曲线图的创建和数据更新
/// 第一Y轴实时压力地址3130
/// 第二Y轴压力设定值地址2400对应"压力设置(PSI)"
/// </summary> /// </summary>
public class ChartManager public class ChartManager
{ {
private ElementHost _chartHost; private ElementHost _chartHost;
private LiveCharts.Wpf.CartesianChart _chart; private LiveCharts.Wpf.CartesianChart _chart;
private ChartValues<double> _pressureValues; private ChartValues<double> _pressureValues; // 实时压力值地址3130
private ChartValues<double> _temperatureValues; private ChartValues<double> _pressureSetValues; // 压力设定值地址2400
private ChartValues<string> _timeLabels; private ChartValues<string> _timeLabels;
private const int MAX_DATA_POINTS = 60; // 最多显示60个数据点 private const int MAX_DATA_POINTS = 60; // 最多显示60个数据点
@@ -31,8 +33,8 @@ namespace 全自动水压检测仪
targetPanel.Text = null; targetPanel.Text = null;
// 初始化数据集合 // 初始化数据集合
_pressureValues = new ChartValues<double>(); _pressureValues = new ChartValues<double>(); // 实时压力
_temperatureValues = new ChartValues<double>(); _pressureSetValues = new ChartValues<double>(); // 压力设定值
_timeLabels = new ChartValues<string>(); _timeLabels = new ChartValues<string>();
// 创建WPF图表控件 // 创建WPF图表控件
@@ -94,11 +96,11 @@ namespace 全自动水压检测仪
ScalesYAt = 0 ScalesYAt = 0
}); });
// 添加压力设定值曲线 // 添加压力设定值曲线来自地址2400对应"压力设置(PSI)"
_chart.Series.Add(new LineSeries _chart.Series.Add(new LineSeries
{ {
Title = "压力设定值", Title = "压力设定值",
Values = _temperatureValues, Values = _pressureSetValues,
Stroke = System.Windows.Media.Brushes.Red, Stroke = System.Windows.Media.Brushes.Red,
Fill = System.Windows.Media.Brushes.Transparent, Fill = System.Windows.Media.Brushes.Transparent,
PointGeometry = DefaultGeometries.Diamond, PointGeometry = DefaultGeometries.Diamond,
@@ -123,11 +125,11 @@ namespace 全自动水压检测仪
/// 添加新的数据点 /// 添加新的数据点
/// </summary> /// </summary>
/// <param name="pressure">实时压力值</param> /// <param name="pressure">实时压力值</param>
/// <param name="temperature">压力设定值</param> /// <param name="pressureSetValue">压力设定值(来自"压力设置(PSI)"地址2400</param>
/// <param name="time">时间标签(可选,默认使用当前时间)</param> /// <param name="time">时间标签(可选,默认使用当前时间)</param>
public void AddDataPoint(double pressure, double temperature, string time = null) public void AddDataPoint(double pressure, double pressureSetValue, string time = null)
{ {
if (_pressureValues == null || _temperatureValues == null || _timeLabels == null) if (_pressureValues == null || _pressureSetValues == null || _timeLabels == null)
return; return;
// 使用当前时间作为默认标签 // 使用当前时间作为默认标签
@@ -136,14 +138,14 @@ namespace 全自动水压检测仪
// 添加数据点 // 添加数据点
_pressureValues.Add(pressure); _pressureValues.Add(pressure);
_temperatureValues.Add(temperature); _pressureSetValues.Add(pressureSetValue);
_timeLabels.Add(time); _timeLabels.Add(time);
// 限制数据点数量,保持图表流畅 // 限制数据点数量,保持图表流畅
if (_pressureValues.Count > MAX_DATA_POINTS) if (_pressureValues.Count > MAX_DATA_POINTS)
{ {
_pressureValues.RemoveAt(0); _pressureValues.RemoveAt(0);
_temperatureValues.RemoveAt(0); _pressureSetValues.RemoveAt(0);
_timeLabels.RemoveAt(0); _timeLabels.RemoveAt(0);
} }
} }
@@ -154,7 +156,7 @@ namespace 全自动水压检测仪
public void ClearData() public void ClearData()
{ {
_pressureValues?.Clear(); _pressureValues?.Clear();
_temperatureValues?.Clear(); _pressureSetValues?.Clear();
_timeLabels?.Clear(); _timeLabels?.Clear();
} }
@@ -189,7 +191,7 @@ namespace 全自动水压检测仪
_chartHost?.Dispose(); _chartHost?.Dispose();
_chart = null; _chart = null;
_pressureValues = null; _pressureValues = null;
_temperatureValues = null; _pressureSetValues = null;
_timeLabels = null; _timeLabels = null;
} }
} }