Client examples

from PyTango import *
import sys
import time

def set_nbmotors(lensesbox,nb_motors):
    """The set_nbmotors function is used to initialized the given number of motors."""
    lensesbox.write_attribute("NbMotors",nb_motors)
        
def get_nbmotors(lensesbox):
    """The get_nbmotors function is used to read the number of initialized motors."""
    print "Number of motors:"
    print lensesbox.NbMotors


def set_lensesToMoveIn(lensesbox, lenses):
    """The set_lensesToMoveIn function is used to select the lenses that will go to the IN by performing the next movement."""

    values = []
    for p in lenses:
        values.append(p)
    lensesbox.write_attribute("SetIN",values)


def get_lensesToMoveIn(lensesbox):
    """The get_lensesToMoveIn function is used to read the lenses that will go to the IN by performing the next movement."""
    dim_x = lensesbox.read_attribute("SetIN").dim_x
    if dim_x > 0:
        lenses_inout = lensesbox.SetIn
        print "Lenses to move In (flaged to 1):"
        for lens in lenses_inout:
            print lens
            
def get_statusIN(lensesbox):
    """The get_statusIN function is used to read the status of the lenses (1 IN, 0 OUT)."""
    dim_x = lensesbox.read_attribute("StatusIN").dim_x
    if dim_x > 0:
        lenses_inout = lensesbox.StatusIn
        print "Lenses IN (flaged to 1):"
        for lens in lenses_inout:
            print lens
            
def get_statusOK(lensesbox):
    """The get_statusOK function is used to read the status of the lenses (1 OK)."""
    dim_x = lensesbox.read_attribute("StatusOK").dim_x
    if dim_x > 0:
        lenses_inout = lensesbox.StatusOK
        print "Lenses OK (flaged to 1):"
        for lens in lenses_inout:
            print lens

def get_statusGeneral(lensesbox):
    """The get_statusGeneral function is used to read the status of the lenses system"""
    dim_x = lensesbox.read_attribute("StatusGeneral").dim_x
    if dim_x > 0:
        lenses_inout = lensesbox.StatusGeneral
        dict_general_status = []
        dict_general_status.append("Done:")
        dict_general_status.append(" Enabled:")
        dict_general_status.append(" Power:")
        dict_general_status.append(" Busy:")
        dict_general_status.append(" Reset:")
        i = 0
        for lens in lenses_inout:
            print dict_general_status[i]
            print "          " + str(lens)
            i = i + 1

def set_position(lensesbox,position):
    """The set_position function is used to move the lenses to the given position  (12 bits in decimal)."""
    lensesbox.write_attribute("Position",position)
        
def get_position(lensesbox):
    """The get_position function is used to read the current position (12 bits in decimal)."""
    print "Current position (decimal):"
    print lensesbox.Position
                
def move(lensesbox):
    """The move function is used to perform the movement of the lenses"""
    lensesbox.Move()
                
def reboot(lensesbox):
    """The reboot function is used to make a hardware reboot of the system"""

    lensesbox.Reboot()
                
def stop(lensesbox):
    """The reboot function is used to make a hardware reboot of the system"""

    lensesbox.Stop()
    
#
# main
#
try :
    lensesbox = DeviceProxy( "//haso111n:10000/exp/lensesbox/1")
    
    if( len( sys.argv) == 1):
        get_nbmotors(lensesbox)
        get_position(lensesbox)
        get_lensesToMoveIn(lensesbox)
        get_statusIN(lensesbox)
        get_statusOK(lensesbox)
        get_statusGeneral(lensesbox)
        print "                 "
        print "Run 'python lensesbox.py help' to see program options"
        print "                 "
    else:
        if(sys.argv[1] == "help"):
            print "Usage:"
            print "-> to perform movement"
            print "python lensesbox.py move"
            print "-> to move lenses to the given position"
            print "python lensesbox.py setPosition x"
            print "where x is the decimal representation of 12 bits (1-> move in)"
            print "-> to stop movement"
            print "python lensesbox.py stop"
            print "-> to reboot"
            print "python lensesbox.py reboot"
            print "-> to set lenses to move"
            print "python lensesbox.py set2move x y z ..."
            print "where  'x, y, z ...'  would be 0's or 1's"
            print "depending on the lenses set for moving in"
            print "-> to set number of motors"
            print "python lensesbox.py setNbMotors x"
            print "where  x is the number of motors to be initialized"
            print "-> to get information and status"
            print "python lensesbox.py"
            
        if(sys.argv[1] == "move"):
            print "Moving"
            move(lensesbox)
        elif(sys.argv[1] == "reboot"):
            print "Rebooting"
            reboot(lensesbox)
        elif(sys.argv[1] == "stop"):
            print "Stopping"
            stop(lensesbox)
        elif(sys.argv[1] == "set2move"):
            print "Set lenses 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_lensesToMoveIn(lensesbox,values)
        elif(sys.argv[1] == "setNbMotors"):
            print "Set number of motors to "
            print sys.argv[2]
            set_nbmotors(lensesbox,int(sys.argv[2]))
        elif(sys.argv[1] == "setPosition"):
            print "Moving lenses"
            print sys.argv[2]
            set_position(lensesbox,int(sys.argv[2]))
        else:
            print "Run 'python lensesbox.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