Beispiel #1
0
import six
from lewis.adapters.stream import StreamInterface
from lewis_emulators.utils.command_builder import CmdBuilder
from lewis_emulators.utils.replies import conditional_reply

if_connected = conditional_reply("connected")


class MKS_PR4000B_StreamInterface(StreamInterface):
    def __init__(self):
        super(MKS_PR4000B_StreamInterface, self).__init__()

        self.commands = {
            CmdBuilder("get_value").escape("AV").int().eos().build(),
            CmdBuilder("get_valve_status").escape("?VL").int().eos().build(),
            CmdBuilder("set_valve_status").escape("VL").int().escape(",").enum(
                "ON", "OFF").eos().build(),
            CmdBuilder("get_relay_status").escape("?RL").int().eos().build(),
            CmdBuilder("set_relay_status").escape("RL").int().escape(",").enum(
                "ON", "OFF").eos().build(),
            CmdBuilder("get_formula_relay").escape("?FR").int().eos().build(),
            CmdBuilder("set_formula_relay").escape("FR").int().escape(
                ",").any().eos().build(),
            CmdBuilder("get_remote_mode").escape("?RT").eos().build(),
            CmdBuilder("set_remote_mode").escape("RT").escape(",").enum(
                "ON", "OFF").eos().build(),
            CmdBuilder("get_external_input").escape("EX").int().eos().build(),
            CmdBuilder("get_status").escape("ST").eos().build(),
            CmdBuilder("set_range").escape("RG").int().escape(
                ",").float().escape(",").int().eos().build(),
            CmdBuilder("get_range").escape("?RG").int().eos().build(),
from lewis.adapters.stream import StreamInterface

from lewis_emulators.utils.command_builder import CmdBuilder
from lewis_emulators.utils.replies import conditional_reply, timed_reply

if_connected = conditional_reply("connected")
if_input_error = conditional_reply("input_correct", "%%[Error:stack underflow]%%")
if_valid_input_delay = timed_reply(action="crash_pump", minimum_time_delay=100)


def combined_checks(func):
    """
    Combine all conditional reply checks so we have a single decorator
    """
    return if_valid_input_delay(if_connected(if_input_error(func)))


class Jsco4180StreamInterface(StreamInterface):

    in_terminator = '\r'
    out_terminator = '\r\n'

    def __init__(self):

        super(Jsco4180StreamInterface, self).__init__()
        # Commands that we expect via serial during normal operation
        self.commands = {
            CmdBuilder(self.set_flowrate).float().escape(" flowrate set").eos().build(),
            CmdBuilder(self.get_flowrate_rbv).escape("flowrate load p").eos().build(),
            CmdBuilder(self.get_flowrate).escape("a_flow load p").eos().build(),
Beispiel #3
0
from lewis.adapters.stream import StreamInterface, Cmd

from lewis_emulators.utils.command_builder import CmdBuilder
from lewis_emulators.utils.replies import conditional_reply
from enum import Enum

if_connected = conditional_reply('connected')
if_input_error = conditional_reply('input_correct', "ER,OF,00")


class Modes(Enum):
    """
    Device Modes
    """
    MEASURE = 'R0'  # Read measured values
    SET_UP = 'Q0'  # Configure device parameters


class KeylkgStreamInterface(StreamInterface):

    terminator = '\r'

    def __init__(self):

        super(KeylkgStreamInterface, self).__init__()
        # Commands that we expect via serial during normal operation
        self.commands = {
            CmdBuilder(self.set_mode).arg("Q0|R0").eos().build(),
            CmdBuilder(self.set_measurement_offset).escape(
                "SW,OF,").int().escape(",").float().eos().build(),
            CmdBuilder(self.get_measurement_offset).escape(
from lewis.adapters.stream import StreamInterface

from lewis.core.logging import has_log
from lewis_emulators.utils.replies import conditional_reply
from lewis_emulators.utils.command_builder import CmdBuilder

if_connected = conditional_reply('connected')
if_input_error = conditional_reply('input_correct',
                                   "ERROR:20,Instrument in standalone mode")


@has_log
class Knr1050StreamInterface(StreamInterface):

    in_terminator = '\r'
    out_terminator = '\r'

    def __init__(self):

        super(Knr1050StreamInterface, self).__init__()
        # Commands that we expect via serial during normal operation
        self.commands = {
            CmdBuilder(self.get_status).escape("STATUS?").eos().build(),
            CmdBuilder(self.start_pump).escape("RAMP:0,").int().escape(
                ",").int().escape(",").int().escape(",").int().escape(
                    ",").int().eos().build(),
            CmdBuilder(self.stop_pump).escape("STOP:1,0").eos().build(),
            CmdBuilder(self.stop_klv).escape("STOP:2").eos().build(),
            CmdBuilder(self.get_pressure_limits).escape("PLIM?").eos().build(),
            CmdBuilder(self.set_pressure_limits).escape("PLIM:").int().escape(
                ",").int().eos().build(),
Beispiel #5
0
"""
Stream device for danfysik
"""
import abc
import six

from lewis.core.logging import has_log
from lewis_emulators.utils.command_builder import CmdBuilder
from lewis_emulators.utils.replies import conditional_reply

if_available = conditional_reply("device_available")


@has_log
@six.add_metaclass(abc.ABCMeta)
class CommonStreamInterface(object):
    """
    Common part of the stream interface for a Danfysik.
    """

    in_terminator = "\r"
    out_terminator = ""

    commands = [
        CmdBuilder("get_voltage").escape("AD 2").eos().build(),
        CmdBuilder("set_polarity").arg("\+|\-").eos().build(),
        CmdBuilder("get_polarity").escape("PO").eos().build(),
        CmdBuilder("set_power_off").escape("F").eos().build(),
        CmdBuilder("set_power_on").escape("N").eos().build(),
        CmdBuilder("get_status").escape("S1").eos().build(),
        CmdBuilder("get_last_setpoint").escape("RA").eos().build(),
from lewis.adapters.stream import StreamInterface, Cmd

from lewis_emulators.utils.command_builder import CmdBuilder
from lewis_emulators.utils.constants import STX, ETX
from lewis_emulators.utils.replies import conditional_reply

if_input_error = conditional_reply('input_correct', STX + "01I?NA" + ETX)
if_connected = conditional_reply("connected")


class Aldn1000StreamInterface(StreamInterface):

    in_terminator = "\r"

    directions = 'INF|WDR|REV'
    status_modes = 'I|W|S|P|T|U|A?R|A?S|A?T|A?E|A?O'

    def __init__(self):
        super(Aldn1000StreamInterface, self).__init__()

        self.commands = {
                CmdBuilder(self.get_diameter).int().escape('DIA').eos().build(),
                CmdBuilder(self.set_diameter).int().escape('DIA').float().eos().build(),
                CmdBuilder(self.get_volume).int().escape('VOL').eos().build(),
                CmdBuilder(self.set_volume).int().escape('VOL').float().eos().build(),
                CmdBuilder(self.get_direction).int().escape('DIR').eos().build(),
                CmdBuilder(self.set_direction).int().escape('DIR').arg(self.directions).eos().build(),
                CmdBuilder(self.get_rate).int().escape('RAT').eos().build(),
                CmdBuilder(self.set_rate).int().escape('RAT').float().string().eos().build(),
                CmdBuilder(self.get_program_function).int().escape('FUN').eos().build(),
                CmdBuilder(self.get_volume_dispensed).int().escape('DIS').eos().build(),