#!/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