软件包名可配
This commit is contained in:
		| @@ -1,9 +1,9 @@ | ||||
| use std::fmt::Display; | ||||
| use crate::download_wrapper::DownloadError::JlinkNotFindError; | ||||
| use std::fmt::Display; | ||||
| use std::fs; | ||||
| use std::io::Write; | ||||
| use std::path::PathBuf; | ||||
| use std::process::Command; | ||||
| use std::io::Write; | ||||
|  | ||||
| pub struct DownloadWrapper { | ||||
|     commander_path: PathBuf, | ||||
| @@ -44,13 +44,27 @@ pub enum DownloadError { | ||||
|  | ||||
| impl Default for DownloadWrapper { | ||||
|     fn default() -> Self { | ||||
|         let config_str = fs::read_to_string("config.json").unwrap(); | ||||
|         let config: serde_json::Value = serde_json::from_str(&config_str).unwrap(); | ||||
|         let bootloader_name = config["bootloader_name"] | ||||
|             .as_str() | ||||
|             .unwrap_or("RAWM00-2-0-0_silicon-wisun_bootloader_D20241008.s37") | ||||
|             .to_string(); | ||||
|         let app_name = config["app_name"] | ||||
|             .as_str() | ||||
|             .unwrap_or("RAWM00-2-0-0_silicon-combine-V1-D20241230-BZ.hex") | ||||
|             .to_string(); | ||||
|         let rail_name = config["rail_name"] | ||||
|             .as_str() | ||||
|             .unwrap_or("rail_soc_railtest_sisdk(silabs).hex") | ||||
|             .to_string(); | ||||
|         Self { | ||||
|             commander_path: PathBuf::from(std::env::current_dir().unwrap()) | ||||
|                 .join("commander/Simplicity Commander/commander.exe"), | ||||
|             bin_path: PathBuf::from(std::env::current_dir().unwrap()).join("bin/"), | ||||
|             bootloader_name: String::from("RAWM00-2-0-0_silicon-wisun_bootloader_D20241008.s37"), | ||||
|             app_name: String::from("RAWM00-2-0-0_silicon-combine-V1-D20241230-BZ.hex"), | ||||
|             rail_name: String::from("rail_soc_railtest_sisdk(silabs).hex"), | ||||
|             bootloader_name, | ||||
|             app_name, | ||||
|             rail_name | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -134,26 +148,28 @@ impl DownloadWrapper { | ||||
|             .collect::<Vec<&&str>>() | ||||
|             .is_empty() | ||||
|             || result | ||||
|             .iter() | ||||
|             .filter(|&&str| str.trim().contains("successfully")) | ||||
|             .collect::<Vec<&&str>>() | ||||
|             .is_empty() | ||||
|                 .iter() | ||||
|                 .filter(|&&str| str.trim().contains("successfully")) | ||||
|                 .collect::<Vec<&&str>>() | ||||
|                 .is_empty() | ||||
|         { | ||||
|             Err(DownloadError::EraseError) | ||||
|         } else { | ||||
|             let Some(label) = label else { return Err(DownloadError::NoLabel) }; | ||||
|             let Some(label) = label else { | ||||
|                 return Err(DownloadError::NoLabel); | ||||
|             }; | ||||
|             match self.save_log(label, result_str.clone()) { | ||||
|                 Ok(_) => { | ||||
|                     Ok(result_str) | ||||
|                 } | ||||
|                 Err(_) => { | ||||
|                     Err(DownloadError::DownloadBootloaderError) | ||||
|                 } | ||||
|                 Ok(_) => Ok(result_str), | ||||
|                 Err(_) => Err(DownloadError::DownloadBootloaderError), | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     pub fn download(&self, download_type: DownloadType, label: Option<String>) -> Result<String, DownloadError> { | ||||
|     pub fn download( | ||||
|         &self, | ||||
|         download_type: DownloadType, | ||||
|         label: Option<String>, | ||||
|     ) -> Result<String, DownloadError> { | ||||
|         let mut binding: PathBuf; | ||||
|         match download_type { | ||||
|             DownloadType::Bootloader => { | ||||
| @@ -185,26 +201,24 @@ impl DownloadWrapper { | ||||
|             .collect::<Vec<&&str>>() | ||||
|             .is_empty() | ||||
|             || result | ||||
|             .iter() | ||||
|             .filter(|&&str| str.trim().contains("successfully")) | ||||
|             .collect::<Vec<&&str>>() | ||||
|             .is_empty() | ||||
|                 .iter() | ||||
|                 .filter(|&&str| str.trim().contains("successfully")) | ||||
|                 .collect::<Vec<&&str>>() | ||||
|                 .is_empty() | ||||
|         { | ||||
|             Err(DownloadError::DownloadBootloaderError) | ||||
|         } else { | ||||
|             let Some(label) = label else { return Err(DownloadError::NoLabel) }; | ||||
|             let Some(label) = label else { | ||||
|                 return Err(DownloadError::NoLabel); | ||||
|             }; | ||||
|             match self.save_log(label, result_str.clone()) { | ||||
|                 Ok(_) => { | ||||
|                     Ok(result_str) | ||||
|                 } | ||||
|                 Err(_) => { | ||||
|                     Err(DownloadError::DownloadBootloaderError) | ||||
|                 } | ||||
|                 Ok(_) => Ok(result_str), | ||||
|                 Err(_) => Err(DownloadError::DownloadBootloaderError), | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fn save_log(& self, label: String, log: String) -> Result<bool, DownloadError> { | ||||
|     fn save_log(&self, label: String, log: String) -> Result<bool, DownloadError> { | ||||
|         if !fs::exists("./log").unwrap() { | ||||
|             fs::create_dir("./log").expect("Cant Create Log Folder"); | ||||
|         } | ||||
| @@ -213,66 +227,66 @@ impl DownloadWrapper { | ||||
|             .append(true) | ||||
|             .open(format!("./log/{label}.txt")) | ||||
|             .expect("file not found"); | ||||
|         writeln!(file, "{}",log).expect("write failed"); | ||||
|         writeln!(file, "{}", log).expect("write failed"); | ||||
|         Ok(true) | ||||
|     } | ||||
| } | ||||
|  | ||||
| #[cfg(test)] | ||||
|         mod test { | ||||
|             use crate::download_wrapper::DownloadType; | ||||
|             use crate::download_wrapper::DownloadWrapper; | ||||
| mod test { | ||||
|     use crate::download_wrapper::DownloadType; | ||||
|     use crate::download_wrapper::DownloadWrapper; | ||||
|  | ||||
|             #[test] | ||||
|             fn test_download_wrapper() { | ||||
|                 let dw = DownloadWrapper::new(); | ||||
|                 println!("{:?}", dw.commander_path); | ||||
|                 println!("{:?}", dw.bin_path); | ||||
|                 println!("{:?}", dw.bootloader_name); | ||||
|                 println!("{:?}", dw.app_name); | ||||
|                 println!("{:?}", dw.rail_name); | ||||
|             } | ||||
|     #[test] | ||||
|     fn test_download_wrapper() { | ||||
|         let dw = DownloadWrapper::new(); | ||||
|         println!("{:?}", dw.commander_path); | ||||
|         println!("{:?}", dw.bin_path); | ||||
|         println!("{:?}", dw.bootloader_name); | ||||
|         println!("{:?}", dw.app_name); | ||||
|         println!("{:?}", dw.rail_name); | ||||
|     } | ||||
|  | ||||
|             #[test] | ||||
|             fn test_check_jlink() { | ||||
|                 let dw = DownloadWrapper::new(); | ||||
|                 let result = dw.check_jlink(); | ||||
|                 assert_eq!(result.is_ok(), true); | ||||
|                 println!("ids:{:?}", result.unwrap()); | ||||
|             } | ||||
|     #[test] | ||||
|     fn test_check_jlink() { | ||||
|         let dw = DownloadWrapper::new(); | ||||
|         let result = dw.check_jlink(); | ||||
|         assert_eq!(result.is_ok(), true); | ||||
|         println!("ids:{:?}", result.unwrap()); | ||||
|     } | ||||
|  | ||||
|             #[test] | ||||
|             fn test_check_device() { | ||||
|                 let dw = DownloadWrapper::new(); | ||||
|                 let result = dw.check_device(); | ||||
|                 assert_eq!(result.is_ok(), true); | ||||
|             } | ||||
|     #[test] | ||||
|     fn test_check_device() { | ||||
|         let dw = DownloadWrapper::new(); | ||||
|         let result = dw.check_device(); | ||||
|         assert_eq!(result.is_ok(), true); | ||||
|     } | ||||
|  | ||||
|             #[test] | ||||
|             fn test_erase_device() { | ||||
|                 let dw = DownloadWrapper::new(); | ||||
|                 let result = dw.erase(Some("111".to_string())); | ||||
|                 assert_eq!(result.is_ok(), true); | ||||
|             } | ||||
|     #[test] | ||||
|     fn test_erase_device() { | ||||
|         let dw = DownloadWrapper::new(); | ||||
|         let result = dw.erase(Some("111".to_string())); | ||||
|         assert_eq!(result.is_ok(), true); | ||||
|     } | ||||
|  | ||||
|             #[test] | ||||
|             fn test_download_bootloader() { | ||||
|                 let dw = DownloadWrapper::new(); | ||||
|                 let result = dw.download(DownloadType::Bootloader, Some("111".to_string())); | ||||
|                 assert_eq!(result.is_ok(), true); | ||||
|             } | ||||
|     #[test] | ||||
|     fn test_download_bootloader() { | ||||
|         let dw = DownloadWrapper::new(); | ||||
|         let result = dw.download(DownloadType::Bootloader, Some("111".to_string())); | ||||
|         assert_eq!(result.is_ok(), true); | ||||
|     } | ||||
|  | ||||
|             #[test] | ||||
|             fn test_download_app() { | ||||
|                 let dw = DownloadWrapper::new(); | ||||
|                 let result = dw.download(DownloadType::App, Some("111".to_string())); | ||||
|                 assert_eq!(result.is_ok(), true); | ||||
|             } | ||||
|     #[test] | ||||
|     fn test_download_app() { | ||||
|         let dw = DownloadWrapper::new(); | ||||
|         let result = dw.download(DownloadType::App, Some("111".to_string())); | ||||
|         assert_eq!(result.is_ok(), true); | ||||
|     } | ||||
|  | ||||
|             #[test] | ||||
|             fn test_download_rail() { | ||||
|                 let dw = DownloadWrapper::new(); | ||||
|                 let result = dw.download(DownloadType::Rail, Some("111".to_string())); | ||||
|                 assert_eq!(result.is_ok(), true); | ||||
|             } | ||||
|         } | ||||
|     #[test] | ||||
|     fn test_download_rail() { | ||||
|         let dw = DownloadWrapper::new(); | ||||
|         let result = dw.download(DownloadType::Rail, Some("111".to_string())); | ||||
|         assert_eq!(result.is_ok(), true); | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										22
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								src/main.rs
									
									
									
									
									
								
							| @@ -324,17 +324,17 @@ impl MainWindow { | ||||
|                     } | ||||
|                 } | ||||
|                 add_log("连接成功".to_string()); | ||||
|                 match mes_service.get_order_number(mes_config.work_order.clone()){ | ||||
|                     Ok(batch) => { | ||||
|                         label = batch + &label[label.len() - 6..]; | ||||
|                         add_log("获取订单号成功".to_string()); | ||||
|                     }, | ||||
|                     Err(e) =>{ | ||||
|                         add_log(e.to_string()); | ||||
|                         sender.send(Message::DownloadEnd((label, false))).unwrap(); | ||||
|                         return; | ||||
|                     } | ||||
|                 } | ||||
|                 // match mes_service.get_order_number(mes_config.work_order.clone()){ | ||||
|                 //     Ok(batch) => { | ||||
|                 //         label = batch + &label[label.len() - 6..]; | ||||
|                 //         add_log("获取订单号成功".to_string()); | ||||
|                 //     }, | ||||
|                 //     Err(e) =>{ | ||||
|                 //         add_log(e.to_string()); | ||||
|                 //         sender.send(Message::DownloadEnd((label, false))).unwrap(); | ||||
|                 //         return; | ||||
|                 //     } | ||||
|                 // } | ||||
|                 add_log("正在过站检测".to_string()); | ||||
|                 let check_result = mes_service.check_station( | ||||
|                     mes_config.work_order.clone(), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user