#!/usr/bin/env python import PyTango class VM: # # init_device # def __init__( self): self.ResultSim = None self.PositionSim = None self.proxies = [] self.proxies.append( PyTango.DeviceProxy( "p23/dac/d1.01")) return # # dev_state # def dev_state( self): argout = PyTango.DevState.ON # # if one device is in FAULT the VM is in FAULT too # for proxy in self.proxies: if proxy.state() == PyTango.DevState.FAULT: argout = PyTango.DevState.FAULT break if argout == PyTango.DevState.ON: # # if one device is MOVING the VM is MOVING too # for proxy in self.proxies: if proxy.state() == PyTango.DevState.MOVING: argout = PyTango.DevState.MOVING break return argout # # Position # def read_Position( self): return self.proxies[0].read_attribute( "Voltage").value def write_Position( self, argin): if( argin < self.proxies[0].VoltageMin or argin > self.proxies[0].VoltageMax): PyTango.Except.throw_exception( "VmExecutor.DAC", "requested position outside limits %g %g " % (self.proxies[0].VoltageMin, self.proxies[0].VoltageMax), "VmExecutor") self.proxies[0].write_attribute( "Voltage", argin) return 1 # # UnitLimitMax # def read_UnitLimitMax( self): return self.proxies[0].VoltageMax def write_UnitLimitMax( self, argin): self.proxies[0].write_attribute( "VoltageMax", argin) # # UnitLimitMin # def read_UnitLimitMin( self): return self.proxies[0].VoltageMin def write_UnitLimitMin( self, argin): self.proxies[0].write_attribute( "VoltageMin", argin) # # CwLimit, CcwLimit # def read_CwLimit( self): return 0 def read_CcwLimit( self): return 0 # # PositionSim # def read_PositionSim( self): if self.PositionSim is None: PyTango.Except.throw_exception( "VmExecutor.Dac", "PositionSim is undefined", "VmExecutor") return self.PositionSim def write_PositionSim( self, argin): self.PositionSim = argin self.ResultSim = [] self.ResultSim.append( "x: %g " % argin) def read_ResultSim( self): if self.ResultSim is None: PyTango.Except.throw_exception( "VmExecutor.Dac", "ResultSim is undefined", "VmExecutor") return self.ResultSim def StopMove( self): return 1