Exemple #1
0
    def __init__(self, dm, config, name):
        self.port = config[
            'port'] - 1  ## windows com ports start at COM1, pyserial ports start at 0
        self.baud = config.get('baud', 19200)
        self.driver = Coherent(self.port, self.baud)
        self.driverLock = Mutex(
            QtCore.QMutex.Recursive)  ## access to low level driver calls

        self.coherentLock = Mutex(
            QtCore.QMutex.Recursive)  ## access to self.attributes
        self.coherentPower = 0
        self.coherentWavelength = 0

        self.mThread = CoherentThread(self, self.driver, self.driverLock)
        self.mThread.sigPowerChanged.connect(self.powerChanged)
        self.mThread.sigWavelengthChanged.connect(self.wavelengthChanged)
        self.mThread.start()
        Laser.__init__(self, dm, config, name)

        self.hasShutter = True
        self.hasTunableWavelength = True
Exemple #2
0
 def __init__(self, dm, config, name):
     self.port = config['port']-1  ## windows com ports start at COM1, pyserial ports start at 0
     self.baud = config.get('baud', 19200)
     self.driver = Coherent(self.port, self.baud)
     self.driverLock = Mutex(QtCore.QMutex.Recursive)  ## access to low level driver calls
     
     self.coherentLock = Mutex(QtCore.QMutex.Recursive)  ## access to self.attributes
     self.coherentPower = 0
     self.coherentWavelength = 0
     
     self.mThread = CoherentThread(self, self.driver, self.driverLock)
     self.mThread.sigPowerChanged.connect(self.powerChanged)
     self.mThread.sigWavelengthChanged.connect(self.wavelengthChanged)
     self.mThread.start()
     Laser.__init__(self, dm, config, name)
     
     self.hasShutter = True
     self.hasTunableWavelength = True
Exemple #3
0
class CoherentLaser(Laser):

    def __init__(self, dm, config, name):
        self.port = config['port']-1  ## windows com ports start at COM1, pyserial ports start at 0
        self.baud = config.get('baud', 19200)
        self.driver = Coherent(self.port, self.baud)
        self.driverLock = Mutex(QtCore.QMutex.Recursive)  ## access to low level driver calls
        
        self.coherentLock = Mutex(QtCore.QMutex.Recursive)  ## access to self.attributes
        self.coherentPower = 0
        self.coherentWavelength = 0
        
        self.mThread = CoherentThread(self, self.driver, self.driverLock)
        self.mThread.sigPowerChanged.connect(self.powerChanged)
        self.mThread.sigWavelengthChanged.connect(self.wavelengthChanged)
        self.mThread.start()
        Laser.__init__(self, dm, config, name)
        
        self.hasShutter = True
        self.hasTunableWavelength = True
        
    def powerChanged(self, power):
        with self.coherentLock:
            self.coherentPower = power
            self.setParam(currentPower=power)
            powerOk = self.checkPowerValidity(power)
            self.sigOutputPowerChanged.emit(power, powerOk)
                
    def wavelengthChanged(self, wl):
        with self.coherentLock:
            self.coherentWavelength = wl
        
    def outputPower(self):
        with self.coherentLock:
            return self.coherentPower
    
    def getWavelength(self):
        with self.coherentLock:
            return self.coherentWavelength
        
    def setWavelength(self, wl):
        with self.driverLock:
            self.driver.setWavelength(wl*1e9)
            
    def getWavelengthRange(self):
        with self.driverLock:
            bounds = self.driver.getWavelengthRange()
        return bounds[0]*1e-9, bounds[1]*1e-9
    
    
    def getGDDMinMax(self):
        with self.driverLock:
            gddlims = self.driver.getGDDMinMax()
        return gddlims
    
    def setGDD(self, value):
        with self.driverLock:
            self.driver.setGDD(value)
           # print 'comp is %s' % self.driver.getComp()
            #print 'Gdd set to %s, reading back gives %s' % (value, self.driver.getGDD())
       # with self.driverLock:
       #     print 'Gdd set to %s, reading back gives %s' % (value, self.driver.getGDD())

            
            
    def clearGDD(self):
        with self.driverLock:
            self.driver.clearGDD()
        
    ## Shutter functions are disabled because coherent lasers are not really designed to 
    ## operate their shutters this way. Use an external shutter instead.
    ## (excessive shutter activity can damage the shutter)
    #def openShutter(self):
        #with self.driverLock:
            #self.driver.setShutter(True)
        #Laser.openShutter(self)
        
    #def closeShutter(self):
        #with self.driverLock:
            #self.driver.setShutter(False)
        #Laser.closeShutter(self)
        
    #def getShutter(self):
        #with self.driverLock:
            #return self.driver.getShutter()
        
    def createTask(self, cmd, parentTask):
        return CoherentTask(self, cmd, parentTask)
