Inluded frequency selector at start.

This commit is contained in:
2025-08-18 14:50:50 +02:00
parent dba4d652f3
commit 9d6625e8fa
6 changed files with 33 additions and 22 deletions

View File

@@ -4,15 +4,15 @@ use std::sync::atomic::{AtomicBool, Ordering};
use atomic_float::AtomicF32;
use tokio::{sync::mpsc::{Sender}};
use eframe::egui::{self, Color32, DragValue, Key, Layout, Modifiers, };
use eframe::egui::{self, Color32, DragValue, Key, Label, Layout, Modifiers};
use egui_plot::{Corner, Legend, Line, Plot, PlotPoints, Points, PlotBounds};
use crate::plot::TimeSeriesPlot;
use crate::signals::FrequencySignal;
use crate::signals::SingleFrequencySignal;
pub struct App {
run_impedancemeter_tx: Sender<FrequencySignal>,
run_impedancemeter_tx: Sender<SingleFrequencySignal>,
pub magnitude: Arc<Mutex<f32>>,
pub phase: Arc<Mutex<f32>>,
pub magnitude_series: Arc<Mutex<TimeSeriesPlot>>,
@@ -20,10 +20,11 @@ pub struct App {
pub connected: Arc<AtomicBool>,
pub on: bool,
pub data_frequency: Arc<AtomicF32>,
pub single_frequency: u32
}
impl App {
pub fn new(run_impedancemeter_tx: Sender<FrequencySignal>) -> Self {
pub fn new(run_impedancemeter_tx: Sender<SingleFrequencySignal>) -> Self {
let app = App {
run_impedancemeter_tx,
magnitude: Arc::new(Mutex::new(0.0)),
@@ -33,6 +34,7 @@ impl App {
connected: Arc::new(AtomicBool::new(false)),
on: true,
data_frequency: Arc::new(AtomicF32::new(0.0)),
single_frequency: 50000,
};
app.update_start_stop();
app
@@ -41,12 +43,12 @@ impl App {
pub fn update_start_stop(&self) {
match self.on {
true => {
if let Err(e) = self.run_impedancemeter_tx.try_send(FrequencySignal::Start(0.0)) {
if let Err(e) = self.run_impedancemeter_tx.try_send(SingleFrequencySignal::Start(self.single_frequency)) {
eprintln!("Failed to send start command: {:?}", e);
}
},
false => {
if let Err(e) = self.run_impedancemeter_tx.try_send(FrequencySignal::Stop) {
if let Err(e) = self.run_impedancemeter_tx.try_send(SingleFrequencySignal::Stop) {
eprintln!("Failed to send stop command: {:?}", e);
}
},
@@ -68,6 +70,13 @@ impl eframe::App for App {
ui.separator();
ui.add_enabled_ui(!self.on, |ui| {
ui.add(DragValue::new(&mut self.single_frequency));
ui.add(Label::new("Hz"));
});
ui.separator();
if ui.add_enabled(connected, toggle_start_stop(&mut self.on)).changed() {
self.update_start_stop();
};