From 94336c9ba104f70ed41fb7940cf2dbf00b40aca0 Mon Sep 17 00:00:00 2001 From: xin Date: Wed, 7 May 2025 11:13:56 +0800 Subject: [PATCH] rust --- .../reply/index-2025-03-24T01-20-24-0209.json | 108 --------------- .../.ninja_deps | Bin 3960 -> 1452 bytes .../.ninja_log | 72 +--------- .../clion-Debug-Visual Studio-log.txt | 4 +- .../reply/index-2025-03-24T01-20-24-0212.json | 108 --------------- .../.ninja_deps | Bin 2080 -> 1452 bytes .../.ninja_log | 44 +----- .../clion-Release-Visual Studio-log.txt | 4 +- src-tauri/src/algorithm/mod.rs | 10 ++ src-tauri/src/algorithm/sharpmethod.rs | 4 +- src-tauri/src/algorithm/smoothmethod.rs | 129 ++++++++++++++++++ src-tauri/src/algorithm/spectraltools.rs | 4 +- src-tauri/src/comman1.rs | 1 - src-tauri/src/iris_spectral/mod.rs | 2 - .../spectralbase/IS11_sensor/mod.rs | 3 +- .../spectralbase/IS3_sensor/mod.rs | 3 +- .../src/iris_spectral/spectralbase/mod.rs | 6 +- src-tauri/src/iris_spectral/spectralserver.rs | 18 +-- src-tauri/src/irishypersptral/mod.rs | 10 +- src-tauri/src/main.rs | 2 - src-tauri/src/mylog.rs | 17 ++- src-tauri/src/serport/serport.rs | 2 +- src/components/menubox/SetWavelenthcoeff.vue | 46 +++++-- 23 files changed, 215 insertions(+), 382 deletions(-) delete mode 100644 myis11/project/is3/cmake-build-debug-visual-studio/.cmake/api/v1/reply/index-2025-03-24T01-20-24-0209.json delete mode 100644 myis11/project/is3/cmake-build-release-visual-studio/.cmake/api/v1/reply/index-2025-03-24T01-20-24-0212.json diff --git a/myis11/project/is3/cmake-build-debug-visual-studio/.cmake/api/v1/reply/index-2025-03-24T01-20-24-0209.json b/myis11/project/is3/cmake-build-debug-visual-studio/.cmake/api/v1/reply/index-2025-03-24T01-20-24-0209.json deleted file mode 100644 index 0d1e367..0000000 --- a/myis11/project/is3/cmake-build-debug-visual-studio/.cmake/api/v1/reply/index-2025-03-24T01-20-24-0209.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "cmake" : - { - "generator" : - { - "multiConfig" : false, - "name" : "Ninja" - }, - "paths" : - { - "cmake" : "C:/Users/xin/AppData/Local/Programs/CLion/bin/cmake/win/x64/bin/cmake.exe", - "cpack" : "C:/Users/xin/AppData/Local/Programs/CLion/bin/cmake/win/x64/bin/cpack.exe", - "ctest" : "C:/Users/xin/AppData/Local/Programs/CLion/bin/cmake/win/x64/bin/ctest.exe", - "root" : "C:/Users/xin/AppData/Local/Programs/CLion/bin/cmake/win/x64/share/cmake-3.30" - }, - "version" : - { - "isDirty" : false, - "major" : 3, - "minor" : 30, - "patch" : 5, - "string" : "3.30.5", - "suffix" : "" - } - }, - "objects" : - [ - { - "jsonFile" : "codemodel-v2-e326b02e19b443cd6b2e.json", - "kind" : "codemodel", - "version" : - { - "major" : 2, - "minor" : 7 - } - }, - { - "jsonFile" : "cache-v2-994f0ace060520f5a600.json", - "kind" : "cache", - "version" : - { - "major" : 2, - "minor" : 0 - } - }, - { - "jsonFile" : "cmakeFiles-v1-b9e6e445448b9bbd21bb.json", - "kind" : "cmakeFiles", - "version" : - { - "major" : 1, - "minor" : 1 - } - }, - { - "jsonFile" : "toolchains-v1-d19162570acee6f721be.json", - "kind" : "toolchains", - "version" : - { - "major" : 1, - "minor" : 0 - } - } - ], - "reply" : - { - "cache-v2" : - { - "jsonFile" : "cache-v2-994f0ace060520f5a600.json", - "kind" : "cache", - "version" : - { - "major" : 2, - "minor" : 0 - } - }, - "cmakeFiles-v1" : - { - "jsonFile" : "cmakeFiles-v1-b9e6e445448b9bbd21bb.json", - "kind" : "cmakeFiles", - "version" : - { - "major" : 1, - "minor" : 1 - } - }, - "codemodel-v2" : - { - "jsonFile" : "codemodel-v2-e326b02e19b443cd6b2e.json", - "kind" : "codemodel", - "version" : - { - "major" : 2, - "minor" : 7 - } - }, - "toolchains-v1" : - { - "jsonFile" : "toolchains-v1-d19162570acee6f721be.json", - "kind" : "toolchains", - "version" : - { - "major" : 1, - "minor" : 0 - } - } - } -} diff --git a/myis11/project/is3/cmake-build-debug-visual-studio/.ninja_deps b/myis11/project/is3/cmake-build-debug-visual-studio/.ninja_deps index 8d876f645d3f9434534e80df500a9c91cb7be697..a724392e7e9b4c3d3b98ea21c91c9953fb380822 100644 GIT binary patch delta 36 ucmV+<0Nelg9;^$n@B)*>4j_{d1IUx?4j8lW0}KI^SPvkR90hcfG!GmT9SrXP literal 3960 zcmcJQZEO@(6ovE2d#9eY(h0f>rU%Rg(A^p>BlClHeHQXTc^|6Y4jR|Rt_(5zyOiU9X5eZZvfy77@jZs6Q27h3psj_Xwwo38boxQ_$m@lK- z^tRKSr|)^sx#!HT^~*?3@G&u^mKHG#vkOir!fz8>kR+-sQjp3aH7KFpKnyAD7LKiN z+$!>l%qnSBV>Mn$BQ`nEhZI%gG(N46zmVF{z^aPCYH_5*QoN$+LMa7nnA0$pve9ry zILbvtEskRWA(aZ?-UM?4z8(P&fdH$2|2vuZJpBJ1dKt_s=fB%z96Kw_3J+c31OKi2|3_CcP)lmo?w?| z_W69wZSYLyy%^3CI7{K&4hQi6asF=|8an6KbWaQCJRc9~1M~-Qwcu&NJ{Vk7lvS+2 zM3OR@X<%1Foh9&`n9%Dig=bRhGB~8(0@ZiZNUp#s@X`kP7Wj649YDp&w2TB^gPq{o z$-6?p-nb+%rVWZXZZa z!evU5X(x`(-Hyi=4PMQ8%bz>y{l$BVjks0MsrQEcQG+vkr@3DK<=qD}4!J(qe9(wn z<)S+2)EeGOhsL`vmA&m0e`hD2w~Eu6N8j9O#I1bLn#aFAYjEb8saD^^waX_R?w)c} zBUMdaxYK;w=U%wb$*Nf|+{xSES)uWZ1*hX^7n_vj~}_v-EqIJV-;ULvt{odi#VAJ zvd1NBnzM1IeJAh6VYbE4v6@+`ckYdIXGuOMJ(Bm#v1MPoaU}2VA%DwY&c9RM5uq(Y zIJdlmnL7vFIFk3HiW|zXLtfhdNb;>Sl(Xu8DK7e{qVCrFp?f(ty2OZE)#uNB4qPmm z`;F=pfxrCE0qSM$SaDgUL$1n2cFfe3 z>8IS7!{wuEt6X#{W2nEwg+c2p&f76H&}VY*&mKPYQl!y+FY~$ldnY<%zFSx7I(G9& z``CJP(#U7-5!Gr+tlUdH*=bR3W^&!nPrGoW#)*0EK$k;})Z3*iGeghkII}m(%)eH5 z!HwC!{mHb+ejFacc7@3nOeZG0uuE)~VD@30#Gx>`g{5Tj7IvA*BCIn2@zD$I delta 365 zcmZ3(y+B}t1QXjlsfth9Qj_JF9mS0@B}{Rg-{P zvRI@96@Wr~Kq0a7?LZ-*mdS-I!hSG=wr_KL7^sbD5KKPi|EB;~9ZY$c+a`8?2Fion z26isU?m70Hfj}W-yM6v^0fnG;!(AkDL0K&bL)3Hr(G, minheigh: f64) -> Vec<(u32, f64)> { pub fn compute_weave_coeff(x: Vec, y: Vec) -> Vec { spectraltools::compute_weave_coeff(x, y) } + + +pub fn polynomial_smooth_u32(y: &[u32], degree: usize) -> Vec { + smoothmethod::polynomial_smooth_u32(y, degree) +} + +pub fn polynomial_smooth_u16(y: Vec, degree: usize) -> Vec { + + smoothmethod::polynomial_smooth_u16(&y, degree) +} \ No newline at end of file diff --git a/src-tauri/src/algorithm/sharpmethod.rs b/src-tauri/src/algorithm/sharpmethod.rs index 0b8daa2..c0e3152 100644 --- a/src-tauri/src/algorithm/sharpmethod.rs +++ b/src-tauri/src/algorithm/sharpmethod.rs @@ -6,7 +6,7 @@ use ndarray_ndimage::{gaussian_filter, BorderMode}; pub fn high_pass_gaussian_filter(input: Vec, sigma: f64) -> Vec { // 将输入 Vec 转换为 Array1 - let mut input_array = Array1::from_vec(input); + let input_array = Array1::from_vec(input); // for i in 0..input_array.len(){ // // input_array[i]=input_array[i]*input_array[i]/( 65535f64); @@ -16,7 +16,7 @@ pub fn high_pass_gaussian_filter(input: Vec, sigma: f64) -> Vec { // 高斯低通滤波 - let mut low_pass = gaussian_filter(&input_array, sigma, 0, BorderMode::Reflect, 3); + let low_pass = gaussian_filter(&input_array, sigma, 0, BorderMode::Reflect, 3); // Modify the result: set values less than zero to zero println!("{:?}",low_pass); // 高通滤波:原始信号 - 低通滤波结果 diff --git a/src-tauri/src/algorithm/smoothmethod.rs b/src-tauri/src/algorithm/smoothmethod.rs index f1ebcbb..407e8cb 100644 --- a/src-tauri/src/algorithm/smoothmethod.rs +++ b/src-tauri/src/algorithm/smoothmethod.rs @@ -1,4 +1,6 @@ extern crate savgol_rs; +use nalgebra::{DMatrix, DVector}; +use std::convert::TryFrom; use savgol_rs::savgol_filter; pub fn savgol(data: Vec, window: usize, order: usize) -> Vec { @@ -7,7 +9,134 @@ pub fn savgol(data: Vec, window: usize, order: usize) -> Vec { savgol_filter(&svinput).unwrap() } +/// 多项式拟合函数 (f64版本) +/// +/// 参数: +/// - x: x坐标序列 +/// - y: y坐标序列 +/// - degree: 多项式次数 (7或8) +/// +/// 返回: 平滑后的y值序列 +pub fn polynomial_fit_f64(x: &[f64], y: &[f64], degree: usize) -> Vec { + assert_eq!(x.len(), y.len(), "x和y的长度必须相同"); + if x.len() < degree + 1 { + panic!("数据点数量必须大于多项式次数"); + } + let n = x.len(); + let y_vec = DVector::from_vec(y.to_vec()); + // 构建范德蒙矩阵 + let mut vandermonde = DMatrix::zeros(n, degree + 1); + for i in 0..n { + for j in 0..=degree { + vandermonde[(i, j)] = x[i].powi(j as i32); + } + } + // 解最小二乘问题 - 新版本nalgebra的调用方式 + let svd = vandermonde.svd(true, true); + let coefficients = svd.solve(&y_vec, f64::EPSILON).unwrap(); + // 计算拟合值 + let fitted_y: Vec = x + .iter() + .map(|&xi| { + (0..=degree).fold(0.0, |acc, j| acc + coefficients[j] * xi.powi(j as i32)) + }) + .collect(); + fitted_y +} +/// 多项式拟合函数 (u32版本) +/// +/// 参数: +/// - x: x坐标序列 +/// - y: y坐标序列 +/// - degree: 多项式次数 (7或8) +/// +/// 返回: 平滑后的y值序列 +pub fn polynomial_fit_u32(x: &[u32], y: &[u32], degree: usize) -> Vec { + // 转换为f64处理 + let x_f64: Vec = x.iter().map(|&xi| xi as f64).collect(); + let y_f64: Vec = y.iter().map(|&yi| yi as f64).collect(); + + let fitted_f64 = polynomial_fit_f64(&x_f64, &y_f64, degree); + + // 转换回u32,处理可能的负值(截断为0)和溢出 + fitted_f64 + .into_iter() + .map(|y| { + if y < 0.0 { + 0 + } else { + u32::try_from(y.round() as i64).unwrap_or(u32::MAX) + } + }) + .collect() +} +/// 简化版:当x是等间距时的平滑函数 (u32版本) +pub fn polynomial_smooth_u32(y: &[u32], degree: usize) -> Vec { + let x: Vec = (0..y.len() as u32).collect(); + polynomial_fit_u32(&x, y, degree) +} +/// 多项式拟合函数 (u16版本) +pub fn polynomial_fit_u16(x: &[u16], y: &[u16], degree: usize) -> Vec { + let x_f64: Vec = x.iter().map(|&xi| xi as f64).collect(); + let y_f64: Vec = y.iter().map(|&yi| yi as f64).collect(); + + let fitted_f64 = polynomial_fit_f64(&x_f64, &y_f64, degree); + + fitted_f64 + .into_iter() + .map(|y| { + if y < 0.0 { + 0 + } else if y > u16::MAX as f64 { + u16::MAX + } else { + y.round() as u16 + } + }) + .collect() +} +/// 简化版:当x是等间距时的平滑函数 (u16版本) +pub fn polynomial_smooth_u16(y: &[u16], degree: usize) -> Vec { + let x: Vec = (0..y.len() as u16).collect(); + polynomial_fit_u16(&x, y, degree) +} +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn test_polynomial_fit() { + // 测试数据: 一个简单的二次函数加一些噪声 + let x = vec![0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]; + let y = vec![1.0, 3.0, 6.0, 10.0, 15.0, 24.0, 35.0, 50.0, 65.0, 82.0]; + + // 2次多项式拟合应该能很好拟合 + let fitted = polynomial_fit_f64(&x, &y, 2); + assert_eq!(fitted.len(), y.len()); + + // 检查拟合结果是否接近原始数据 + for (original, fitted) in y.iter().zip(fitted.iter()) { + assert!((original - fitted).abs() < 5.0); + } + } + #[test] + fn test_polynomial_smooth() { + // 测试数据: 一个简单的上升序列加一些噪声 + let y = vec![ + 10,12,11,13,12,14,13,15,14,16, + 15,17,16,18,17,19,18,20,19,21, + ]; + + // 7次多项式平滑 + let smoothed_7 = polynomial_smooth_u32(&y, 7); + print!("smoothed_7: {:?}", smoothed_7); + assert_eq!(smoothed_7.len(), y.len()); + + // 8次多项式平滑 + let smoothed_8 = polynomial_smooth_u32(&y, 8); + assert_eq!(smoothed_8.len(), y.len()); + } +} #[test] fn test_savgol() { // 示例数据 diff --git a/src-tauri/src/algorithm/spectraltools.rs b/src-tauri/src/algorithm/spectraltools.rs index 5a8cecb..243f9df 100644 --- a/src-tauri/src/algorithm/spectraltools.rs +++ b/src-tauri/src/algorithm/spectraltools.rs @@ -39,7 +39,7 @@ pub fn interpolate_spline,>(x_t: Vec, y_t: Vec, step: Ok(result) } -pub fn interpolate_spline_at_points>(x_t: Vec, y_t: Vec, x_target: Vec) -> Result, Box> { +pub fn interpolate_spline_at_points>(x_t: Vec, y_t: Vec, x_target: Vec) -> Result, Box> { let x: Vec = x_t.iter().map(|&x| x.into()).collect(); let y: Vec = y_t.iter().map(|&y| y.into()).collect(); @@ -138,7 +138,7 @@ pub fn compute_weave_coeff(x_data:Vec,y_data:Vec)->Vec{ // 构建设计矩阵 X 和观测向量 y let mut x_matrix = DMatrix::zeros(n, 4); // 三阶多项式有 4 个系数 - let mut y_vector = DVector::from_vec(y_data.clone()); + let y_vector = DVector::from_vec(y_data.clone()); for (i, &x) in x_data.iter().enumerate() { x_matrix[(i, 0)] = 1.0; // 常数项 diff --git a/src-tauri/src/comman1.rs b/src-tauri/src/comman1.rs index 49e8d07..fd69706 100644 --- a/src-tauri/src/comman1.rs +++ b/src-tauri/src/comman1.rs @@ -1,6 +1,5 @@ use super::serport::serport::*; -use super::mylog::*; #[tauri::command] diff --git a/src-tauri/src/iris_spectral/mod.rs b/src-tauri/src/iris_spectral/mod.rs index 5f0dbcc..b6af1c4 100644 --- a/src-tauri/src/iris_spectral/mod.rs +++ b/src-tauri/src/iris_spectral/mod.rs @@ -1,9 +1,7 @@ use super::mydefine::*; pub mod spectralserver; pub mod spectralbase; -use std::fmt::format; use std::fs; -use std::fs::File; use super::mylog::*; use serde_json::json; use spectralserver::calibrate_file; diff --git a/src-tauri/src/iris_spectral/spectralbase/IS11_sensor/mod.rs b/src-tauri/src/iris_spectral/spectralbase/IS11_sensor/mod.rs index 5550c48..ca07e56 100644 --- a/src-tauri/src/iris_spectral/spectralbase/IS11_sensor/mod.rs +++ b/src-tauri/src/iris_spectral/spectralbase/IS11_sensor/mod.rs @@ -1,5 +1,4 @@ -use libc::{c_uchar,c_char,c_long,c_float, size_t}; -use std::ffi::CStr; +use libc::{c_uchar, size_t}; use std::slice; use crate::serport::serport::*; diff --git a/src-tauri/src/iris_spectral/spectralbase/IS3_sensor/mod.rs b/src-tauri/src/iris_spectral/spectralbase/IS3_sensor/mod.rs index beb13c9..5871f4f 100644 --- a/src-tauri/src/iris_spectral/spectralbase/IS3_sensor/mod.rs +++ b/src-tauri/src/iris_spectral/spectralbase/IS3_sensor/mod.rs @@ -1,5 +1,4 @@ -use libc::{c_uchar,c_char,c_long,c_float, size_t}; -use std::ffi::CStr; +use libc::{c_uchar, size_t}; use std::slice; use crate::serport::serport::*; diff --git a/src-tauri/src/iris_spectral/spectralbase/mod.rs b/src-tauri/src/iris_spectral/spectralbase/mod.rs index e129e70..e4a6d38 100644 --- a/src-tauri/src/iris_spectral/spectralbase/mod.rs +++ b/src-tauri/src/iris_spectral/spectralbase/mod.rs @@ -7,7 +7,6 @@ use std::{ }; mod IS3_sensor; mod IS11_sensor; - // 定义emun 不同光谱仪 #[derive(Copy, Clone)] pub enum Senortype { @@ -204,11 +203,12 @@ pub fn sensor_get_data(shuttertime: i32) -> Vec { unsafe { let len = sensor_get_data_base(outdata.as_mut_ptr(), shuttertime); - outdata.truncate(len as usize); + outdata.truncate(len as usize); + } - + // polynomial_smooth_u16( outdata ,7) outdata } diff --git a/src-tauri/src/iris_spectral/spectralserver.rs b/src-tauri/src/iris_spectral/spectralserver.rs index f87dd20..6f203bf 100644 --- a/src-tauri/src/iris_spectral/spectralserver.rs +++ b/src-tauri/src/iris_spectral/spectralserver.rs @@ -2,16 +2,12 @@ use super::spectralbase; use super::spectralbase::*; use super::super::mydefine::*; use lazy_static::lazy_static; -use chrono::{self, format, Datelike, Timelike}; -use serde::de; -use tauri::http::header::UPGRADE; +use chrono::{self, Datelike, Timelike}; use std::thread; -use std::fs; use std::fs::File; use std::mem; use std::path::Path; use std::io::Read; -use super::super::algorithm::*; #[derive(PartialEq)] enum WorkStat { IDLE, @@ -132,7 +128,7 @@ pub fn opt_sensor(percent: i32) -> i32 { pub fn get_now_stat()->(String,String,i32){ - let mut dev_stat=DEV_STAT.lock().unwrap(); + let dev_stat=DEV_STAT.lock().unwrap(); match dev_stat.stat { WorkStat::IDLE => { return ("finish".to_string(),dev_stat.workname.clone(),100); @@ -415,12 +411,12 @@ pub fn calibrate_file(orgdata: &IS11DataStruct) -> IS11DataStruct { let cali_gaindb = calidata.temprature[0]; let cali_shutter = calidata.shutter_time; //db 转系数 - let mut collect_gain = 10.0_f32.powf(collect_gaindb / 20.0); - let mut cali_gain = 10.0_f32.powf(cali_gaindb / 20.0); + let collect_gain = 10.0_f32.powf(collect_gaindb / 20.0); + let cali_gain = 10.0_f32.powf(cali_gaindb / 20.0); //计算增益 - let mut Scale_gain = cali_gain / collect_gain; - let mut Scale_shutter = cali_shutter as f32/ collect_shutter as f32; - let mut SCale = Scale_gain * Scale_shutter as f32; + let Scale_gain = cali_gain / collect_gain; + let Scale_shutter = cali_shutter as f32/ collect_shutter as f32; + let SCale = Scale_gain * Scale_shutter as f32; let len = orgdata.data.len(); for i in 0..len { data.data[i] = orgdata.data[i] * SCale * calidata.data[i]+offsetdata.data[i]; diff --git a/src-tauri/src/irishypersptral/mod.rs b/src-tauri/src/irishypersptral/mod.rs index f76a9ef..553cd79 100644 --- a/src-tauri/src/irishypersptral/mod.rs +++ b/src-tauri/src/irishypersptral/mod.rs @@ -2,16 +2,12 @@ use core::str; use std::fs; use std::fs::File; -use std::io::{self, Read, Write}; +use std::io::{Write}; // use std::sync::WaitTimeoutResult; use std::path::Path; -use super::algorithm::interpolate_spline; -use super::algorithm::sg_smooth; use std::mem; use super::mylog::*; -use serde::{Deserialize, Serialize}; -use serde_with::serde_as; use super::serport::serport::*; use super::mydefine::*; @@ -335,8 +331,8 @@ if command == "\"get_data\"" { if datatype == 0x02 { let mut is11data = IS11DataStruct::default(); unsafe { - let mut is11data_ptr = &mut is11data as *mut IS11DataStruct; - let mut ret_ptr = &mut ret[0] as *mut u8; + let is11data_ptr = &mut is11data as *mut IS11DataStruct; + let ret_ptr = &mut ret[0] as *mut u8; std::ptr::copy_nonoverlapping( ret_ptr, is11data_ptr as *mut u8, diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index a5e206e..9f39639 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -21,9 +21,7 @@ enum DevName { } use lazy_static::lazy_static; -use tauri::api::version; use std::sync::Mutex; -use std::sync::Arc; //设置一个可修改的全局变量 lazy_static! { static ref DEVNAME: Mutex = Mutex::new(DevName::IRIS_SENSOR(Senortype::IS3)); diff --git a/src-tauri/src/mylog.rs b/src-tauri/src/mylog.rs index 95ce999..16d6cae 100644 --- a/src-tauri/src/mylog.rs +++ b/src-tauri/src/mylog.rs @@ -1,12 +1,11 @@ use tklog::{ - debugs, errors, fatals, infos, - sync::Logger,LEVEL, LOG, - traces, warns, Format, MODE,async_traces, + infos, + sync::Logger, Format, MODE, }; use lazy_static::lazy_static; use std::{ // fmt::format, - borrow::{ BorrowMut}, sync::{Arc, Mutex}, thread::sleep + borrow::{ BorrowMut}, sync::{Arc, Mutex} }; struct LOGERME{ @@ -31,11 +30,11 @@ lazy_static! { pub fn change_log_path(path: &str,string: &str) { if string=="RUST"{ - let mut loggerglobel = LOGERGLOBLE.lock().unwrap(); + let loggerglobel = LOGERGLOBLE.lock().unwrap(); let mut log=loggerglobel.logger_rust.lock().unwrap(); log.set_cutmode_by_time(path, MODE::DAY, 10, false); }else if string=="JS"{ - let mut loggerglobel=LOGERGLOBLE.lock().unwrap(); + let loggerglobel=LOGERGLOBLE.lock().unwrap(); let mut log=loggerglobel.logger_js.lock().unwrap(); log.set_cutmode_by_time(path, MODE::DAY, 10, false); } @@ -44,7 +43,7 @@ pub fn change_log_path(path: &str,string: &str) { pub fn initlog() { //let mut logger = LOGERGloble.lock().unwrap().LOGGER_RUST; - let mut loggerglobel = LOGERGLOBLE.lock().unwrap(); + let loggerglobel = LOGERGLOBLE.lock().unwrap(); let mut log=loggerglobel.logger_rust.lock().unwrap(); log.set_console(true).set_format(Format::Date|Format::Time).set_formatter("{time} {file}{level}:{message}\n") .set_cutmode_by_time("rust_log.log",MODE::DAY, 10, false); @@ -59,7 +58,7 @@ pub fn initlog() { pub fn logtorust(str:T) where T: std::fmt::Display { - let mut loggerglobe=LOGERGLOBLE.lock().unwrap(); + let loggerglobe=LOGERGLOBLE.lock().unwrap(); let mut log=Arc::clone(&loggerglobe.logger_rust); let log1 = log.borrow_mut(); @@ -69,7 +68,7 @@ where T: std::fmt::Display pub fn logtojs(str:T) where T: std::fmt::Display { - let mut loggerglobe=LOGERGLOBLE.lock().unwrap(); + let loggerglobe=LOGERGLOBLE.lock().unwrap(); let mut log=Arc::clone(&loggerglobe.logger_js); let log1 = log.borrow_mut(); diff --git a/src-tauri/src/serport/serport.rs b/src-tauri/src/serport/serport.rs index 2416d70..31cf821 100644 --- a/src-tauri/src/serport/serport.rs +++ b/src-tauri/src/serport/serport.rs @@ -131,7 +131,7 @@ pub fn clearserilport() -> String{ match &mut port_info.port { Some(p) => { p.set_timeout(Duration::from_millis(100)).unwrap(); - while true{ + loop{ let sizeread =match p.read(&mut buf){ Ok(size)=>{size}, Err(_e)=>{return "Port is not open".to_string()} diff --git a/src/components/menubox/SetWavelenthcoeff.vue b/src/components/menubox/SetWavelenthcoeff.vue index 82d3a1c..5e210fb 100644 --- a/src/components/menubox/SetWavelenthcoeff.vue +++ b/src/components/menubox/SetWavelenthcoeff.vue @@ -58,13 +58,7 @@ export default { 866.794, 912.297, 922.450 - - - - - - - ], + ], shutter_time_up: 1, shutter_time_down: 1, sensor_gain_up: 0, @@ -279,7 +273,17 @@ export default { let coeffweave2 = this.Devinfo.bochangxishu.a1; let coeffweave3 = this.Devinfo.bochangxishu.a2; let coeffweave4 = this.Devinfo.bochangxishu.a3; - this.Peaks = []; + + var lenthofpeaks=this.Peaks.length; + for (var i=lenthofpeaks-1;i>=0;i--){ + if (this.Peaks[i][3] == false){ + this.Peaks.splice(i,1); + + } + } + + //this.Peaks = []; + let peakformatch = []; peaks.forEach(element => { var weave = coeffweave1 * element[0] * element[0] * element[0] + coeffweave2 * element[0] * element[0] + coeffweave3 * element[0] + coeffweave4; @@ -334,7 +338,14 @@ export default { let coeffweave2 = this.Devinfo.bochangxishu2.a1; let coeffweave3 = this.Devinfo.bochangxishu2.a2; let coeffweave4 = this.Devinfo.bochangxishu2.a3; - this.PeaksDown = []; + var lenthofpeaks=this.PeaksDown.length; + for (var i=lenthofpeaks-1;i>=0;i--){ + if (this.PeaksDown[i][3] == false){ + this.PeaksDown.splice(i,1); + + } + } + // this.PeaksDown = []; peaks.forEach(element => { var weave = coeffweave1 * element[0] * element[0] * element[0] + coeffweave2 * element[0] * element[0] + coeffweave3 * element[0] + coeffweave4; peaksforshow.push([weave, element[1], element[0]]); @@ -375,6 +386,19 @@ export default { }, + async ClearArry(specindex){ + if (specindex == 0) { + this.Peaks = []; + this.option.series[1].data = []; + + } else if (specindex == 1) { + this.PeaksDown = []; + this.optiondown.series[1].data = []; + + } + + }, + ReplotWeaveInfo(spectralnumber) { let orgoption = {}; let Peaksnow = []; @@ -746,6 +770,8 @@ export default { sensor_gain_up.toFixed(2) }} 计算 + 清空
@@ -795,6 +821,8 @@ export default { shutter_time_down.toFixed(2) }} ms 计算 + 清空