transmit-receive data working correct but with only one settings port
This commit is contained in:
parent
45f145ca2f
commit
120aaadbb9
35
src/main.rs
35
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();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user