Beispiel #1
0
 def set_all_scandata(self):
     self.publishing_scandata = True
     for c in self.counters:
         name = getattr(c, 'db_label', None)
         if name is None:
             name = c.label
         c.db_label = fix_varname(name)
         self.scandb.set_scandata(c.db_label, c.buff)
     self.publishing_scandata = False
Beispiel #2
0
    def init_scandata(self):
        if self.scandb is None:
            return
        self.scandb.clear_scandata()
        self.scandb.commit()
        time.sleep(0.05)
        names = []
        npts = len(self.positioners[0].array)
        for p in self.positioners:
            try:
                units = p.pv.units
            except:
                units = 'unknown'

            name = fix_varname(p.label)
            if name in names:
                name += '_2'
            if name not in names:
                self.scandb.add_scandata(name, p.array.tolist(),
                                         pvname=p.pv.pvname,
                                         units=units, notes='positioner')
                names.append(name)
        for c in self.counters:
            try:
                units = c.pv.units
            except:
                units = 'counts'

            name = fix_varname(c.label)
            if name in names:
                name += '_2'
            if name not in names:
                self.scandb.add_scandata(name, [],
                                         pvname=c.pv.pvname,
                                         units=units, notes='counter')
                names.append(name)
        self.scandb.commit()
Beispiel #3
0
 def run(self):
     while self.running:
         time.sleep(0.005)
         now = time.time()
         if self.pulse > self.last:
             ready = True
             if self.ready_pv is not None:
                 ready = (self.ready_pv.get() == self.ready_val)
             ready = ready and ((now- self.last_move_time) > self.dead_time)
             if ready and self.slave.write_access:
                 val = self.vals[self.pulse]
                 try:
                     print("Put ID To %i  E=%.4f" % (self.pulse, val))
                     self.slave.put(val)
                     self.last_move_time = time.time()
                 except:
                     print("PVFollow Put failed: ", self.slave.pvname , val)
             self.last = self.pulse
             if (self.scan is not None) and self.pulse > 3:
                 npts = self.scan.npts
                 cpt = self.pulse
                 dtime = self.scan.dwelltime
                 if isinstance(dtime, list):
                     dtime = dtime[0]
                 time_left = (npts-cpt)*dtime
                 self.scan.set_info('scan_time_estimate', time_left)
                 time_est  = hms(time_left)
                 msg = 'Point %i/%i, time left: %s' % (cpt, npts, time_est)
                 if (cpt - self.last_message) >  self.scan.message_points:
                     self.scan.write("%s\n" % msg)
                     self.last_message = cpt*1.0
                 self.scan.set_info('scan_progress', msg)
                 for c in self.scan.counters:
                     try:
                         c.buff = c.pv.get().tolist()
                     except:
                         pass
                     name = getattr(c, 'db_label', None)
                     if name is None:
                         name = c.label
                     c.db_label = fix_varname(name)
                     self.scan.scandb.set_scandata(c.db_label, c.buff)
                 self.scan.scandb.commit()
Beispiel #4
0
 def set_scandata(self, attr, value):
     if self.scandb is not None:
         self.scandb.set_scandata(fix_varname(attr), value)