diff options
author | tiagocoutinho <tiagocoutinho@users.sourceforge.net> | 2012-12-07 11:31:09 +0000 |
---|---|---|
committer | tiagocoutinho <tiagocoutinho@users.sourceforge.net> | 2012-12-07 11:31:09 +0000 |
commit | 483c6abe2eba8868aaab2f3f071bca68751bf047 (patch) | |
tree | 9533851584e315b0286d3b72a992e58135808c9b /src/sardana/tango | |
parent | f857421204e2278722ae77249fbc7284feb387c8 (diff) |
added CalcPseudo and CalcAllPseudo to pseudo counters
git-svn-id: file:///home/cpascual/src/sdnongit/svnbck/sardana/trunk@21016 c480fdf4-a248-4bb0-8e4a-34cd1ef68f4f
Diffstat (limited to 'src/sardana/tango')
-rw-r--r-- | src/sardana/tango/pool/PseudoCounter.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/sardana/tango/pool/PseudoCounter.py b/src/sardana/tango/pool/PseudoCounter.py index 39409fbe..6b2e98d3 100644 --- a/src/sardana/tango/pool/PseudoCounter.py +++ b/src/sardana/tango/pool/PseudoCounter.py @@ -33,13 +33,14 @@ import sys import time from PyTango import Except, READ, SCALAR, DevDouble, \ - DevVarStringArray, DevState, AttrQuality, DevFailed + DevVarStringArray, DevVarDoubleArray, DevState, AttrQuality, DevFailed from taurus.core.util.log import DebugIt from sardana import State, SardanaServer from sardana.sardanaattribute import SardanaAttribute -from sardana.tango.core.util import to_tango_type_format, exception_str +from sardana.tango.core.util import to_tango_type_format, exception_str, \ + throw_sardana_exception from PoolDevice import PoolElementDevice, PoolElementDeviceClass @@ -192,6 +193,24 @@ class PseudoCounter(PoolElementDevice): is_Value_allowed = _is_allowed + def CalcPseudo(self, physical_values): + """Returns the pseudo counter value for the given physical counters""" + if not len(physical_values): + physical_values = None + result = self.pseudo_counter.calc(physical_values=physical_values) + if result.error: + throw_sardana_exception(result) + return result.value + + def CalcAllPseudo(self, physical_values): + """Returns the pseudo counter values for the given physical counters""" + if not len(physical_values): + physical_values = None + result = self.pseudo_counter.calc(physical_values=physical_values) + if result.error: + throw_sardana_exception(result) + return result.value + class PseudoCounterClass(PoolElementDeviceClass): @@ -207,6 +226,8 @@ class PseudoCounterClass(PoolElementDeviceClass): # Command definitions cmd_list = { + 'CalcPseudo' : [ [DevVarDoubleArray, "physical values"], [DevDouble, "pseudo counter"] ], + 'CalcAllPseudo' : [ [DevVarDoubleArray, "physical positions"], [DevVarDoubleArray, "pseudo counter values"] ], } cmd_list.update(PoolElementDeviceClass.cmd_list) |