Exemplo n.º 1
0
    def _get_file_number(self):
        """
        get synced file number for log file name
        """

        try:
            file_num_task = iodaq.DigitalInput(self.file_num_NI_dev,
                                               self.file_num_NI_port,
                                               self.file_num_NI_lines)
            file_num_task.StartTask()
            array = file_num_task.read()
            num_str = (''.join([str(line) for line in array]))[::-1]
            file_number = int(num_str, 2)
            # print array, file_number
        except Exception as e:
            print e
            file_number = None

        return file_number
Exemplo n.º 2
0
    def _wait_for_trigger(self, event):
        """
        time place holder for waiting for trigger

        Parameters
        ----------
        event : str from {'low_level','high_level','negative_edge','positive_edge'}

        Returns
        -------
        Bool :
             returns True if trigger is detected and False if manual stop
             signal is detected
        """

        #check NI signal
        trigger_task = iodaq.DigitalInput(self.trigger_NI_dev,
                                          self.trigger_NI_port,
                                          self.trigger_NI_line)
        trigger_task.StartTask()

        print "Waiting for trigger: " + event + ' on ' + trigger_task.devstr

        if event == 'low_level':
            last_TTL = trigger_task.read()
            while last_TTL != 0 and self.keep_display:
                last_TTL = trigger_task.read()[0]
                self._update_display_status()
            else:
                if self.keep_display:
                    trigger_task.StopTask()
                    print 'Trigger detected. Start displaying...\n\n'
                    return True
                else:
                    trigger_task.StopTask()
                    print 'Manual stop signal detected. Stopping the program.'
                    return False
        elif event == 'high_level':
            last_TTL = trigger_task.read()[0]
            while last_TTL != 1 and self.keep_display:
                last_TTL = trigger_task.read()[0]
                self._update_display_status()
            else:
                if self.keep_display:
                    trigger_task.StopTask()
                    print 'Trigger detected. Start displaying...\n\n'
                    return True
                else:
                    trigger_task.StopTask()
                    print 'Manual stop signal detected. Stopping the program.'
                    return False
        elif event == 'negative_edge':
            last_TTL = trigger_task.read()[0]
            while self.keep_display:
                current_TTL = trigger_task.read()[0]
                if (last_TTL == 1) and (current_TTL == 0):
                    break
                else:
                    last_TTL = int(current_TTL)
                    self._update_display_status()
            else:
                trigger_task.StopTask()
                print 'Manual stop signal detected. Stopping the program.'
                return False
            trigger_task.StopTask()
            print 'Trigger detected. Start displaying...\n\n'
            return True
        elif event == 'positive_edge':
            last_TTL = trigger_task.read()[0]
            while self.keep_display:
                current_TTL = trigger_task.read()[0]
                if (last_TTL == 0) and (current_TTL == 1):
                    break
                else:
                    last_TTL = int(current_TTL)
                    self._update_display_status()
            else:
                trigger_task.StopTask()
                print 'Manual stop signal detected. Stopping the program.'
                return False
            trigger_task.StopTask()
            print 'Trigger detected. Start displaying...\n\n'
            return True
        else:
            raise NameError, "`trigger` not in " \
            "{'negative_edge','positive_edge', 'high_level','low_level'}!"
Exemplo n.º 3
0
    def _wait_for_trigger(self, event):
        """
        time place holder for waiting for trigger

        Parameters
        ----------
        event : str from {'low_level','high_level','negative_edge','positive_edge'}
            an event triggered via a National Instuments experimental device.
        Returns
        -------
        Bool :
            returns `True` if trigger is detected and `False` if manual stop
            signal is detected.
        """

        # check NI signal
        trigger_task = iodaq.DigitalInput(self.trigger_NI_dev,
                                          self.trigger_NI_port,
                                          self.trigger_NI_line)
        trigger_task.StartTask()

        print("Waiting for trigger: {} on {}.".format(event, trigger_task.devstr))

        if event == 'low_level':
            last_TTL = trigger_task.read()
            while last_TTL != 0 and self.keep_display:
                last_TTL = trigger_task.read()[0]
                self._update_display_status()
            else:
                if self.keep_display:
                    trigger_task.StopTask()
                    print('Trigger detected. Start displaying...\n\n')
                    return True
                else:
                    trigger_task.StopTask()
                    print('Keyboard interrupting signal detected. Stopping the program.')
                    return False
        elif event == 'high_level':
            last_TTL = trigger_task.read()[0]
            while last_TTL != 1 and self.keep_display:
                last_TTL = trigger_task.read()[0]
                self._update_display_status()
            else:
                if self.keep_display:
                    trigger_task.StopTask()
                    print('Trigger detected. Start displaying...\n\n')
                    return True
                else:
                    trigger_task.StopTask()
                    print('Keyboard interrupting signal detected. Stopping the program.')
                    return False
        elif event == 'negative_edge':
            last_TTL = trigger_task.read()[0]
            while self.keep_display:
                current_TTL = trigger_task.read()[0]
                if (last_TTL == 1) and (current_TTL == 0):
                    break
                else:
                    last_TTL = int(current_TTL)
                    self._update_display_status()
            else:
                trigger_task.StopTask()
                print('Keyboard interrupting signal detected. Stopping the program.')
                return False
            trigger_task.StopTask()
            print('Trigger detected. Start displaying...\n\n')
            return True
        elif event == 'positive_edge':
            last_TTL = trigger_task.read()[0]
            while self.keep_display:
                current_TTL = trigger_task.read()[0]
                if (last_TTL == 0) and (current_TTL == 1):
                    break
                else:
                    last_TTL = int(current_TTL)
                    self._update_display_status()
            else:
                trigger_task.StopTask();
                print('Keyboard interrupting signal detected. Stopping the program.')
                return False
            trigger_task.StopTask()
            print('Trigger detected. Start displaying...\n\n')
            return True
        else:
            raise NameError("`trigger` not in " \
                             "{'negative_edge','positive_edge', 'high_level','low_level'}!")