From 574004da1ee50afdcbb909f92b7eede7eb85e438 Mon Sep 17 00:00:00 2001 From: QuanDT Date: Mon, 2 Feb 2026 08:38:48 +0000 Subject: [PATCH] Update SickBlazorApp/Components/Pages/Sick.razor --- SickBlazorApp/Components/Pages/Sick.razor | 34 +++++++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/SickBlazorApp/Components/Pages/Sick.razor b/SickBlazorApp/Components/Pages/Sick.razor index 8464f3d..5221743 100644 --- a/SickBlazorApp/Components/Pages/Sick.razor +++ b/SickBlazorApp/Components/Pages/Sick.razor @@ -201,15 +201,37 @@ private async Task OnApplyNodeIdClicked() { - if (!_inputNodeId.HasValue) - return; + if (!_inputNodeId.HasValue) return; - byte newNodeId = (byte)_inputNodeId.Value; - byte oldNodeId = CanService.CurrentNodeId; + _applying = true; // Sử dụng flag để disable các nút khác + StateHasChanged(); - await CanService.ApplyNodeIdAsync(oldNodeId, newNodeId); + try + { + byte newNodeId = (byte)_inputNodeId.Value; + byte oldNodeId = CanService.CurrentNodeId; - _inputNodeId = null; // reset input + // 1. Gửi lệnh đổi ID qua CAN bus + await CanService.ApplyNodeIdAsync(oldNodeId, newNodeId); + + // 2. DỪNG SERVICE NGAY LẬP TỨC + // Điều này ngăn việc nhận frame từ ID cũ + CanService.Stop(); + + // 3. Reset UI state + _frames.Clear(); + _nodeState = CanNodeState.PreOperational; + _inputNodeId = null; + } + catch (Exception ex) + { + // Log lỗi nếu cần + } + finally + { + _applying = false; + StateHasChanged(); + } } private async Task OnStartClicked()