Source code for device.langmuir_motors
from . import base
[docs]
class LangmuirMotors(base.ArduinoMotorsBase):
def __init__(self, calibfile, buses=None, limits_enabled=True, **kwargs):
super().__init__(calibfile, buses, limits_enabled, **kwargs)
self._valve_open = False
# ==== Inherited abstract methods ====
def _connect(self):
if super()._connect():
self._valve_open = False
return True
else:
return False
def _disconnect(self):
self.close_valve()
return super()._disconnect()
# ==== Private commands ====
@base.base_command
def _toggle_valve(self):
self._ardu["T"].write(b"v") # Toggle valve state
if self._read_serial("T") == "":
raise base.TransmissionError("Expected a response (action 'v')")
self._valve_open = not self._valve_open
# ==== Commands ====
[docs]
def is_valve_open(self):
"""Return the state of the valve."""
return self._valve_open
[docs]
@base.base_command
def open_valve(self):
"""Open valve (if not open)."""
if not self.is_valve_open():
self._toggle_valve()
[docs]
@base.base_command
def close_valve(self):
"""Close valve (if not closed)."""
if self.is_valve_open():
self._toggle_valve()