From 00c224ceff52a8a8008baa459c78bbcbbb88c523 Mon Sep 17 00:00:00 2001 From: "GukSang.Jin" Date: Tue, 19 May 2026 17:27:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B020260519?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Models/PlcConfiguration.cs | 1 + Views/SettingsWindow.xaml | 4 ++++ Views/SettingsWindow.xaml.cs | 45 +++++++++++++++++++++++++++++++++++- appsettings.json | 1 + 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/Models/PlcConfiguration.cs b/Models/PlcConfiguration.cs index ac77530..4d2455f 100644 --- a/Models/PlcConfiguration.cs +++ b/Models/PlcConfiguration.cs @@ -23,6 +23,7 @@ public ushort HardnessOver { get; set; } public ushort HardnessCompleteCoil { get; set; } public ushort HardnessPoSun { get; set; } + public ushort HardnessPressure { get; set; } // 脆碎度 public ushort FriabilityStartCoil { get; set; } public ushort FriabilityTestTime { get; set; } diff --git a/Views/SettingsWindow.xaml b/Views/SettingsWindow.xaml index e9cc271..cd4d31d 100644 --- a/Views/SettingsWindow.xaml +++ b/Views/SettingsWindow.xaml @@ -87,6 +87,10 @@ + + + + diff --git a/Views/SettingsWindow.xaml.cs b/Views/SettingsWindow.xaml.cs index cf958a8..0b51ff9 100644 --- a/Views/SettingsWindow.xaml.cs +++ b/Views/SettingsWindow.xaml.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using TabletTester2025.Models; @@ -12,6 +13,12 @@ namespace TabletTester2025 { InitializeComponent(); LoadSettings(); + Loaded += SettingsWindow_Loaded; + } + + private async void SettingsWindow_Loaded(object sender, RoutedEventArgs e) + { + await LoadHardnessPressureAsync(); } private void LoadSettings() @@ -39,7 +46,7 @@ namespace TabletTester2025 SampleTimesBox.Text = string.Join(",", p.DissolutionSampleTimes ?? Array.Empty()); } - private void SaveButton_Click(object sender, RoutedEventArgs e) + private async void SaveButton_Click(object sender, RoutedEventArgs e) { try { @@ -50,6 +57,7 @@ namespace TabletTester2025 p.HardnessMin_N = ParseFiniteDouble(HardnessMinBox.Text, "硬度内控下限"); p.HardnessMax_N = ParseFiniteDouble(HardnessMaxBox.Text, "硬度内控上限"); p.HardnessTestCount = int.Parse(HardnessCountBox.Text); + double hardnessPressure = ParseFiniteDouble(HardnessPressureBox.Text, "加压压力"); p.FriabilityTargetRpm = ParseFiniteDouble(FriabilityRpmBox.Text, "脆碎度转速"); p.FriabilityTargetTimeMin = ParseFiniteDouble(FriabilityTimeBox.Text, "脆碎度试验时间"); p.FriabilityTargetRounds = CalculateFriabilityRounds(p.FriabilityTargetTimeMin, p.FriabilityTargetRpm); @@ -70,6 +78,7 @@ namespace TabletTester2025 .ToArray(); ValidateParameters(p); + await WriteHardnessPressureAsync(hardnessPressure); App.CurrentPharmaParams = p; App.SaveCurrentPharmaParameters(); @@ -169,10 +178,44 @@ namespace TabletTester2025 { if (!double.TryParse(text, out double value) || !double.IsFinite(value)) throw new InvalidOperationException($"{fieldName}必须为有效数字。"); + if (value < 0) + throw new InvalidOperationException($"{fieldName}不能小于0。"); return value; } + private async Task LoadHardnessPressureAsync() + { + ushort registerAddress = ResolveHardnessPressureRegister(); + if (registerAddress == 0) + return; + + try + { + float value = await App.PlcService.ReadFloatAsync(registerAddress); + if (float.IsFinite(value)) + HardnessPressureBox.Text = value.ToString("0.###"); + } + catch + { + HardnessPressureBox.Text = ""; + } + } + + private static async Task WriteHardnessPressureAsync(double value) + { + ushort registerAddress = ResolveHardnessPressureRegister(); + if (registerAddress == 0) + throw new InvalidOperationException("加压压力PLC寄存器地址未配置。"); + + await App.PlcService.WriteFloatAsync(registerAddress, (float)value); + } + + private static ushort ResolveHardnessPressureRegister() + { + return App.PlcConfig.HardnessPressure != 0 ? App.PlcConfig.HardnessPressure : (ushort)1480; + } + private static double ResolveFriabilityTargetTimeMin(PharmaParameters p) { if (p.FriabilityTargetTimeMin > 0) diff --git a/appsettings.json b/appsettings.json index 4cbf562..f1e4f7a 100644 --- a/appsettings.json +++ b/appsettings.json @@ -21,6 +21,7 @@ "HardnessSudu": 300, // 硬度速度输入mm/min "HardnessWeiyi": 310, // 硬度位移输入mm/min "HardnessPoSun": 400, // 硬度破损判定输入N + "HardnessPressure": 1480, // 加压压力 "HardnessMax": 72, //最大力采集 "HardnessShishilizhi": 1314, //力显示