Started work on output pll settings

This commit is contained in:
Sebastian 2023-12-25 01:24:56 +01:00
parent be45b12b5a
commit 3ca1f112e7
2 changed files with 116 additions and 59 deletions

View File

@ -7,13 +7,15 @@ use std::time::Duration;
use crossbeam_channel::{select, unbounded, Receiver, Sender};
use eframe::egui;
use egui_plot::{Line, Plot, PlotPoints};
use eframe::egui::{self, RichText};
use cheapsdo_protocol::*;
use postcard::{from_bytes_cobs, to_stdvec_cobs};
mod formatters;
mod plots;
fn main() -> Result<(), eframe::Error> {
let options = eframe::NativeOptions {
@ -146,66 +148,56 @@ impl eframe::App for CheapsdoControl {
ui.separator();
ui.horizontal(|ui| {
ui.label(
egui::RichText::new(format!(
"Measured: {}",
formatters::frequency(
self.device_state.measured_frequency as f64 / 1_000_000_000.0
)
))
.family(egui::FontFamily::Monospace)
.size(20.0),
);
ui.vertical(|ui| {
ui.vertical(|ui| ui.label(egui::RichText::new("TCXO Status").size(20.0)));
ui.add_space(20.0);
plots::show_freuqencies(ui, &self.device_state);
ui.add_space(20.0);
plots::show_plots(ui, &self.average_points, &self.pwm_points);
});
ui.add_space(100.0);
ui.separator();
ui.label(
egui::RichText::new(format!(
"Average: {}",
formatters::frequency(
self.device_state.average_frequency as f64 / 1_000_000_000.0
)
))
.family(egui::FontFamily::Monospace)
.size(20.0),
);
ui.vertical(|ui| {
ui.label(egui::RichText::new("Output Settings").size(20.0));
ui.add_space(20.0);
let mut my_string = String::new();
#[derive(PartialEq)]
enum Enum {
First,
Second,
}
let mut my_enum = Enum::First;
egui::Grid::new("output_pll_settings")
.spacing([20.0, 5.0])
.show(ui, |ui| {
ui.label("CLK1 Multisynth");
ui.horizontal(|ui| {
ui.selectable_value(&mut my_enum, Enum::First, "MS1");
ui.selectable_value(&mut my_enum, Enum::Second, "MS2");
});
ui.end_row();
ui.label("CLK1 Frequency [Hz]");
ui.add_sized([200.0, 20.0], egui::TextEdit::singleline(&mut my_string));
ui.end_row();
ui.label("CLK1 Enable");
ui.horizontal(|ui| {
ui.add(egui::Button::new(
RichText::new("On").color(egui::Color32::GREEN),
));
ui.add(egui::Button::new(
RichText::new("Off").color(egui::Color32::RED),
));
});
ui.end_row();
});
});
});
ui.add_space(20.0);
let average_line = Line::new(PlotPoints::new(self.average_points.clone()));
//let measured_line = Line::new(PlotPoints::new(self.measured_points.clone()));
Plot::new("frequency_plot")
.view_aspect(4.0)
.allow_zoom(false)
.allow_scroll(false)
.allow_drag(false)
.allow_boxed_zoom(false)
.y_axis_width(12)
.y_axis_formatter(|val, _, _| formatters::frequency(val))
.label_formatter(|name, value| {
format!("{}: {}", name, formatters::frequency(value.y))
})
.show(ui, |plot_ui| {
plot_ui.set_auto_bounds([true, true].into());
plot_ui.line(average_line);
//plot_ui.line(measured_line);
});
ui.add_space(20.0);
let pwm_line = Line::new(PlotPoints::new(self.pwm_points.clone()));
Plot::new("pwm_plot")
.view_aspect(4.0)
.allow_zoom(false)
.allow_scroll(false)
.allow_drag(false)
.allow_boxed_zoom(false)
.y_axis_width(12)
.show(ui, |plot_ui| {
plot_ui.set_auto_bounds([true, true].into());
plot_ui.line(pwm_line);
});
});
}
}

65
hostsoftware/src/plots.rs Normal file
View File

@ -0,0 +1,65 @@
use eframe::egui;
use egui_plot::{Line, Plot, PlotPoints};
use crate::{formatters};
use crate::StatusMessage;
pub fn show_freuqencies(ui: &mut egui::Ui, state: &StatusMessage) {
ui.horizontal(|ui| {
ui.label(
egui::RichText::new(format!(
"Measured: {}",
formatters::frequency(state.measured_frequency as f64/ 1_000_000_000.0)
))
.family(egui::FontFamily::Monospace)
.size(20.0),
);
ui.add_space(100.0);
ui.label(
egui::RichText::new(format!(
"Average: {}",
formatters::frequency(state.average_frequency as f64 / 1_000_000_000.0)
))
.family(egui::FontFamily::Monospace)
.size(20.0),
);
});
}
pub fn show_plots(ui: &mut egui::Ui, average_points: &Vec<[f64; 2]>, pwm_points: &Vec<[f64; 2]>) {
let average_line = Line::new(PlotPoints::new(average_points.clone()));
Plot::new("frequency_plot")
.width(900.0)
.view_aspect(3.0)
.allow_zoom(false)
.allow_scroll(false)
.allow_drag(false)
.allow_boxed_zoom(false)
.y_axis_width(12)
.y_axis_formatter(|val, _, _| formatters::frequency(val))
.label_formatter(|name, value| format!("{}: {}", name, formatters::frequency(value.y)))
.show(ui, |plot_ui| {
plot_ui.set_auto_bounds([true, true].into());
plot_ui.line(average_line);
//plot_ui.line(measured_line);
});
ui.add_space(20.0);
let pwm_line = Line::new(PlotPoints::new(pwm_points.clone()));
Plot::new("pwm_plot")
.width(900.0)
.view_aspect(3.0)
.allow_zoom(false)
.allow_scroll(false)
.allow_drag(false)
.allow_boxed_zoom(false)
.y_axis_width(12)
.show(ui, |plot_ui| {
plot_ui.set_auto_bounds([true, true].into());
plot_ui.line(pwm_line);
});
}