def __init__(self):
     try:
         self.dmx = DmxPro('/dev/ttyUSB0',
                           25)  # interface to DMX Pro driver
     except:
         print "Error in LaserManagement::__init__: "
         sys.exit(1)
     self.Lasers = []
     L1 = Laser_Stairville__150_RGY(
         DMX_address=1
     )  # for each connected laser, instantiate such a class (use different DMX addresses!) and append to Lasers[]
     self.Lasers.append(L1)
     self.no_of_lasers = len(self.Lasers)  # number of connected lasers
 def __init__(self): 
     try:
         self.dmx = DmxPro('/dev/ttyUSB0', 25) # interface to DMX Pro driver
     except:
         print "Error in LaserManagement::__init__: "
         sys.exit(1)
     self.Lasers = []
     L1 = Laser_Stairville__150_RGY(DMX_address=1) # for each connected laser, instantiate such a class (use different DMX addresses!) and append to Lasers[]
     self.Lasers.append(L1)
     self.no_of_lasers = len(self.Lasers) # number of connected lasers
class LaserManagement: # this class provides functions to deal with the connected lasers     
    def __init__(self): 
        try:
            self.dmx = DmxPro('/dev/ttyUSB0', 25) # interface to DMX Pro driver
        except:
            print "Error in LaserManagement::__init__: "
            sys.exit(1)
        self.Lasers = []
        L1 = Laser_Stairville__150_RGY(DMX_address=1) # for each connected laser, instantiate such a class (use different DMX addresses!) and append to Lasers[]
        self.Lasers.append(L1)
        self.no_of_lasers = len(self.Lasers) # number of connected lasers
        
    
    def SetBeamWidth(self, width, laser=1):
        """ sets the beamwidth in cm for a specified laser"""
        L = self.Lasers[laser-1]
        L.SetBeamWidth(width)
    
    def Move(self, x, y, laser=1):
        """moves a laser to laser channel coordinates x,y"""
        # parameter laser specifies, which laser to use
        L = self.Lasers[laser-1]
        L.SetMoveXY(x,y)
        self.dmx.setChannels(L.offset, L.buffer)
        self.dmx.send()
            
            
    def Stop(self):
        """turns of all lasers"""
        for L in self.Lasers:
            L.SetStop()
            self.dmx.setChannels(L.offset, L.buffer)
        self.dmx.send()  
        
            
    def GetMaxChannels(self, laser=1):
        """returns max_left, max_right, max_top, max_bottom"""
        L = self.Lasers[laser-1]
        return L.max_left, L.max_right, L.max_top, L.max_bottom
        
class LaserManagement:  # this class provides functions to deal with the connected lasers
    def __init__(self):
        try:
            self.dmx = DmxPro('/dev/ttyUSB0',
                              25)  # interface to DMX Pro driver
        except:
            print "Error in LaserManagement::__init__: "
            sys.exit(1)
        self.Lasers = []
        L1 = Laser_Stairville__150_RGY(
            DMX_address=1
        )  # for each connected laser, instantiate such a class (use different DMX addresses!) and append to Lasers[]
        self.Lasers.append(L1)
        self.no_of_lasers = len(self.Lasers)  # number of connected lasers

    def SetBeamWidth(self, width, laser=1):
        """ sets the beamwidth in cm for a specified laser"""
        L = self.Lasers[laser - 1]
        L.SetBeamWidth(width)

    def Move(self, x, y, laser=1):
        """moves a laser to laser channel coordinates x,y"""
        # parameter laser specifies, which laser to use
        L = self.Lasers[laser - 1]
        L.SetMoveXY(x, y)
        self.dmx.setChannels(L.offset, L.buffer)
        self.dmx.send()

    def Stop(self):
        """turns of all lasers"""
        for L in self.Lasers:
            L.SetStop()
            self.dmx.setChannels(L.offset, L.buffer)
        self.dmx.send()

    def GetMaxChannels(self, laser=1):
        """returns max_left, max_right, max_top, max_bottom"""
        L = self.Lasers[laser - 1]
        return L.max_left, L.max_right, L.max_top, L.max_bottom