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(); 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(); ctx.request_repaint();
}} }}

View File

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

View File

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

View File

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

View File

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