Example #1
0
class Panel(FrontPanel):
        
    def __init__(self,instrument,parent=None):
        super(Panel,self).__init__(instrument,parent)

        self.title = QLabel(instrument.name())
        self.title.setAlignment(Qt.AlignCenter)
        self.title.setStyleSheet("QLabel {font:18px;}")
        
        self.canvas = Canvas(dpi = 100)
        self.canvas.setFixedHeight(300)

        self.grid = QGridLayout(self)
        self.interval = 10000
        
        self.grid.addWidget(self.title,0,0)
        self.grid.addWidget(self.temperature,1,0)
        self.grid.addWidget(self.canvas)
        
        self.timer = QTimer(self)
        self.timer.setInterval(self.interval)
        self.timer.start()
        
#        self.connect(self.timer,SIGNAL("timeout()"),lambda :self.instrument.dispatch("temperature"))
        
        self.setLayout(self.grid)

        instrument.attach(self)
          
    def __init__(self,instrument,parent=None):
        super(Panel,self).__init__(instrument,parent)

        self.title = QLabel(instrument.name())
        self.title.setAlignment(Qt.AlignCenter)
        self.title.setStyleSheet("QLabel {font:18px;}")
        self.heliumLevels = []
        self.times = []
        self.gliding = []

        self.heliumLevel = QLabel("Please wait, fetching helium level...")
        self.heliumLevel.setAlignment(Qt.AlignCenter)
        self.heliumLevel.setStyleSheet("QLabel {font:14px;}")
        self.canvas = Canvas(dpi = 100)
        self.canvas.setFixedHeight(150)

        self.grid = QGridLayout(self)
        self.interval = 10000
        
        self.grid.addWidget(self.title,0,0)
        self.grid.addWidget(self.heliumLevel,1,0)
        self.grid.addWidget(self.canvas)
        
        self.timer = QTimer(self)
        self.timer.setInterval(self.interval)
        self.timer.start()
        
        self.connect(self.timer,SIGNAL("timeout()"),lambda :self.instrument.dispatch("heliumLevel"))
        
        self.setLayout(self.grid)

        instrument.attach(self)
          
Example #3
0
class Panel(FrontPanel):

    def formatDate(self,x,pos = None):
      date = datetime.datetime.fromtimestamp(x)
      return date.strftime('%H:%M:%S')

    def updatedGui(self,subject,property,value):
      if property == "temperature": 
        self.updateTemperature(value)

    def updateTemperature(self,t):
      if t == None:
        return
      newTime = time.time()
      self.temperatures.append(t*1000)
      self.times.append(newTime)
      if len(self.gliding) > 0:
        self.gliding.append(self.gliding[-1]*0.7+t*0.3*1000)
      else:
        self.gliding.append(t*1000)
      while len(self.temperatures) > 200:
        self.temperatures.pop(0)
        self.times.pop(0)
        self.gliding.pop(0)
      self.canvas.axes.clear()
      self.canvas.axes.plot(self.times,self.temperatures)
      self.canvas.axes.plot(self.times,self.gliding)
      self.canvas.axes.set_xticks((self.times[0],self.times[-1]))
      xAxis = self.canvas.axes.xaxis
      xAxis.set_major_formatter(ticker.FuncFormatter(self.formatDate))
      self.canvas.draw()
      if len(self.gliding)>1:
        slope = (self.gliding[-1]-self.gliding[-2])/(self.times[-1]-self.times[-2])*60*60
      else:
        slope = 0
      if (slope>500) and t < 0.5:
        warning = "<br><font size=\"14\"color=\"red\"><blink><b>WARNING!</b></blink></font>"
      else:
        warning = ""
      if abs(slope) > 1000:
        slopeInfo = "%g K/hour" % (slope/1000.0)
      else:
        slopeInfo = "%g mK/hour" % (slope)
      if t < 1.0:
        self.temperature.setText("%g mK (%s)%s" % ((t*1000),slopeInfo,warning))
      else:
        self.temperature.setText("%g K (%s)%s" % (t,slopeInfo,warning))
    
          
    def __init__(self,instrument,parent=None):
        super(Panel,self).__init__(instrument,parent)

        self.title = QLabel(instrument.name())
        self.title.setAlignment(Qt.AlignCenter)
        self.title.setStyleSheet("QLabel {font:18px;}")
        self.temperatures = []
        self.times = []
        self.gliding = []

        self.temperature = QLabel("Please wait, fetching temperature...")
        self.temperature.setAlignment(Qt.AlignCenter)
        self.temperature.setStyleSheet("QLabel {font:14px;}")
        self.canvas = Canvas(dpi = 100)
        self.canvas.setFixedHeight(150)

        self.grid = QGridLayout(self)
        self.interval = 10000
        
        self.grid.addWidget(self.title,0,0)
        self.grid.addWidget(self.temperature,1,0)
        self.grid.addWidget(self.canvas)
        
        self.timer = QTimer(self)
        self.timer.setInterval(self.interval)
        self.timer.start()
        
        self.connect(self.timer,SIGNAL("timeout()"),lambda :self.instrument.dispatch("temperature"))
        
        self.setLayout(self.grid)

        instrument.attach(self)
          
class Panel(FrontPanel):

    def formatDate(self,x,pos = None):
      date = datetime.datetime.fromtimestamp(x)
      return date.strftime('%H:%M:%S')

    def updatedGui(self,subject,property,value):
      if property == "heliumLevel": 
        self.updateHeliumLevel(value)

    def updateHeliumLevel(self,l):
      if l == None:
        return
      newTime = time.time()
      self.heliumLevels.append(l)
      self.times.append(newTime)
      while len(self.heliumLevels) > 200:
        self.heliumLevels.pop(0)
        self.times.pop(0)
      self.canvas.axes.clear()
      self.canvas.axes.plot(self.times,self.heliumLevels)
      self.canvas.axes.set_xticks((self.times[0],self.times[-1]))
      xAxis = self.canvas.axes.xaxis
      xAxis.set_major_formatter(ticker.FuncFormatter(self.formatDate))
      self.canvas.draw()
      if l < 30:
        warning = "<br><font size=\"10\"color=\"red\"><blink><b>Refill Helium!</b></blink></font>"
      else:
        warning = ""
      self.heliumLevel.setText("%g mm%s" % (l,warning))
    
          
    def __init__(self,instrument,parent=None):
        super(Panel,self).__init__(instrument,parent)

        self.title = QLabel(instrument.name())
        self.title.setAlignment(Qt.AlignCenter)
        self.title.setStyleSheet("QLabel {font:18px;}")
        self.heliumLevels = []
        self.times = []
        self.gliding = []

        self.heliumLevel = QLabel("Please wait, fetching helium level...")
        self.heliumLevel.setAlignment(Qt.AlignCenter)
        self.heliumLevel.setStyleSheet("QLabel {font:14px;}")
        self.canvas = Canvas(dpi = 100)
        self.canvas.setFixedHeight(150)

        self.grid = QGridLayout(self)
        self.interval = 10000
        
        self.grid.addWidget(self.title,0,0)
        self.grid.addWidget(self.heliumLevel,1,0)
        self.grid.addWidget(self.canvas)
        
        self.timer = QTimer(self)
        self.timer.setInterval(self.interval)
        self.timer.start()
        
        self.connect(self.timer,SIGNAL("timeout()"),lambda :self.instrument.dispatch("heliumLevel"))
        
        self.setLayout(self.grid)

        instrument.attach(self)