Skip to main content

nanonis_rs/client/
auto_approach.rs

1use super::NanonisClient;
2use crate::error::NanonisError;
3use crate::types::NanonisValue;
4
5impl NanonisClient {
6    /// Open the Auto-Approach module
7    pub fn auto_approach_open(&mut self) -> Result<(), NanonisError> {
8        self.quick_send("AutoApproach.Open", vec![], vec![], vec![])?;
9        Ok(())
10    }
11
12    /// Start or stop the Z auto-approach procedure
13    pub fn auto_approach_on_off_set(&mut self, on_off: bool) -> Result<(), NanonisError> {
14        let value = if on_off { 1u16 } else { 0u16 };
15        self.quick_send(
16            "AutoApproach.OnOffSet",
17            vec![NanonisValue::U16(value)],
18            vec!["H"],
19            vec![],
20        )?;
21        Ok(())
22    }
23
24    /// Get the on-off status of the Z auto-approach procedure
25    pub fn auto_approach_on_off_get(&mut self) -> Result<bool, NanonisError> {
26        let result = self.quick_send("AutoApproach.OnOffGet", vec![], vec![], vec!["H"])?;
27        match result.first() {
28            Some(value) => {
29                let status = value.as_u16()?;
30                Ok(status == 1)
31            }
32            None => Err(NanonisError::Protocol(
33                "No auto-approach status returned".to_string(),
34            )),
35        }
36    }
37}