Добавлена проверка введённых коэффициентов

master

@ -0,0 +1,5 @@
target/*
target/
output/*
output/
Cargo.lock

@ -3,4 +3,3 @@ H2_B = 0.0
H2_C = 1.0 H2_C = 1.0
H2_D = 0.0 H2_D = 0.0
HUMI_K = 1.0 HUMI_K = 1.0
HUMI_B = 0.0

@ -67,7 +67,8 @@ fn main() {
} else { } else {
println!("Нет доступных портов. Завершение работы . . ."); println!("Нет доступных портов. Завершение работы . . .");
} }
let mut input=String::new();
let _ = io::stdin().read_line(&mut input);
// let options = eframe::NativeOptions { // let options = eframe::NativeOptions {
// // Hide the OS-specific "chrome" around the window: // // Hide the OS-specific "chrome" around the window:
// decorated: true, // decorated: true,
@ -112,8 +113,8 @@ fn mb_port_loop() -> Result<ErrorKind> {
println!("Введите имя файла с коэффициентами:"); println!("Введите имя файла с коэффициентами:");
let mut path = String::new(); let mut path = String::new();
let _ = io::stdin().read_line(&mut path); let _ = io::stdin().read_line(&mut path);
println!("{:#?}", path); // println!("{:#?}", path);
let path = path.trim_end(); let path = path.trim_matches(|c| c == '\"' || c == '\r' || c=='\n');
let file = OpenOptions::new().read(true).open(&path); let file = OpenOptions::new().read(true).open(&path);
let file = match file { let file = match file {
Ok(file) => file, Ok(file) => file,
@ -236,7 +237,7 @@ fn mb_port_loop() -> Result<ErrorKind> {
.unwrap(); .unwrap();
let response = mb_trancieve(&mut port_wf, &request)?; let response = mb_trancieve(&mut port_wf, &request)?;
mb_req.parse_ok(&response).unwrap(); mb_req.parse_ok(&response).unwrap();
thread::sleep(Duration::from_millis(20)); thread::sleep(Duration::from_millis(200));
//Проверка ввода коэффициента //Проверка ввода коэффициента
mb_req mb_req
@ -267,7 +268,7 @@ fn mb_port_loop() -> Result<ErrorKind> {
.unwrap(); .unwrap();
let response = mb_trancieve(&mut port_wf, &request)?; let response = mb_trancieve(&mut port_wf, &request)?;
mb_req.parse_ok(&response).unwrap(); mb_req.parse_ok(&response).unwrap();
thread::sleep(Duration::from_millis(20)); thread::sleep(Duration::from_millis(100));
//Проверка ввода коэффициента //Проверка ввода коэффициента
mb_req mb_req
@ -299,15 +300,17 @@ fn mb_port_loop() -> Result<ErrorKind> {
mb_req.parse_ok(&response).unwrap(); mb_req.parse_ok(&response).unwrap();
let mut raw_str = Vec::new(); let mut raw_str = Vec::new();
mb_req.parse_u16(&response, &mut raw_str).unwrap(); mb_req.parse_u16(&response, &mut raw_str).unwrap();
println!("Name\t|STAT\t|OUTPUT\t\t|INPUT");
for i in (1..12).step_by(2) { for i in (1..12).step_by(2) {
let f = (raw_str[i] as u32) + (raw_str[i + 1] as u32) << 16; let int = (raw_str[i + 1] as u32) << 16 | (raw_str[i] as u32) ;
let f = unsafe { mem::transmute::<u32, f32>(f) }; let f = unsafe { mem::transmute::<u32, f32>(int) };
print!("{:#06X?}: ", coefs_cmds.cmd[i / 2]); let int2 = unsafe { mem::transmute::<f32, i32>(coefs_cmds.coef[i / 2]) };
if coefs_cmds.coef[i / 2] != f { // println!("{:#?}:\t",(coefs_cmds.coef[i / 2] - f).abs());
println!("ERR"); print!("{:#06X?}:\t", coefs_cmds.cmd[i / 2]);
if (coefs_cmds.coef[i / 2] - f).abs() > (1.0/131072.0) {
println!("ERR:\t{:#010X?} |\t{:#010X?}",int,int2);
} else { } else {
println!("OK") println!("OK");
} }
} }

Loading…
Cancel
Save