fix:修复日志bug;feat:增加unix适配

This commit is contained in:
lenn
2026-04-26 22:02:26 +08:00
parent ac2d40aa89
commit e5b869fda6
3 changed files with 255 additions and 194 deletions

View File

@@ -23,7 +23,6 @@ const DEFAULT_TACTILE_REPLY_TIMEOUT_MS: u64 = 140;
type SharedTactileRecording = Arc<Mutex<TactileARecording>>;
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SerialConnectResponse {
@@ -74,7 +73,7 @@ struct SerialSession {
#[derive(Default)]
pub struct SerialConnectionState {
session: Mutex<Option<SerialSession>>,
last_record: Mutex<Option<SharedTactileRecording>>
last_record: Mutex<Option<SharedTactileRecording>>,
}
pub async fn shutdown_active_session(
@@ -90,7 +89,8 @@ pub async fn shutdown_active_session(
cancel,
task,
current_record,
}) = session else {
}) = session
else {
return Ok(None);
};
@@ -116,7 +116,14 @@ pub fn serial_enum() -> Result<Vec<String>, SerialError> {
let ports = available_ports()
.map_err(|_| SerialError::ScanError)?
.into_iter()
.map(|info| info.port_name)
.filter_map(|p| {
let name = p.port_name;
#[cfg(unix)]
if !name.contains("USB") {
return None;
}
Some(name)
})
.collect();
Ok(ports)
@@ -210,7 +217,7 @@ pub async fn serial_connect(
port: port_name.clone(),
cancel,
task,
current_record
current_record,
});
Ok(SerialConnectResponse {
@@ -224,8 +231,7 @@ pub async fn serial_connect(
pub async fn serial_disconnect(
state: State<'_, SerialConnectionState>,
) -> Result<SerialConnectResponse, SerialError> {
let Some((port, _current_record)) = shutdown_active_session(&state).await?
else {
let Some((port, _current_record)) = shutdown_active_session(&state).await? else {
return Ok(SerialConnectResponse {
port: String::new(),
connected: false,
@@ -301,7 +307,10 @@ pub fn serial_export_csv_to_path(
}
#[tauri::command]
pub fn serial_import_csv(file_name: String, csv_content: String) -> Result<SerialImportResponse, SerialError> {
pub fn serial_import_csv(
file_name: String,
csv_content: String,
) -> Result<SerialImportResponse, SerialError> {
let mut importer = TactileACsvImporter::new(file_name.as_str());
let packets = importer
.load(Cursor::new(csv_content.into_bytes()))
@@ -358,7 +367,10 @@ fn resolve_record_for_export(
return Ok(recording);
}
let last_record = state.last_record.lock().map_err(|_| SerialError::StateError)?;
let last_record = state
.last_record
.lock()
.map_err(|_| SerialError::StateError)?;
last_record.clone().ok_or(SerialError::NoRecordedData)
}
@@ -379,7 +391,10 @@ fn snapshot_record_frame_count(
.map_err(|_| SerialError::StateError);
}
let last_record = state.last_record.lock().map_err(|_| SerialError::StateError)?;
let last_record = state
.last_record
.lock()
.map_err(|_| SerialError::StateError)?;
let Some(record) = last_record.as_ref() else {
return Ok(0);
};

View File

@@ -1,5 +1,8 @@
use fern::{Dispatch, colors::{Color, ColoredLevelConfig}};
use log::{debug};
use fern::{
colors::{Color, ColoredLevelConfig},
Dispatch,
};
use log::debug;
use std::time::SystemTime;
pub fn setup_logger() {
let colors_line = ColoredLevelConfig::new()
@@ -18,40 +21,36 @@ pub fn setup_logger() {
let console_config = fern::Dispatch::new()
.format(move |out, message, record| {
out.finish(
format_args!(
"{colors_line}[{data} {level} {target} {colors_line}] {message}\x1B[0m",
colors_line = format_args!(
"\x1B[{}m",
colors_line.get_color(&record.level()).to_fg_str()
),
data = humantime::format_rfc3339_seconds(SystemTime::now()),
target = record.target(),
level = colors_level.color(record.level()),
message = message,
)
);
out.finish(format_args!(
"{colors_line}[{data} {level} {target} {colors_line}] {message}\x1B[0m",
colors_line = format_args!(
"\x1B[{}m",
colors_line.get_color(&record.level()).to_fg_str()
),
data = humantime::format_rfc3339_seconds(SystemTime::now()),
target = record.target(),
level = colors_level.color(record.level()),
message = message,
));
})
.level(level)
.chain(std::io::stdout());
// .chain(fern::DateBased::new("program.log", "%Y-%m-%d"))
// .apply()
// .unwrap();
// .chain(fern::DateBased::new("program.log", "%Y-%m-%d"))
// .apply()
// .unwrap();
let log_path = std::env::temp_dir().join("program.log");
let file_config = fern::Dispatch::new()
.format(move |out, message, record| {
out.finish(
format_args!(
"[{data} {level} {target}] {message}",
data = humantime::format_rfc3339_seconds(SystemTime::now()),
target = record.target(),
level = colors_level.color(record.level()),
message = message,
)
);
out.finish(format_args!(
"[{data} {level} {target}] {message}",
data = humantime::format_rfc3339_seconds(SystemTime::now()),
target = record.target(),
level = colors_level.color(record.level()),
message = message,
));
})
.level(level)
.chain(fern::DateBased::new("program.log", "%Y-%m-%d"));
.chain(fern::DateBased::new(&log_path, "%Y-%m-%d"));
Dispatch::new()
.level(log::LevelFilter::Debug)