diff --git a/CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs b/CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs index 789762f..c9bf85d 100644 --- a/CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs +++ b/CSI-H238M/CSI-H238M/ViewModels/ViewModel.cs @@ -639,6 +639,40 @@ namespace COFTester.ViewModels { System.Diagnostics.Debug.WriteLine($"[ViewModel] 读取M31状态失败: {ex.Message}"); } + + // 连接成功后读取设置页的4个测试参数默认值 + try + { + System.Diagnostics.Debug.WriteLine("[ViewModel] 开始读取设置页4个测试参数默认值..."); + var deviceParams = await modbusService.ReadManualControlParametersAsync(); + + if (deviceParams != null) + { + // 只更新设置页显示的4个测试参数 + Parameters.HorizontalTestSpeed = deviceParams.HorizontalTestSpeed; + Parameters.HorizontalTestDisplacement = deviceParams.HorizontalTestDisplacement; + Parameters.VerticalTestSpeed = deviceParams.VerticalTestSpeed; + Parameters.VerticalTestDisplacement = deviceParams.VerticalTestDisplacement; + + // 通知UI更新 + OnPropertyChanged(nameof(Parameters)); + + System.Diagnostics.Debug.WriteLine($"[ViewModel] 设置页参数读取成功:"); + System.Diagnostics.Debug.WriteLine($" 水平测试速度: {deviceParams.HorizontalTestSpeed} mm/min"); + System.Diagnostics.Debug.WriteLine($" 水平测试位移: {deviceParams.HorizontalTestDisplacement} mm"); + System.Diagnostics.Debug.WriteLine($" 升降测试速度: {deviceParams.VerticalTestSpeed} mm/min"); + System.Diagnostics.Debug.WriteLine($" 升降测试位移: {deviceParams.VerticalTestDisplacement} mm"); + } + else + { + System.Diagnostics.Debug.WriteLine("[ViewModel] 读取设置页参数失败,保持默认值"); + } + } + catch (Exception ex) + { + System.Diagnostics.Debug.WriteLine($"[ViewModel] 读取设置页参数异常: {ex.Message}"); + // 读取失败不影响连接,继续使用默认值 + } } } else @@ -733,11 +767,9 @@ namespace COFTester.ViewModels OnPropertyChanged(nameof(DataPointsCount)); LatestResult = null; - // 更新测试状态和按钮文本 - IsTesting = true; - TestButtonText = Lang.TestInProgress; // 按钮显示"测试中" - UpdateCanStartTest(); // 更新按钮可用性 - StatusMessage = $"开始测试 - {_selectedDirection}方向"; + // 先显示"正在启动测试..."状态,但不设置 IsTesting = true + // 只有在确认 M31=1 后才设置 IsTesting = true + StatusMessage = "正在启动测试..."; UpdateScottPlot(); // M30 复归型按钮,M31 状态标记位(1=测试中,0=停止) @@ -762,19 +794,20 @@ namespace COFTester.ViewModels { if (isTestRunning) { + // 测试真正启动,更新状态 _m31Status = true; // 更新M31状态 - System.Diagnostics.Debug.WriteLine("[ViewModel] M31 = 1,测试已启动"); + IsTesting = true; // 只有在确认测试启动后才设置为 true + TestButtonText = Lang.TestInProgress; // 按钮显示"测试中" + UpdateCanStartTest(); // 更新按钮可用性 StatusMessage = "测试已启动"; + System.Diagnostics.Debug.WriteLine("[ViewModel] M31 = 1,测试已启动,IsTesting = true"); } else { + // 测试未启动,保持原状态 _m31Status = false; // 更新M31状态 - System.Diagnostics.Debug.WriteLine("[ViewModel] M31 = 0,测试未启动"); StatusMessage = "测试启动失败,请检查设备"; - // 启动失败时恢复按钮状态 - IsTesting = false; - TestButtonText = Lang.StartTest; - UpdateCanStartTest(); // 更新按钮可用性 + System.Diagnostics.Debug.WriteLine("[ViewModel] M31 = 0,测试未启动"); } }); } @@ -783,11 +816,8 @@ namespace COFTester.ViewModels Application.Current?.Dispatcher.InvokeAsync(() => { StatusMessage = $"启动测试失败: {ex.Message}"; - // 启动失败时恢复按钮状态 - IsTesting = false; - TestButtonText = Lang.StartTest; _m31Status = false; - UpdateCanStartTest(); // 更新按钮可用性 + System.Diagnostics.Debug.WriteLine($"[ViewModel] 启动测试异常: {ex.Message}"); }); } });