SardanaConfig.py is called by SardanaStartup.py, which is called from SardanaAIO.py. It allows the user to make adjustments after AIO created a new Pool and new Macroserver.
Among other things, the following SardanaConfig.py adjusts the change event configuration of slow Pool motors. The purpose is essentially to have a sufficient motor position update frequency during moves in Spock.
#!/usr/env python
”'
This script is executed at the end of SardanaStartup.py (which is called from SardanaAIO.py)
”'
import PyTango
import HasyUtils
import sys
def main():
#
# Set some view options
#
HasyUtils.configMacroServer(
[ "setvo ShowDial False",
"setvo ShowCtrlAxis False"])
#
# Set some environment variables. 'Cautious' means that variables
# are not overridden, if they exist already
#
HasyUtils.setEnvCautious(
{"JsonRecorder": "True",
"ScanDir": "/home/p99/temp",
"ScanFile": "tst1.fio"})
#
# slow motors may require a change events
# configuration of the pool devices
#
hsh = {
"motor/vm_eh_s1cx/1": "0.12",
"motor/vm_eh_s1cy/1": "0.23",
"motor/vm_eh_s1dx/1": "0.34",
"motor/vm_eh_s1dy/1": "0.45",
"notexist/vm_eh_s1dy/1": "0.45", # will thow an exception
}
for key in list( hsh.keys()):
try:
proxy = PyTango.DeviceProxy( key)
attrConfig = proxy.get_attribute_config_ex( "Position")
attrConfig[0].events.ch_event.abs_change = hsh[ key]
print( "%s abs_changed to %s" % (proxy.name(), attrConfig[0].events.ch_event.abs_change))
proxy.set_attribute_config( attrConfig)
except Exception as e:
print( "failed to change abs_changed at %s to %s" %
(proxy.name(), attrConfig[0].events.ch_event.abs_change))
#print( " %s "% repr( e))
return
if __name__ == "__main__":
main()