Exemple #4
0
class CoherentLaser(Laser):
    def __init__(self, dm, config, name):
        self.port = config[
            'port'] - 1  ## windows com ports start at COM1, pyserial ports start at 0
        self.baud = config.get('baud', 19200)
        self.driver = Coherent(self.port, self.baud)
        self.driverLock = Mutex(
            QtCore.QMutex.Recursive)  ## access to low level driver calls

        self.coherentLock = Mutex(
            QtCore.QMutex.Recursive)  ## access to self.attributes
        self.coherentPower = 0
        self.coherentWavelength = 0

        self.mThread = CoherentThread(self, self.driver, self.driverLock)
        self.mThread.sigPowerChanged.connect(self.powerChanged)
        self.mThread.sigWavelengthChanged.connect(self.wavelengthChanged)
        self.mThread.start()
        Laser.__init__(self, dm, config, name)

        self.hasShutter = True
        self.hasTunableWavelength = True

    def powerChanged(self, power):
        with self.coherentLock:
            self.coherentPower = power
            self.setParam(currentPower=power)
            powerOk = self.checkPowerValidity(power)
            self.sigOutputPowerChanged.emit(power, powerOk)

    def wavelengthChanged(self, wl):
        with self.coherentLock:
            self.coherentWavelength = wl

    def outputPower(self):
        with self.coherentLock:
            return self.coherentPower

    def getWavelength(self):
        with self.coherentLock:
            return self.coherentWavelength

    def setWavelength(self, wl):
        with self.driverLock:
            self.driver.setWavelength(wl * 1e9)

    def getWavelengthRange(self):
        with self.driverLock:
            bounds = self.driver.getWavelengthRange()
        return bounds[0] * 1e-9, bounds[1] * 1e-9

    def getGDDMinMax(self):
        with self.driverLock:
            gddlims = self.driver.getGDDMinMax()
        return gddlims

    def setGDD(self, value):
        with self.driverLock:
            self.driver.setGDD(value)
        # print 'comp is %s' % self.driver.getComp()
        #print 'Gdd set to %s, reading back gives %s' % (value, self.driver.getGDD())

    # with self.driverLock:
    #     print 'Gdd set to %s, reading back gives %s' % (value, self.driver.getGDD())

    def clearGDD(self):
        with self.driverLock:
            self.driver.clearGDD()

    ## Shutter functions are disabled because coherent lasers are not really designed to
    ## operate their shutters this way. Use an external shutter instead.
    ## (excessive shutter activity can damage the shutter)
    #def openShutter(self):
    #with self.driverLock:
    #self.driver.setShutter(True)
    #Laser.openShutter(self)

    #def closeShutter(self):
    #with self.driverLock:
    #self.driver.setShutter(False)
    #Laser.closeShutter(self)

    #def getShutter(self):
    #with self.driverLock:
    #return self.driver.getShutter()

    def createTask(self, cmd, parentTask):
        return CoherentTask(self, cmd, parentTask)