This commit is contained in:
xin
2026-06-03 13:43:27 +08:00
parent 90b1fe2f7a
commit f99647775c
9 changed files with 105 additions and 6 deletions

View File

@ -1 +1 @@
{"pathofsave":null,"Filename":"testaa","caijiavgNumber":"1","useSG":false,"usehighpass":false,"Dispatcher":{"isenable":true,"begin":"09:28","end":"23:59"},"sensor_typeforset":"IS11"}
{"pathofsave":null,"Filename":"testaa","caijiavgNumber":"1","useSG":false,"usehighpass":false,"Dispatcher":{"isenable":true,"begin":"09:28","end":"23:59"},"sensor_typeforset":"IS3"}

View File

@ -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<f64> = reflectance_data["data"]
.as_array()
.unwrap_or(&vec![])
.iter()
.map(|x| x.as_f64().unwrap_or(0.0))
.collect::<Vec<f64>>();
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)
}
}

View File

@ -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| {

View File

@ -246,10 +246,10 @@ pub fn readforport()->Vec<u8>{
if port_info.port_name == "NON" {
return "Port is not set".as_bytes().to_vec();
}
let mut buf: Vec<u8> = vec![0; 1000];
let mut buf: Vec<u8> = 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}

View File

@ -10,7 +10,7 @@
"package": {
"productName": "SpectralPlot",
"version": "0.6.66"
"version": "0.6.81"
},
"tauri": {

View File

@ -18,3 +18,4 @@
* **v0.6.62** 修正了保存逻辑,并修复了波长倒置的问题。
* **v0.6.65** 增加了HH3定标功能。
* **v0.6.66** 增加了HH3波长定标所需的波长参数并将寻峰最小值调整为3000。
* **v0.6.81** 解决了is3控制时偶尔会卡顿的问题