diff --git a/src/main.rs b/src/main.rs index bd1a330..2e9da08 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,8 @@ -// use std::time::Duration; -// use std::{thread, time}; -// use serialport::{SerialPort, StopBits, Parity, FlowControl, DataBits}; -// use std::io::{self, Read, Write, BufWriter}; use regex::Regex; use rustyline::Editor; use rustyline::error::ReadlineError; -// use std::fs::OpenOptions; use std::io::{BufReader, BufRead, Write}; use std::net::{TcpListener, TcpStream}; -// use std::collections::HashMap; use clap::{Parser}; pub mod perf { @@ -170,6 +164,18 @@ pub mod uart_transact { } Ok(()) } + + fn log_cmd_data(&mut self, msg_cmd: &str, msg_data: &str) -> Result<(), io::Error> { + if self.log_flag == true { + writeln!(&mut self.out, "{} {};{:?};{:?}", + Perf::cur_time("%Y.%m.%d"), + Perf::cur_time("%H:%M:%S.%3f"), + msg_cmd.trim(), + msg_data.trim())?; + self.out.flush()?; + } + Ok(()) + } } pub struct UartTransact { @@ -184,6 +190,7 @@ pub mod uart_transact { save_cmd_flag: bool, data_writer: Logger, cmd_writer: Logger, + cmd_data_writer: Logger, } impl UartTransact { @@ -203,10 +210,13 @@ pub mod uart_transact { let data_writer = Logger::new(filename.clone(), save_data_flag)?; filename = format!("../log/commands_{}.log", Perf::cur_time("%Y%m%d")); let cmd_writer = Logger::new(filename.clone(), save_data_flag)?; + filename = format!("../log/cmd_data_{}.log", Perf::cur_time("%Y%m%d")); + let cmd_data_writer = Logger::new(filename.clone(), save_data_flag)?; let mut port = Self::set_port_settings(port_name, port_settings.clone()).unwrap(); + println!("{:#?}", port); let tx_packet = String::new(); let rx_packet = String::new(); @@ -217,6 +227,7 @@ pub mod uart_transact { save_cmd_flag, data_writer, cmd_writer, + cmd_data_writer, port, tx_packet, rx_packet, @@ -245,10 +256,6 @@ pub mod uart_transact { self.port.flush().unwrap(); - // let mut buffer = [0u8; 4096]; - // self.port.read(&mut buffer); - // let s = std::str::from_utf8(&buffer).unwrap().to_string(); - let mut reader = BufReader::new(&mut self.port); let mut s = String::new(); if let Err(err) = reader.read_line(&mut s) { @@ -259,6 +266,7 @@ pub mod uart_transact { if s.len() > 0 { self.rx_packet = s.clone(); self.data_writer.log(&s).unwrap(); + self.cmd_data_writer.log_cmd_data(&self.tx_packet, &s).unwrap(); } } Ok(()) @@ -364,9 +372,10 @@ fn uart_cmd_interp(cmd: &str) -> String { if args_cnt != 3 { return format!("Error while parse command! {}", "arguments count must be 2"); } else { let port_name = &args[1]; - // let mut perf = Perf::new(); // perf.start(); + + println!("port_set: {:#?}", port_set); let mut uart_trans = UartTransact::new(trans_type, port_name, port_set, save_data_flag, save_cmd_flag).unwrap(); @@ -374,6 +383,7 @@ fn uart_cmd_interp(cmd: &str) -> String { let mut data_out = args[2].clone(); data_out.push_str(std::str::from_utf8(b"\x0D\x0A").unwrap()); // CR + LF + println!("data out: {:?}", data_out); uart_trans.add_packet_for_tx(data_out.clone(), data_out.len() as u32).unwrap(); uart_trans.start_transact().unwrap(); @@ -399,7 +409,8 @@ fn uart_cmd_interp(cmd: &str) -> String { port_set = PortSettingsT::new(speed, data_bits, parity, stop_bits, flow_ctrl, timeout).unwrap(); - + + println!("port_set: {:#?}", port_set); let uart_trans = UartTransact::new(trans_type, &port_name, port_set.clone(), save_data_flag, save_cmd_flag).unwrap();