from PyTango import * import sys import time def get_nbsliders(absorbercontroller): """The get_nbsliders function is used to read the number of sliderss.""" prop = absorbercontroller.get_property(['NbSliders']) for v in prop['NbSliders']: nb_sliders = v print "Number of sliders:" print nb_sliders def set_slidersToMoveIn(absorbercontroller, sliders): """The set_slidersToMoveIn function is used to select the sliders that will go to the IN by performing the next movement.""" values = [] for p in sliders: values.append(p) absorbercontroller.write_attribute("SetIn",values) def get_slidersToMoveIn(absorbercontroller): """The get_slidersToMoveIn function is used to read the sliders that will go to the IN by performing the next movement.""" dim_x = absorbercontroller.read_attribute("SetIn").dim_x if dim_x > 0: sliders_inout = absorbercontroller.SetIn print "Sliders to move In (flaged to 1):" for slider in sliders_inout: print slider def get_slidersIn(absorbercontroller): """The get_statusIn function is used to read the status of the sliders (1 IN, 0 OUT).""" dim_x = absorbercontroller.read_attribute("SlidersIn").dim_x if dim_x > 0: sliders_inout = absorbercontroller.SlidersIn print "Sliders IN (flaged to 1):" for slider in sliders_inout: print slider def get_slidersOut(absorbercontroller): """The get_statusOut function is used to read the status of the sliders (0 IN, 1 OUT).""" dim_x = absorbercontroller.read_attribute("SlidersOut").dim_x if dim_x > 0: sliders_inout = absorbercontroller.SlidersOut print "Sliders OUT (flaged to 1):" for slider in sliders_inout: print slider def get_statusSliders(absorbercontroller): """The get_statusSliders function is used to read the status of the sliders (1 Error).""" dim_x = absorbercontroller.read_attribute("StatusSliders").dim_x if dim_x > 0: sliders_status = absorbercontroller.StatusSliders print "Status sliders (1 if error):" for slider in sliders_status: print slider def get_FlagError(absorbercontroller): """The get_FlagError function returns 1 if there is any slider in error""" print "Error flag (1 if error):" print absorbercontroller.FlagError def get_FlagMovementOK(absorbercontroller): """The get_FlagMovementOK function returns 1 if the last movement was smoothly done""" print "Movement flag (1 if last movement smoothly done):" print absorbercontroller.FlagMovementOK def set_position(absorbercontroller,position): """The set_position function is used to move the sliders to the given position (12 bits in decimal).""" absorbercontroller.write_attribute("Position",position) def get_position(absorbercontroller): """The get_position function is used to read the current position (12 bits in decimal).""" print "Current position (decimal):" print absorbercontroller.Position def move(absorbercontroller): """The move function is used to perform the movement of the sliders""" absorbercontroller.Move() # # main # try : absorbercontroller = DeviceProxy( "//haso111n:10000/test/absorber/1") if( len( sys.argv) == 1): get_nbsliders(absorbercontroller) get_position(absorbercontroller) get_slidersToMoveIn(absorbercontroller) get_slidersIn(absorbercontroller) get_slidersOut(absorbercontroller) get_statusSliders(absorbercontroller) get_FlagError(absorbercontroller) get_FlagMovementOK(absorbercontroller) print " " print "Run 'python absorbercontroller.py help' to see program options" print " " else: if(sys.argv[1] == "help"): print "Usage:" print "-> to perform movement" print "python absorbercontroller.py move" print "-> to move sliders to the given position" print "python absorbercontroller.py setPosition x" print "where x is the decimal representation of 12 bits (1-> move in)" print "-> to set sliders to move" print "python absorbercontroller.py set2move x y z ..." print "where 'x, y, z ...' would be 0's or 1's" print "depending on the sliders set for moving in" print "-> to get information and status" print "python absorbercontroller.py" if(sys.argv[1] == "move"): print "Moving" move(absorbercontroller) elif(sys.argv[1] == "set2move"): print "Set sliders to move in " i = 0 values = [] for lens in sys.argv: if(i > 1): values.append(int(sys.argv[i])) i = i + 1 print values set_slidersToMoveIn(absorbercontroller,values) elif(sys.argv[1] == "setPosition"): print "Moving sliders" print sys.argv[2] set_position(absorbercontroller,int(sys.argv[2])) else: print "Run 'python absorbercontroller.py help' to see program options" except Exception, inst : print "Failed with exception !" print sys.exc_info()[0] print type(inst) # the exception instance print inst.args # arguments stored in .args