The following Macro reads an ADC, displays the value and returns the result. It makes use of the fact that the adc object is derived from a DeviceProxy which allows the user to access the device commands and attributes directly.
#!/usr/bin/env python # # file name: /home/pXXuser/sardanaMacros/ReadAdc_class.py """this module contains some demo code""" __all__ = ["ReadAdc_class"] from sardana.macroserver.macro import Macro, Type class ReadAdc_class(Macro): """reads an ADC values, displays the result and returns it""" param_def = [[ "adc", Type.ZeroDExpChannel, None, "an ADC" ]] result_def = [[ "result", Type.Float, None, "the ADC reading" ]] def run(self, adc): result = float(adc.CurrentValue) self.output( "%s reading %g " % (adc.name, result)) return result
This macros can be invoked from Spock in two ways:
p09/door/exp.01 [24]: ReadAdc exp_adc01 exp_adc01 reading 9 Result [24]: 9.0 p09/door/exp.01 [25]: a = %ReadAdc exp_adc01 exp_adc01 reading -8 p09/door/exp.01 [26]: a Result [26]: -8.0