test_stable_signal/
test_stable_signal.rs

1use rusty_tip::{stability, ActionDriver};
2use std::{error::Error, time::Duration};
3
4fn main() -> Result<(), Box<dyn Error>> {
5    let mut driver = ActionDriver::new("127.0.0.1", 6501)?;
6
7    let _freq_shift = rusty_tip::SignalIndex(76);
8
9    let z_pos = rusty_tip::SignalIndex(30);
10
11    driver.execute(rusty_tip::Action::Withdraw {
12        wait_until_finished: true,
13        timeout: Duration::from_secs(5),
14    })?;
15
16    driver.execute(rusty_tip::Action::AutoApproach {
17        wait_until_finished: true,
18        timeout: Duration::from_secs(300),
19    })?;
20
21    if let Some(osci_data) = driver.read_oscilloscope_with_stability(
22        z_pos,
23        // Some(TriggerConfig::new(
24        //     rusty_tip::types::OsciTriggerMode::Level,
25        //     rusty_tip::TriggerSlope::Falling,
26        //     49.0e-12,
27        //     0.0,
28        // )),
29        None,
30        rusty_tip::types::DataToGet::Stable {
31            readings: 1,
32            timeout: Duration::from_secs(2),
33        },
34        stability::trend_analysis_stability,
35    )? {
36        // Use the new plotting function - much cleaner!
37        rusty_tip::plot_values(&osci_data.data, Some("Z-Position Oscilloscope Data"), None, None)?;
38
39        let is_stable = stability::trend_analysis_stability(&osci_data.data);
40        println!("Stability result: {}", is_stable);
41    };
42
43    Ok(())
44}