Example #1
0
    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()
Example #3
0
    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()
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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