We assume that a VcExecutor needs a variable that is incremented for every scan point, sindex. The pre-scan and the pre-move hooks maintain the Macroserver environment variable sindex. Here is an example code:
class gh_pre_scan(Macro):
”'
...
”'
def run( self):
self.output( "general_features.pre_scan hook")
#
# initialize sindex
#
self.setEnv( "sindex", 0)
#
...
class gh_pre_move(Macro):
def run( self):
self.setEnv( "sindex", self.getEnv( "sindex") + 1)
self.output( "general_features.pre_move hook, sindex %d" % self.getEnv( "sindex"))
return True
The hooks have to be enabled by:
spock> gh_enable gh_pre_scan pre-scan spock> gh_enable gh_pre_move pre-move
Here is an example of a VcExecutor using sindex:
#!/bin/env python
#
# this Vc counter returns the value of sindex
#
import HasyUtils
import PyTango
class VC:
def __init__(self, devicename = None):
print( " VC.init, sindex.py")
pass
#
# dev_state
#
def dev_state( self):
return PyTango.DevState.ON
#
# Counts
#
def read_Counts( self):
argout = HasyUtils.getEnv( "sindex")
if argout is None:
argout = -1.
return float( argout)
def write_Counts( self, argin):
return 1
#
# Offset
#
def read_Offset( self):
return 0
def write_Offset( self, argin):
return 1
#
# reset
#
def Reset(self):
return True