再次提交
This commit is contained in:
233
src-tauri/src/jianzhiis11/is11server.rs
Normal file
233
src-tauri/src/jianzhiis11/is11server.rs
Normal file
@ -0,0 +1,233 @@
|
||||
use super::is11base;
|
||||
use super::super::mydefine::*;
|
||||
use lazy_static::lazy_static;
|
||||
use chrono::{self, Datelike, Timelike};
|
||||
use std::thread;
|
||||
#[derive(PartialEq)]
|
||||
enum WorkStat {
|
||||
IDLE,
|
||||
WOKING,
|
||||
STOP,
|
||||
OPTING,
|
||||
|
||||
}
|
||||
|
||||
use std::{
|
||||
sync::{Arc, Mutex},
|
||||
};
|
||||
struct is11_dev_data {
|
||||
sensor_info: is11base::STRSensorInfo,
|
||||
shuttertime: i32,
|
||||
stat: WorkStat,
|
||||
workname: String,
|
||||
|
||||
}
|
||||
|
||||
lazy_static! {
|
||||
static ref DEV_STAT: Arc<Mutex<is11_dev_data>> = Arc::new(Mutex::new(is11_dev_data {
|
||||
sensor_info: is11base::STRSensorInfo::default(),
|
||||
shuttertime: 0,
|
||||
stat: WorkStat::IDLE,
|
||||
workname: "noting".to_string(),
|
||||
}));
|
||||
}
|
||||
|
||||
// lazy_static! {
|
||||
// static ref DATA: Arc<Mutex<Vec<u16>>> = Arc::new(Mutex::new(Vec::new()));
|
||||
// }
|
||||
|
||||
lazy_static! {
|
||||
static ref DATA_IS11: Arc<Mutex<IS11DataStruct>> = Arc::new(Mutex::new(IS11DataStruct::default()));
|
||||
static ref DARK_DATA: Arc<Mutex<IS11DataStruct>> = Arc::new(Mutex::new(IS11DataStruct::default()));
|
||||
static ref FLAT_DATA: Arc<Mutex<IS11DataStruct>> = Arc::new(Mutex::new(IS11DataStruct::default()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
pub fn get_shuttertime() -> i32 {
|
||||
let dev_stat=DEV_STAT.lock().unwrap();
|
||||
return dev_stat.shuttertime;
|
||||
}
|
||||
|
||||
|
||||
pub fn opt_sensor(percent: i32) -> i32 {
|
||||
|
||||
|
||||
|
||||
let mut dev_stat=DEV_STAT.lock().unwrap();
|
||||
if dev_stat.stat != WorkStat::IDLE {
|
||||
return -1;
|
||||
}
|
||||
|
||||
dev_stat.stat=WorkStat::OPTING;
|
||||
dev_stat.workname="opting".to_string();
|
||||
drop(dev_stat); //释放锁
|
||||
thread::spawn(move || {
|
||||
|
||||
let shuttertime= is11base::_is11_opt_snenser(90); //多线程设置曝光时间
|
||||
let mut dev_statnow=DEV_STAT.lock().unwrap();
|
||||
dev_statnow.stat=WorkStat::IDLE;
|
||||
dev_statnow.shuttertime=shuttertime;
|
||||
dev_statnow.workname="finish".to_string();
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
pub fn get_now_stat()->(String,String){
|
||||
|
||||
|
||||
let mut dev_stat=DEV_STAT.lock().unwrap();
|
||||
match dev_stat.stat {
|
||||
WorkStat::IDLE => {
|
||||
return ("finish".to_string(),dev_stat.workname.clone());
|
||||
},
|
||||
WorkStat::WOKING => {
|
||||
return ("working".to_string(),dev_stat.workname.clone());
|
||||
},
|
||||
WorkStat::STOP => {
|
||||
return ("finish".to_string(),dev_stat.workname.clone());
|
||||
},
|
||||
WorkStat::OPTING => {
|
||||
return ("opting".to_string(),dev_stat.workname.clone());
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
pub fn collect(shuttertime:u32){
|
||||
let mut dev_stat=DEV_STAT.lock().unwrap();
|
||||
if dev_stat.stat != WorkStat::IDLE {
|
||||
return ;
|
||||
}
|
||||
dev_stat.stat=WorkStat::WOKING;
|
||||
dev_stat.workname="采集中".to_string();
|
||||
drop(dev_stat); //释放锁
|
||||
thread::spawn(move || {
|
||||
|
||||
let data=is11base::is11_get_data(shuttertime as i32);
|
||||
let mut dev_stat=DEV_STAT.lock().unwrap();
|
||||
let _lenth=data.len();
|
||||
println!("data len={}",_lenth);
|
||||
let mut tempis11data=IS11DataStruct::default();
|
||||
for i in 0.._lenth {
|
||||
tempis11data.data[i]=data[i] as f32;
|
||||
}
|
||||
// 获取当前时间
|
||||
let now = chrono::Local::now();
|
||||
tempis11data.year=(now.year()-2000) as u8;
|
||||
tempis11data.month=now.month() as u8;
|
||||
tempis11data.day=now.day() as u8;
|
||||
tempis11data.hour=now.hour() as u8;
|
||||
tempis11data.minute=now.minute() as u8;
|
||||
tempis11data.second=now.second() as u8;
|
||||
tempis11data.shutter_time=shuttertime;
|
||||
tempis11data.index=0;
|
||||
tempis11data.datatype=0;
|
||||
|
||||
let mut data1=DATA_IS11.lock().unwrap();
|
||||
*data1=tempis11data;
|
||||
dev_stat.stat=WorkStat::IDLE;
|
||||
dev_stat.workname="finish".to_string();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
pub fn collcect_dark(shuttertime:u32)
|
||||
{
|
||||
let mut dev_stat=DEV_STAT.lock().unwrap();
|
||||
if dev_stat.stat != WorkStat::IDLE {
|
||||
return ;
|
||||
}
|
||||
dev_stat.stat=WorkStat::WOKING;
|
||||
dev_stat.workname="采集中".to_string();
|
||||
drop(dev_stat); //释放锁
|
||||
thread::spawn(move || {
|
||||
|
||||
let data=is11base::is11_get_data(shuttertime as i32);
|
||||
let mut dev_stat=DEV_STAT.lock().unwrap();
|
||||
let _lenth=data.len();
|
||||
println!("data len={}",_lenth);
|
||||
let mut tempis11data=IS11DataStruct::default();
|
||||
for i in 0.._lenth {
|
||||
tempis11data.data[i]=data[i] as f32;
|
||||
}
|
||||
//获取当前时间
|
||||
let now = chrono::Local::now();
|
||||
tempis11data.year=(now.year()-2000) as u8;
|
||||
tempis11data.month=now.month() as u8;
|
||||
tempis11data.day=now.day() as u8;
|
||||
tempis11data.hour=now.hour() as u8;
|
||||
tempis11data.minute=now.minute() as u8;
|
||||
tempis11data.second=now.second() as u8;
|
||||
tempis11data.shutter_time=shuttertime;
|
||||
tempis11data.index=0;
|
||||
tempis11data.datatype=0;
|
||||
|
||||
let mut data1=DARK_DATA.lock().unwrap();
|
||||
*data1=tempis11data;
|
||||
dev_stat.stat=WorkStat::IDLE;
|
||||
dev_stat.workname="finish".to_string();
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
pub fn collcect_flat(shuttertime:u32)
|
||||
{
|
||||
let mut dev_stat=DEV_STAT.lock().unwrap();
|
||||
if dev_stat.stat != WorkStat::IDLE {
|
||||
return ;
|
||||
}
|
||||
dev_stat.stat=WorkStat::WOKING;
|
||||
dev_stat.workname="采集中".to_string();
|
||||
drop(dev_stat); //释放锁
|
||||
thread::spawn(move || {
|
||||
|
||||
let data=is11base::is11_get_data(shuttertime as i32);
|
||||
let mut dev_stat=DEV_STAT.lock().unwrap();
|
||||
let _lenth=data.len();
|
||||
println!("data len={}",_lenth);
|
||||
let mut tempis11data=IS11DataStruct::default();
|
||||
for i in 0.._lenth {
|
||||
tempis11data.data[i]=data[i] as f32;
|
||||
}
|
||||
//获取当前时间
|
||||
let now = chrono::Local::now();
|
||||
tempis11data.year=(now.year()-2000) as u8;
|
||||
tempis11data.month=now.month() as u8;
|
||||
tempis11data.day=now.day() as u8;
|
||||
tempis11data.hour=now.hour() as u8;
|
||||
tempis11data.minute=now.minute() as u8;
|
||||
tempis11data.second=now.second() as u8;
|
||||
tempis11data.shutter_time=shuttertime;
|
||||
tempis11data.index=0;
|
||||
tempis11data.datatype=0;
|
||||
|
||||
let mut data1=FLAT_DATA.lock().unwrap();
|
||||
*data1=tempis11data;
|
||||
dev_stat.stat=WorkStat::IDLE;
|
||||
dev_stat.workname="finish".to_string();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
pub fn get_data()->IS11DataStruct{
|
||||
let data1=DATA_IS11.lock().unwrap();
|
||||
return data1.clone();
|
||||
}
|
||||
Reference in New Issue
Block a user