diff --git a/.gitignore b/.gitignore index bd75c69..adfa7d5 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,8 @@ dist-ssr /myis11/project/is3/cmake-build-release-visual-studio/ /myis11/project/is11/cmake-build-release-visual-studio/ /myis11/project/is11/cmake-build-release-visual-studio/ +/myis11/project/is3/cmake-build-release-visual-studio/ +/myis11/project/is3/cmake-build-debug-visual-studio/ +/myis11/project/is11/cmake-build-release-visual-studio/ +/myis11/project/is11/cmake-build-release-visual-studio-2022/ +/myis11/project/is3/cmake-build-release-visual-studio/ diff --git a/src-tauri/config.json b/src-tauri/config.json index a830e05..7f433fe 100644 --- a/src-tauri/config.json +++ b/src-tauri/config.json @@ -1 +1 @@ -{"pathofsave":null,"Filename":"testaa","caijiavgNumber":"1","useSG":false,"usehighpass":false,"Dispatcher":{"isenable":true,"begin":"09:28","end":"23:59"},"sensor_typeforset":"IS11"} \ No newline at end of file +{"pathofsave":null,"Filename":"testaa","caijiavgNumber":"1","useSG":false,"usehighpass":false,"Dispatcher":{"isenable":true,"begin":"09:28","end":"23:59"},"sensor_typeforset":"IS3"} \ No newline at end of file diff --git a/src-tauri/src/irisdatamanager/mod.rs b/src-tauri/src/irisdatamanager/mod.rs index 0805713..a20d14e 100644 --- a/src-tauri/src/irisdatamanager/mod.rs +++ b/src-tauri/src/irisdatamanager/mod.rs @@ -186,4 +186,80 @@ let filesavepath=filesave_date.clone()+".iris"; "ok".to_string() +} + +pub fn save_reflectance_to_iris(reflectance_data: serde_json::Value, devinfo: serde_json::Value, filepath: String) -> String { + let mut oneirisdata: OneIRISData = OneIRISData::new(); + let mut spectraldata_reflectance: SpectralData = SpectralData::new(); + + let fileName = reflectance_data["fileName"].as_str().unwrap_or("Unknown").to_string(); + //将filename中的.替换为_ 并保存到新的变量里 + let fileName1 = fileName.replace(".", "_"); + spectraldata_reflectance.name = fileName1+&devinfo["name"].as_str().unwrap_or("Unknown").to_string() ; + spectraldata_reflectance.sensor_id = devinfo["sensor_id"].as_str().unwrap_or("Unknown").to_string() ; + // + &devinfo["serialnumber"].as_str().unwrap_or("Unknown").to_string(); + + let reflectance_values: Vec = reflectance_data["data"] + .as_array() + .unwrap_or(&vec![]) + .iter() + .map(|x| x.as_f64().unwrap_or(0.0)) + .collect::>(); + + spectraldata_reflectance.bands = reflectance_values.len() as u16; + spectraldata_reflectance.pixel_size = 8; + spectraldata_reflectance.data_type = DATA_TYPE_FLOAT64; + spectraldata_reflectance.fiber_id = 0; + spectraldata_reflectance.exposure = 0.0; + spectraldata_reflectance.gain = 0.0; + + let datenow = chrono::Local::now(); + let nowtime = TimeStruct { + time_zone: 50, + year: datenow.year() as u16, + month: datenow.month() as u8, + day: datenow.day() as u8, + hour: datenow.hour() as u8, + minute: datenow.minute() as u8, + second: datenow.second() as u8, + millisecond: datenow.timestamp_subsec_millis() as u16, + }; + spectraldata_reflectance.collection_time = nowtime.clone(); + spectraldata_reflectance.ground_type = Target_Spectral_Type_FlatRef; + spectraldata_reflectance.valid_flag = 1; + + spectraldata_reflectance.Set_Spectral_Data(reflectance_values, DATA_TYPE_FLOAT64); + oneirisdata.spectral_data_section.push(spectraldata_reflectance); + + let spectraldata_devinfo = json!({ + "info_type": "devinfo", + "sensor_id": devinfo["sensor_id"].as_str().unwrap_or("Unknown").to_string(), + "wave_coeff": { + "a1": devinfo["bochangxishu"]["a0"].as_f64().unwrap_or(0.0), + "a2": devinfo["bochangxishu"]["a1"].as_f64().unwrap_or(0.0), + "a3": devinfo["bochangxishu"]["a2"].as_f64().unwrap_or(0.0), + "a4": devinfo["bochangxishu"]["a3"].as_f64().unwrap_or(0.0) + } + }); + println!("spectraldata_devinfo: {:?}", spectraldata_devinfo); + + let environment_info = json!({ + "info_type": "environment", + "date": format!("{}-{:02}-{:02} {:02}:{:02}:{:02}", + datenow.year(), + datenow.month(), + datenow.day(), + datenow.hour(), + datenow.minute(), + datenow.second() + ) + }); + + oneirisdata.spectral_info_section.push(spectraldata_devinfo); + oneirisdata.spectral_info_section.push(environment_info); + + match wirte_iris_data(&oneirisdata, &filepath) { + Ok(_) => "ok".to_string(), + Err(e) => format!("保存失败: {}", e) + } } \ No newline at end of file diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 8a2d993..946fa3e 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -215,6 +215,11 @@ fn delete_file_by_path(filepath: String) -> String { } +#[tauri::command] +fn save_reflectance_to_iris(reflectance_data: serde_json::Value, devinfo: serde_json::Value, filepath: String) -> String { + irisdatamanager::save_reflectance_to_iris(reflectance_data, devinfo, filepath) +} + //////////////////////////////////////////////////////////////////////////////////////// // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command @@ -248,7 +253,8 @@ fn main() { algorithm::interpolate_spline_at_points, algorithm::find_peek, algorithm::compute_weave_coeff, - getoneirisfile + getoneirisfile, + save_reflectance_to_iris ]) .setup(|app| { diff --git a/src-tauri/src/serport/serport.rs b/src-tauri/src/serport/serport.rs index 31cf821..2060756 100644 --- a/src-tauri/src/serport/serport.rs +++ b/src-tauri/src/serport/serport.rs @@ -246,10 +246,10 @@ pub fn readforport()->Vec{ if port_info.port_name == "NON" { return "Port is not set".as_bytes().to_vec(); } - let mut buf: Vec = vec![0; 1000]; + let mut buf: Vec = vec![0; 5000]; match &mut port_info.port { Some(p) => { - p.set_timeout(Duration::from_millis(100)).unwrap(); + p.set_timeout(Duration::from_millis(10)).unwrap(); let sizeread =match p.read(&mut buf){ Ok(size)=>{size}, Err(_e)=>{0} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index f8ea312..936f182 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -10,7 +10,7 @@ "package": { "productName": "SpectralPlot", - "version": "0.6.66" + "version": "0.6.81" }, "tauri": { diff --git a/src-tauri/updatelog.md b/src-tauri/updatelog.md index ccdb3e7..bb2827b 100644 --- a/src-tauri/updatelog.md +++ b/src-tauri/updatelog.md @@ -18,3 +18,4 @@ * **v0.6.62** 修正了保存逻辑,并修复了波长倒置的问题。 * **v0.6.65** 增加了HH3定标功能。 * **v0.6.66** 增加了HH3波长定标所需的波长参数,并将寻峰最小值调整为3000。 +* **v0.6.81** 解决了is3控制时偶尔会卡顿的问题 diff --git a/src/components/SiderleftSerilportMethod.js b/src/components/SiderleftSerilportMethod.js index 1d0a9a3..cbfead3 100644 --- a/src/components/SiderleftSerilportMethod.js +++ b/src/components/SiderleftSerilportMethod.js @@ -193,6 +193,7 @@ export default { btn.disabled = true; this.buttoncolor.opencombutton="success"; EventBus.emit('showbox',{title:"设备",body:"打开串口成功"}); + this.$globalState.isDevOpen=true; }else { btn.disabled = false; @@ -211,6 +212,8 @@ export default { btnn.disabled = true; alert(await invoke("closecome")); this.SerialInfo.isopen=false; + this.$globalState.isDevOpen=false; + }, diff --git a/src/main.js b/src/main.js index c0bf67c..2e1028e 100644 --- a/src/main.js +++ b/src/main.js @@ -24,7 +24,7 @@ import { import KonamiCode from "vue3-konami-code"; import EventBus from "./eventBus.js"; import tauriApi from "./utils/tauriApi.js"; - +import { reactive } from 'vue'; async function setWindowSize() { // const primaryMonitor = await screen.primaryMonitor(); // const screenSize = primaryMonitor.size; @@ -61,5 +61,13 @@ app.component("Draggable", Draggable); // 注册全局 API app.config.globalProperties.$tauriApi = tauriApi; +// 创建响应式全局状态 +const globalState = reactive({ + isDevOpen: false, + // 其他全局状态 +}); +//设置全局变量 +app.config.globalProperties.$globalState = globalState; + // app.use(BootstrapVueIcons); app.mount("#app");