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 regex::Regex;
|
||||||
use rustyline::Editor;
|
use rustyline::Editor;
|
||||||
use rustyline::error::ReadlineError;
|
use rustyline::error::ReadlineError;
|
||||||
// use std::fs::OpenOptions;
|
|
||||||
use std::io::{BufReader, BufRead, Write};
|
use std::io::{BufReader, BufRead, Write};
|
||||||
use std::net::{TcpListener, TcpStream};
|
use std::net::{TcpListener, TcpStream};
|
||||||
// use std::collections::HashMap;
|
|
||||||
use clap::{Parser};
|
use clap::{Parser};
|
||||||
|
|
||||||
pub mod perf {
|
pub mod perf {
|
||||||
@ -170,6 +164,18 @@ pub mod uart_transact {
|
|||||||
}
|
}
|
||||||
Ok(())
|
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 {
|
pub struct UartTransact {
|
||||||
@ -184,6 +190,7 @@ pub mod uart_transact {
|
|||||||
save_cmd_flag: bool,
|
save_cmd_flag: bool,
|
||||||
data_writer: Logger,
|
data_writer: Logger,
|
||||||
cmd_writer: Logger,
|
cmd_writer: Logger,
|
||||||
|
cmd_data_writer: Logger,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UartTransact {
|
impl UartTransact {
|
||||||
@ -203,10 +210,13 @@ pub mod uart_transact {
|
|||||||
let data_writer = Logger::new(filename.clone(), save_data_flag)?;
|
let data_writer = Logger::new(filename.clone(), save_data_flag)?;
|
||||||
filename = format!("../log/commands_{}.log", Perf::cur_time("%Y%m%d"));
|
filename = format!("../log/commands_{}.log", Perf::cur_time("%Y%m%d"));
|
||||||
let cmd_writer = Logger::new(filename.clone(), save_data_flag)?;
|
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,
|
let mut port = Self::set_port_settings(port_name,
|
||||||
port_settings.clone()).unwrap();
|
port_settings.clone()).unwrap();
|
||||||
|
|
||||||
|
println!("{:#?}", port);
|
||||||
let tx_packet = String::new();
|
let tx_packet = String::new();
|
||||||
let rx_packet = String::new();
|
let rx_packet = String::new();
|
||||||
|
|
||||||
@ -217,6 +227,7 @@ pub mod uart_transact {
|
|||||||
save_cmd_flag,
|
save_cmd_flag,
|
||||||
data_writer,
|
data_writer,
|
||||||
cmd_writer,
|
cmd_writer,
|
||||||
|
cmd_data_writer,
|
||||||
port,
|
port,
|
||||||
tx_packet,
|
tx_packet,
|
||||||
rx_packet,
|
rx_packet,
|
||||||
@ -245,10 +256,6 @@ pub mod uart_transact {
|
|||||||
|
|
||||||
self.port.flush().unwrap();
|
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 reader = BufReader::new(&mut self.port);
|
||||||
let mut s = String::new();
|
let mut s = String::new();
|
||||||
if let Err(err) = reader.read_line(&mut s) {
|
if let Err(err) = reader.read_line(&mut s) {
|
||||||
@ -259,6 +266,7 @@ pub mod uart_transact {
|
|||||||
if s.len() > 0 {
|
if s.len() > 0 {
|
||||||
self.rx_packet = s.clone();
|
self.rx_packet = s.clone();
|
||||||
self.data_writer.log(&s).unwrap();
|
self.data_writer.log(&s).unwrap();
|
||||||
|
self.cmd_data_writer.log_cmd_data(&self.tx_packet, &s).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
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"); }
|
if args_cnt != 3 { return format!("Error while parse command! {}", "arguments count must be 2"); }
|
||||||
else {
|
else {
|
||||||
let port_name = &args[1];
|
let port_name = &args[1];
|
||||||
|
|
||||||
// let mut perf = Perf::new();
|
// let mut perf = Perf::new();
|
||||||
// perf.start();
|
// perf.start();
|
||||||
|
|
||||||
|
println!("port_set: {:#?}", port_set);
|
||||||
let mut uart_trans = UartTransact::new(trans_type, port_name,
|
let mut uart_trans = UartTransact::new(trans_type, port_name,
|
||||||
port_set, save_data_flag, save_cmd_flag).unwrap();
|
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();
|
let mut data_out = args[2].clone();
|
||||||
data_out.push_str(std::str::from_utf8(b"\x0D\x0A").unwrap()); // CR + LF
|
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.add_packet_for_tx(data_out.clone(), data_out.len() as u32).unwrap();
|
||||||
uart_trans.start_transact().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,
|
port_set = PortSettingsT::new(speed, data_bits, parity, stop_bits,
|
||||||
flow_ctrl, timeout).unwrap();
|
flow_ctrl, timeout).unwrap();
|
||||||
|
|
||||||
|
println!("port_set: {:#?}", port_set);
|
||||||
let uart_trans = UartTransact::new(trans_type, &port_name,
|
let uart_trans = UartTransact::new(trans_type, &port_name,
|
||||||
port_set.clone(), save_data_flag, save_cmd_flag).unwrap();
|
port_set.clone(), save_data_flag, save_cmd_flag).unwrap();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user