def _dump(self): d = dict( counts=self.counts, last_shot_time=generate_datetimestamp() ) return d
def add_shot(self, **kw): ''' @type **kw: C{str} @param **kw: ''' n = len(self.history) shot = LaserShot(id=n, timestamp=generate_datetimestamp(), **kw) self.history.append(shot) self.__dump()
def add_time_stamped_value(self, value, frame_key=None, rawtime=False): ''' ''' if frame_key is None: frame_key = self._current_frame frame = self._get_frame(frame_key) if frame is not None: if rawtime: if self.time_gen is None: self.time_gen = time_generator() t = 0 else: t = self.time_gen.next() else: t = generate_datetimestamp() datum = (t, value) self.new_writer(frame, datum)
def add_time_stamped_value(self, value, frame_key=None, rawtime=False): ''' ''' if frame_key is None: frame_key = self._current_frame frame = self._get_frame(frame_key) if frame is not None: if rawtime: if self.time_gen is None: self.time_gen = time_generator() t = 0 else: t = next(self.time_gen) else: t = generate_datetimestamp() datum = (t, value) self.new_writer(frame, datum)
def _scan_(self, *args): if self.scan_func: try: v = getattr(self, self.scan_func)(verbose=False) except AttributeError as e: print('exception', e) return if v is not None: # self.debug('current scan value={}'.format(v)) self.current_scan_value = str(v) # self.debug('current scan func={}, value ={}'.format(self.scan_func, v)) x = None if self.graph_scan_data: self.debug('graphing scan data') if isinstance(v, tuple): x = self.graph.record_multiple(v) elif isinstance(v, PlotRecord): for pi, d in zip(v.plotids, v.data): if isinstance(d, tuple): x = self.graph.record_multiple(d, plotid=pi) else: x = self.graph.record(d, plotid=pi) v = v.as_data_tuple() else: x = self.graph.record(v) v = (v,) if self.record_scan_data: self.debug('recording scan data') if x is None: x = time.time() if self.dm_kind == 'csv': ts = generate_datetimestamp() self.data_manager.write_to_frame((ts, '{:<8s}'.format('{:0.2f}'.format(x))) + v) else: tab = self.data_manager.get_table('scan1', '/scans') if tab is not None: r = tab.row r['time'] = x r['value'] = v[0] r.append() tab.flush() self._scan_hook(v) else: ''' scan func must return a value or we will stop the scan since the timer runs on the main thread any long comms timeouts slow user interaction ''' if self._no_response_counter > 3: self.timer.Stop() self.info('no response. stopping scan func={}'.format(self.scan_func)) self._scanning = False self._no_response_counter = 0 else: self._no_response_counter += 1