From 1ba778ac3b33b944507ec4ca6a08aafcb9480068 Mon Sep 17 00:00:00 2001 From: zqm Date: Mon, 13 Apr 2026 14:08:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=8F=B7=EF=BC=8C10=E7=A7=92=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Windows/CS/Framework4.0/Updater/src/main.rs | 37 ++++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/Windows/CS/Framework4.0/Updater/src/main.rs b/Windows/CS/Framework4.0/Updater/src/main.rs index b6726e8..31df944 100644 --- a/Windows/CS/Framework4.0/Updater/src/main.rs +++ b/Windows/CS/Framework4.0/Updater/src/main.rs @@ -1915,15 +1915,34 @@ async fn run_updater(debug_mode: bool) -> bool { let ts = chrono::Local::now().format("%Y-%m-%d %H:%M:%S%.3f"); log_print!("{} [重连] 重置状态,从头开始执行流程", ts); - if !device_number.is_empty() && device_number != "UNKNOWN" { - // 阶段1:只请求 BootLoader.exe - log_print!("{} [阶段1] 检查 BootLoader...", ts); - let msg_str = format!( - r#"{{"Type":"GetFileVer","Data":{{"DeviceNumber":"{}","file_list":["BootLoader.exe"]}}}}"#, - device_number - ); - log_print!("{} 发送消息:{}", ts, msg_str); - sender.send(msg_str); + // 等待 device_number 生效(无次数限制,每10秒重试一次) + let wait_seconds = 10; + let mut current_device = device_number.clone(); + let mut attempt = 0; + + log_print!("{} [调试] 初始 DeviceNumber: '{}'", ts, current_device); + + loop { + if !current_device.is_empty() && current_device != "UNKNOWN" { + // 阶段1:只请求 BootLoader.exe + log_print!("{} [阶段1] 检查 BootLoader (DeviceNumber: '{}')...", ts, current_device); + let msg_str = format!( + r#"{{"Type":"GetFileVer","Data":{{"DeviceNumber":"{}","file_list":["BootLoader.exe"]}}}}"#, + current_device + ); + log_print!("{} 发送消息:{}", ts, msg_str); + sender.send(msg_str); + log_print!("{} [调试] GetFileVer 消息已发送", ts); + break; + } + + attempt += 1; + log_print!("{} [警告] DeviceNumber 为空或 UNKNOWN (尝试 {}),等待 {} 秒后重试...", + ts, attempt, wait_seconds); + std::thread::sleep(std::time::Duration::from_secs(wait_seconds)); + // 重新读取配置文件(可能刚被写入) + current_device = resolve_device_number(); + log_print!("{} [调试] 重新读取 DeviceNumber: '{}'", ts, current_device); } }