From ce62b19960b50c97efdc10923c45ff40c9674774 Mon Sep 17 00:00:00 2001 From: "GukSang.Jin" Date: Tue, 19 May 2026 21:11:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Views/SettingsWindow.xaml.cs | 70 ++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/Views/SettingsWindow.xaml.cs b/Views/SettingsWindow.xaml.cs index 1a8a500..debf601 100644 --- a/Views/SettingsWindow.xaml.cs +++ b/Views/SettingsWindow.xaml.cs @@ -20,6 +20,18 @@ namespace TabletTester2025 { await LoadHardnessPressureAsync(); await LoadHardnessDamageThresholdAsync(); + + // 脆碎度 + await LoadPlcIntToTextBoxAsync(ResolveFriabilityRoundsRegister(), FriabilityRoundsBox); + + // 崩解 + await LoadPlcFloatToTextBoxAsync(ResolveDisintegrationSpeedRegister(), DisintegrationSpeedBox); + + // 溶出度 + await LoadPlcIntToTextBoxAsync(ResolveDissolution1TimeRegister(), Dissolution1TimeBox); + await LoadPlcIntToTextBoxAsync(ResolveDissolution2TimeRegister(), Dissolution2TimeBox); + await LoadPlcIntToTextBoxAsync(ResolveDissolution1IntervalRegister(), Dissolution1IntervalBox); + await LoadPlcIntToTextBoxAsync(ResolveDissolution2IntervalRegister(), Dissolution2IntervalBox); } private void LoadSettings() @@ -239,6 +251,64 @@ namespace TabletTester2025 return App.PlcConfig.HardnessPoSun != 0 ? App.PlcConfig.HardnessPoSun : (ushort)400; } + private async Task LoadPlcFloatToTextBoxAsync(ushort address, TextBox textBox) + { + if (address == 0) return; + try + { + float value = await App.PlcService.ReadFloatAsync(address); + if (float.IsFinite(value)) + textBox.Text = value.ToString("0.###"); + } + catch { textBox.Text = ""; } + } + + private async Task LoadPlcIntToTextBoxAsync(ushort address, TextBox textBox) + { + if (address == 0) return; + try + { + int value = await App.PlcService.ReadIntAsync(address); + if (value >= 0) + textBox.Text = value.ToString(); + } + catch { textBox.Text = ""; } + } + + private static ushort ResolveFriabilityRoundsRegister() + { + if (App.PlcConfig.FriabilityRounds != 0) + return App.PlcConfig.FriabilityRounds; + if (App.PlcConfig.FriabilityRoundsBox != 0) + return App.PlcConfig.FriabilityRoundsBox; + return App.PlcConfig.FriabilityTestTime != 0 ? App.PlcConfig.FriabilityTestTime : (ushort)410; + } + + private static ushort ResolveDisintegrationSpeedRegister() + { + return App.PlcConfig.DisintegrationSpeed != 0 ? App.PlcConfig.DisintegrationSpeed : (ushort)330; + } + + private static ushort ResolveDissolution1TimeRegister() + { + return App.PlcConfig.Dissolution1Time != 0 ? App.PlcConfig.Dissolution1Time : (ushort)430; + } + + private static ushort ResolveDissolution2TimeRegister() + { + return App.PlcConfig.Dissolution2Time != 0 ? App.PlcConfig.Dissolution2Time : (ushort)440; + } + + private static ushort ResolveDissolution1IntervalRegister() + { + return App.PlcConfig.Dissolution1SampleInterval != 0 ? App.PlcConfig.Dissolution1SampleInterval : (ushort)432; + } + + private static ushort ResolveDissolution2IntervalRegister() + { + return App.PlcConfig.Dissolution2SampleInterval != 0 ? App.PlcConfig.Dissolution2SampleInterval : (ushort)442; + } + private static double ResolveFriabilityTargetTimeMin(PharmaParameters p) { if (p.FriabilityTargetTimeMin > 0)