BioImager  4.9.0
A .NET microscopy imaging application based on Bio library. Supports various microscopes by using imported libraries & GUI automation. Supports XInput game controllers to move stage, take images, run ImageJ macros on images or Bio C# scripts.
Loading...
Searching...
No Matches
microscope.lights.cobolt.CoboltLaser Class Reference
Inheritance diagram for microscope.lights.cobolt.CoboltLaser:
microscope._utils.OnlyTriggersBulbOnSoftwareMixin microscope.abc.SerialDeviceMixin microscope.abc.LightSource microscope.abc.TriggerTargetMixin microscope.abc.TriggerTargetMixin microscope.abc.Device

Public Member Functions

 __init__ (self, com=None, baud=115200, timeout=0.1, **kwargs)
 
 send (self, command)
 
 clearFault (self)
 
 get_status (self)
 
 initialize (self)
 
 disable (self)
 
 get_is_on (self)
 
- Public Member Functions inherited from microscope._utils.OnlyTriggersBulbOnSoftwareMixin
microscope.TriggerType trigger_type (self)
 
microscope.TriggerMode trigger_mode (self)
 
None set_trigger (self, microscope.TriggerType ttype, microscope.TriggerMode tmode)
 
- Public Member Functions inherited from microscope.abc.TriggerTargetMixin
None trigger (self)
 
- Public Member Functions inherited from microscope.abc.SerialDeviceMixin
- Public Member Functions inherited from microscope.abc.LightSource
float power (self)
 
None power (self, float power)
 
float get_set_power (self)
 
- Public Member Functions inherited from microscope.abc.Device
None __del__ (self)
 
bool get_is_enabled (self)
 
None enable (self)
 
None shutdown (self)
 
None add_setting (self, name, dtype, get_func, set_func, values, typing.Optional[typing.Callable[[], bool]] readonly=None)
 
 get_setting (self, str name)
 
 get_all_settings (self)
 
None set_setting (self, str name, value)
 
 describe_setting (self, str name)
 
 describe_settings (self)
 
 update_settings (self, incoming, bool init=False)
 

Public Attributes

 connection
 
- Public Attributes inherited from microscope.abc.SerialDeviceMixin
 connection = None
 
- Public Attributes inherited from microscope.abc.Device
bool enabled = False
 

Protected Member Functions

None _do_shutdown (self)
 
 _do_enable (self)
 
float _get_power_mw (self)
 
None _set_power_mw (self, float mW)
 
None _do_set_power (self, float power)
 
float _do_get_power (self)
 
- Protected Member Functions inherited from microscope._utils.OnlyTriggersBulbOnSoftwareMixin
None _do_trigger (self)
 
- Protected Member Functions inherited from microscope.abc.TriggerTargetMixin
- Protected Member Functions inherited from microscope.abc.SerialDeviceMixin
bytes _readline (self)
 
int _write (self, bytes command)
 
- Protected Member Functions inherited from microscope.abc.LightSource
- Protected Member Functions inherited from microscope.abc.Device
 _do_disable (self)
 

Protected Attributes

 _max_power_mw = float(self.send(b"gmlp?"))
 
- Protected Attributes inherited from microscope.abc.SerialDeviceMixin
 _comms_lock = threading.RLock()
 
- Protected Attributes inherited from microscope.abc.LightSource
float _set_point = 0.0
 
- Protected Attributes inherited from microscope.abc.Device
dict _settings = {}
 

Additional Inherited Members

- Static Public Member Functions inherited from microscope.abc.SerialDeviceMixin
 lock_comms (func)
 

Detailed Description

Cobolt lasers.

The cobolt lasers are diode pumped lasers and only supports
`TriggerMode.SOFTWARE` (this is probably not completely true, some
cobolt lasers are probably not diode pumped and those should be
able to support other trigger modes, but we only got access to the
04 series).

Definition at line 32 of file cobolt.py.

Constructor & Destructor Documentation

◆ __init__()

microscope.lights.cobolt.CoboltLaser.__init__ ( self,
com = None,
baud = 115200,
timeout = 0.1,
** kwargs )

Reimplemented from microscope.abc.SerialDeviceMixin.

Definition at line 47 of file cobolt.py.

47 def __init__(self, com=None, baud=115200, timeout=0.1, **kwargs):
48 super().__init__(**kwargs)
49 self.connection = serial.Serial(
50 port=com,
51 baudrate=baud,
52 timeout=timeout,
53 stopbits=serial.STOPBITS_ONE,
54 bytesize=serial.EIGHTBITS,
55 parity=serial.PARITY_NONE,
56 )
57 # Start a logger.
58 response = self.send(b"sn?")
59 _logger.info("Cobolt laser serial number: [%s]", response.decode())
60 # We need to ensure that autostart is disabled so that we can switch emission
61 # on/off remotely.
62 response = self.send(b"@cobas 0")
63 _logger.info("Response to @cobas 0 [%s]", response.decode())
64
65 self._max_power_mw = float(self.send(b"gmlp?"))
66
67 self.initialize()
68

Member Function Documentation

◆ _do_enable()

microscope.lights.cobolt.CoboltLaser._do_enable ( self)
protected
Do any device specific work on enable.

Subclasses should override this method, rather than modify
`enable`.

Reimplemented from microscope.abc.Device.

Definition at line 119 of file cobolt.py.

