Added restart settings.

This commit is contained in:
2025-08-15 09:52:56 +02:00
parent ea1d13012e
commit 5537a991d3
5 changed files with 23 additions and 2 deletions

View File

@@ -172,6 +172,12 @@ impl eframe::App for App {
self.update_start_stop();
}
// Send stop command when the window is closed
if ctx.input(|i| i.viewport().close_requested()) {
self.on = false;
self.update_start_stop();
}
ctx.request_repaint();
}}

View File

@@ -21,6 +21,7 @@ fn main() {
// let _enter = rt.enter();
let (run_impedancemeter_tx, run_impedancemeter_rx) = mpsc::channel::<FrequencySignal>(2);
let run_impedancemeter_tx_clone = run_impedancemeter_tx.clone();
let app = App::new(run_impedancemeter_tx);
let magnitude_clone = app.magnitude.clone();
@@ -33,6 +34,7 @@ fn main() {
std::thread::spawn(move || {
rt.block_on(communicate_with_hardware(
run_impedancemeter_rx,
run_impedancemeter_tx_clone,
magnitude_clone,
phase_clone,
magnitude_series_clone,

View File

@@ -1,7 +1,7 @@
use log::{error, info};
use tokio::select;
use tokio::sync::mpsc::Receiver;
use tokio::sync::mpsc::{Sender, Receiver};
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::{Arc, Mutex};
@@ -15,16 +15,26 @@ use crate::signals::FrequencySignal;
pub async fn communicate_with_hardware(
mut run_impedancemeter_rx: Receiver<FrequencySignal>,
run_impedancemeter_tx: Sender<FrequencySignal>,
magnitude: Arc<Mutex<f32>>,
phase: Arc<Mutex<f32>>,
magnitude_series: Arc<Mutex<TimeSeriesPlot>>,
phase_series: Arc<Mutex<TimeSeriesPlot>>,
connected: Arc<AtomicBool>,
) {
#[derive(Default)]
struct Settings {
frequency: Option<FrequencySignal>,
}
let mut settings = Settings::default();
loop {
let workbook_client = match WorkbookClient::new() {
Ok(client) => {
info!("Connected to hardware successfully.");
if let Some(frequency) = settings.frequency {
run_impedancemeter_tx.send(frequency).await.unwrap();
}
connected.store(true, Ordering::Relaxed);
client
},
@@ -68,6 +78,7 @@ pub async fn communicate_with_hardware(
if let Err(e) = workbook_client.start_impedancemeter(freq).await {
error!("Failed to start impedancemeter: {:?}", e);
} else {
settings.frequency = Some(FrequencySignal::Start(freq));
info!("Impedancemeter started at frequency: {}", freq);
}
},
@@ -75,6 +86,7 @@ pub async fn communicate_with_hardware(
if let Err(e) = workbook_client.stop_impedancemeter().await {
error!("Failed to stop impedancemeter: {:?}", e);
} else {
settings.frequency = Some(FrequencySignal::Stop);
info!("Impedancemeter stopped.");
}
},

View File

@@ -9,7 +9,7 @@ pub struct TimeSeriesPlot {
impl TimeSeriesPlot {
pub fn new() -> Self {
let max_points = 2000;
let max_points = 100;
Self {
values: (0..max_points as i32)
.map(|i| PlotPoint::new(i, 0.0))

View File

@@ -1,3 +1,4 @@
#[derive(Copy, Clone)]
pub enum FrequencySignal {
Start(f32),
Stop,