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); } }