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
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()
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()
def set_scandata(self, attr, value): if self.scandb is not None: self.scandb.set_scandata(fix_varname(attr), value)