From 4a37a3a402ac9e7e03a44d0304ce06cf88e85e97 Mon Sep 17 00:00:00 2001 From: xyy <544939200@qq.com> Date: Thu, 16 Apr 2026 13:09:01 +0800 Subject: [PATCH] --- ViewModels/MainViewModel.cs | 34 +++++++++++++++++++++++++++++++++ Views/PoreDistributionView.xaml | 4 ++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/ViewModels/MainViewModel.cs b/ViewModels/MainViewModel.cs index 71814b5..da2aa47 100644 --- a/ViewModels/MainViewModel.cs +++ b/ViewModels/MainViewModel.cs @@ -78,6 +78,9 @@ namespace MembranePoreTester.ViewModels if (SetProperty(ref _selectedPressureMode, value)) { Task.Run(async () => await WritePressureModeAsync(value?.Text ?? "低压")); + + // 切换模式后调整加压上限 + AdjustPressureLimitForMode(); } } } @@ -544,6 +547,37 @@ namespace MembranePoreTester.ViewModels + // 在 StationItem 类中添加以下方法 + private void AdjustPressureLimitForMode() + { + bool isLowPressure = (SelectedPressureMode?.Text == "低压"); + double currentLimit = _pressureUpperLimit; + double newLimit = currentLimit; + + if (isLowPressure && currentLimit > 200) + newLimit = 200; + else if (!isLowPressure && currentLimit > 1000) + newLimit = 1000; + else + return; + + // 直接修改字段,避免触发 setter 中的校验和重复写 PLC + _pressureUpperLimit = newLimit; + OnPropertyChanged(nameof(PressureUpperLimit)); + + // 写回 PLC + ushort address = StationId == 1 ? _plcConfig.PressureUpperLimit + : StationId == 2 ? _plcConfig.PressureUpperLimit2 + : _plcConfig.PressureUpperLimit3; + _ = _plcService.WriteMultipleRegistersAsync(address, (float)newLimit); + } + + + + + + + } diff --git a/Views/PoreDistributionView.xaml b/Views/PoreDistributionView.xaml index 919e17d..9b11f93 100644 --- a/Views/PoreDistributionView.xaml +++ b/Views/PoreDistributionView.xaml @@ -212,7 +212,7 @@ CanUserAddRows="False" ColumnWidth="*"> - -