Source code for src.instruments.noauto.oxford_valve

"""Controller for an oxford valve."""

from src.instruments.noauto.oxford_common import OxfordCommon

[docs]class OxfordValve (OxfordCommon): """This is a class to perform actions common to most Oxford Instruments devices, including the ITC503, the PS120, and the IPS120. Parameters ---------- name : str A name to identify the instrument protocol : {'ISOBUS', 'GPIB', 'Serial', 'Gateway Master', 'Gateway Slave'} The protocol for communication between the computer and the power supply. isobusAddress : str An integer string representing the ISOBUS address, if relevant. An integer will be accepted and converted. visaAddress : str A full VISA resource address (including the bus) to locate the instrument (e.g. "GPIB0::27"). serialConfig : dict A dictionary to indicate how to configure a serial port, which is used with both the 'ISOBUS' and 'Serial' protocols. normallyClosed : bool Whether the valve is normally closed. `False` means the valve is normally open. Methods ------- openCommunication() Open a new (protocol-specific) communication channel between the computer and the instrument, initializing initializing the ports and sending device clears as appropriate. closeCommunication() Close the communication channel between the computer and the instrument, freeing reserved resources. communicate(command) Send a command (str) to the instrument and read its response. """ def __init__(self, name='Valve', protocol='ISOBUS', isobusAddress='0', visaAddress='GPIB0::23', serialConfig=None, present=True, normallyClosed=True, channel='1'): super(OxfordValve, self).__init__(name, protocol, isobusAddress, visaAddress, serialConfig) self._present = present self._channel = '%d' % int(channel) if normallyClosed: self._openCommand = 'S' + self._channel + '1' self._closeCommand = 'S' + self._channel + '0' self._openCondition = '1' else: self._openCommand = 'S' + self._channel + '0' self._closeCommand = 'S' + self._channel + '1' self._openCondition = '0' self._normallyClosed = normallyClosed
[docs] def openValve(self): """Open the valve.""" self.communicate(self._openCommand)
[docs] def closeValve(self): """Close the valve.""" self.communicate(self._closeCommand)
[docs] def getOpen(self): """Return whether the valve is open. Returns ------- bool `True` if the valve is open, or `False` if it is closed. """ return self.communicate('R' + self._channel) == self._openCondition