119 def _do_enable(self):
120 _logger.info("Turning laser ON.")
121 # Turn on emission.
122 response = self.send(b"l1")
123 _logger.info("l1: [%s]", response.decode())
124
125 if not self.get_is_on():
126 # Something went wrong.
127 _logger.error("Failed to turn on. Current status:\r\n")
128 _logger.error(self.get_status())
129 return False
130 return True
131

◆ _do_get_power()

float microscope.lights.cobolt.CoboltLaser._do_get_power ( self)
protected
Internal function that actually returns the light source power.

Reimplemented from microscope.abc.LightSource.

Definition at line 167 of file cobolt.py.

167 def _do_get_power(self) -> float:
168 return self._get_power_mw() / self._max_power_mw

◆ _do_set_power()

None microscope.lights.cobolt.CoboltLaser._do_set_power ( self,
float power )
protected
Internal function that actually sets the light source power.

This function will be called by the `power` attribute setter
after clipping the argument to the [0, 1] interval.

Reimplemented from microscope.abc.LightSource.

Definition at line 164 of file cobolt.py.

164 def _do_set_power(self, power: float) -> None:
165 self._set_power_mw(power * self._max_power_mw)
166

◆ _do_shutdown()

None microscope.lights.cobolt.CoboltLaser._do_shutdown ( self)
protected
Private method - actual shutdown of the device.

Users should be calling :meth:`shutdown` and not this method.
Concrete implementations should implement this method instead
of `shutdown`.

Reimplemented from microscope.abc.Device.

Definition at line 102 of file cobolt.py.

102 def _do_shutdown(self) -> None:
103 # Disable laser.
104 self.disable()
105 self.send(b"@cob0")
106 self.connection.flushInput()
107

◆ _get_power_mw()

float microscope.lights.cobolt.CoboltLaser._get_power_mw ( self)
protected

Definition at line 145 of file cobolt.py.

145 def _get_power_mw(self) -> float:
146 if not self.get_is_on():
147 return 0.0
148 success = False
149 # Sometimes the controller returns b'1' rather than the power.
150 while not success:
151 response = self.send(b"pa?")
152 if response != b"1":
153 success = True
154 return 1000 * float(response)
155

◆ _set_power_mw()

None microscope.lights.cobolt.CoboltLaser._set_power_mw ( self,
float mW )
protected

Definition at line 157 of file cobolt.py.

157 def _set_power_mw(self, mW: float) -> None:
158 # There is no minimum power in cobolt lasers. Any
159 # non-negative number is accepted.
160 W_str = "%.4f" % (mW / 1000.0)
161 _logger.info("Setting laser power to %s W.", W_str)
162 return self.send(b"@cobasp " + W_str.encode())
163

◆ clearFault()

microscope.lights.cobolt.CoboltLaser.clearFault ( self)

Definition at line 83 of file cobolt.py.

83 def clearFault(self):
84 self.send(b"cf")
85 return self.get_status()
86

◆ disable()

microscope.lights.cobolt.CoboltLaser.disable ( self)
Disable the device for a short period for inactivity.

Reimplemented from microscope.abc.Device.

Definition at line 134 of file cobolt.py.

134 def disable(self):
135 _logger.info("Turning laser OFF.")
136 return self.send(b"l0").decode()
137

◆ get_is_on()

microscope.lights.cobolt.CoboltLaser.get_is_on ( self)
Return True if the light source is currently able to produce light.

Reimplemented from microscope.abc.LightSource.

Definition at line 140 of file cobolt.py.

140 def get_is_on(self):
141 response = self.send(b"l?")
142 return response == b"1"
143

◆ get_status()

microscope.lights.cobolt.CoboltLaser.get_status ( self)
Query and return the light source status.

Reimplemented from microscope.abc.LightSource.

Definition at line 88 of file cobolt.py.

88 def get_status(self):
89 result = []
90 for cmd, stat in [
91 (b"l?", "Emission on?"),
92 (b"p?", "Target power:"),
93 (b"pa?", "Measured power:"),
94 (b"f?", "Fault?"),
95 (b"hrs?", "Head operating hours:"),
96 ]:
97 response = self.send(cmd)
98 result.append(stat + " " + response.decode())
99 return result
100

◆ initialize()

microscope.lights.cobolt.CoboltLaser.initialize ( self)
Initialize the device.

If devices have this method (not required, and many don't),
then they should call it as part of the initialisation, i.e.,
they should call it on their `__init__` method.

Reimplemented from microscope.abc.Device.

Definition at line 110 of file cobolt.py.

110 def initialize(self):
111 self.connection.flushInput()
112 # We don't want 'direct control' mode.
113 self.send(b"@cobasdr 0")
114 # Force laser into autostart mode.
115 self.send(b"@cob1")
116

◆ send()

microscope.lights.cobolt.CoboltLaser.send ( self,
command )
Send command and retrieve response.

Definition at line 69 of file cobolt.py.

69 def send(self, command):
70 """Send command and retrieve response."""
71 success = False
72 while not success:
73 self._write(command)
74 response = self._readline()
75 # Catch zero-length responses to queries and retry.
76 if not command.endswith(b"?"):
77 success = True
78 elif len(response) > 0:
79 success = True
80 return response
81

Member Data Documentation

◆ _max_power_mw

microscope.lights.cobolt.CoboltLaser._max_power_mw = float(self.send(b"gmlp?"))
protected

Definition at line 65 of file cobolt.py.

◆ connection

microscope.lights.cobolt.CoboltLaser.connection
Initial value:
= serial.Serial(
port=com,
baudrate=baud,
timeout=timeout,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
)

Definition at line 49 of file cobolt.py.


The documentation for this class was generated from the following file: