Skip to main content

nanonis_rs/client/
laser.rs

1use super::NanonisClient;
2use crate::error::NanonisError;
3use crate::types::NanonisValue;
4
5impl NanonisClient {
6    // ==================== Laser ====================
7
8    /// Switch the laser on or off.
9    ///
10    /// # Arguments
11    /// * `on` - True to enable, false to disable
12    ///
13    /// # Errors
14    /// Returns `NanonisError` if communication fails.
15    pub fn laser_on_off_set(&mut self, on: bool) -> Result<(), NanonisError> {
16        self.quick_send(
17            "Laser.OnOffSet",
18            vec![NanonisValue::U32(if on { 1 } else { 0 })],
19            vec!["I"],
20            vec![],
21        )?;
22        Ok(())
23    }
24
25    /// Get the laser status.
26    ///
27    /// # Returns
28    /// True if laser is on.
29    ///
30    /// # Errors
31    /// Returns `NanonisError` if communication fails.
32    pub fn laser_on_off_get(&mut self) -> Result<bool, NanonisError> {
33        let result = self.quick_send("Laser.OnOffGet", vec![], vec![], vec!["I"])?;
34
35        Ok(result[0].as_u32()? != 0)
36    }
37
38    /// Set the laser setpoint.
39    ///
40    /// # Arguments
41    /// * `setpoint` - Laser setpoint value
42    ///
43    /// # Errors
44    /// Returns `NanonisError` if communication fails.
45    pub fn laser_props_set(&mut self, setpoint: f32) -> Result<(), NanonisError> {
46        self.quick_send(
47            "Laser.PropsSet",
48            vec![NanonisValue::F32(setpoint)],
49            vec!["f"],
50            vec![],
51        )?;
52        Ok(())
53    }
54
55    /// Get the laser setpoint.
56    ///
57    /// # Returns
58    /// Laser setpoint value.
59    ///
60    /// # Errors
61    /// Returns `NanonisError` if communication fails.
62    pub fn laser_props_get(&mut self) -> Result<f32, NanonisError> {
63        let result = self.quick_send("Laser.PropsGet", vec![], vec![], vec!["f"])?;
64
65        result[0].as_f32()
66    }
67
68    /// Get the current laser power.
69    ///
70    /// # Returns
71    /// Laser power value.
72    ///
73    /// # Errors
74    /// Returns `NanonisError` if communication fails.
75    pub fn laser_power_get(&mut self) -> Result<f32, NanonisError> {
76        let result = self.quick_send("Laser.PowerGet", vec![], vec![], vec!["f"])?;
77
78        result[0].as_f32()
79    }
80}