Example #1
0
    def __init__(self):
        super().__init__()
        self.setWindowTitle('MiniPET')

        self.finish = False
        self.status = 'Ready'
        self.data = None
        default_config = os.path.join(PicoNuclear.__path__[0], 'config',
                                      'default.xml')
        self.config = tools.load_configuration(default_config)

        self.calib = {'A': [0, 1], 'B': [0, 1]}
        self.ch_range = [0, self.config['ch_range']]
        self.ch_bins = self.config['ch_range']
        self.t_range = [
            int(-self.config['t_range'] / 2),
            int(self.config['t_range'] / 2)
        ]
        self.t_bins = self.config['t_range']

        self.path_name = os.path.expanduser('~')

        try:
            self.s = PicoScope3000A()

            self.s.set_channel('A',
                               coupling_type=self.config['A']['coupling'],
                               range_value=self.config['A']['range'],
                               offset=self.config['A']['offset'])
            self.s.set_channel('B',
                               coupling_type=self.config['B']['coupling'],
                               range_value=self.config['B']['range'],
                               offset=self.config['B']['offset'])
            self.s.set_trigger(
                self.config['trigger']['source'],
                threshold=self.config['trigger']['threshold'],
                direction=self.config['trigger']['direction'],
                auto_trigger=self.config['trigger']['autotrigger'])
            self.clock = self.s.get_interval_from_timebase(
                self.config['timebase'],
                self.config['pre'] + self.config['post'])
        except PicoNuclear.pico3000a.DeviceNotFoundError:
            demo_msg = QMessageBox()
            demo_msg.setIcon(QMessageBox.Warning)
            demo_msg.setWindowTitle('Warning')
            demo_msg.setText('PicoScope not found!')
            demo_msg.setInformativeText(
                'Demo mode will be used. Do you want to continue?')
            demo_msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
            ret_val = demo_msg.exec_()
            if ret_val == QMessageBox.No:
                sys.exit()

            self.s = None
            demo_data_path = os.path.join(PicoNuclear.__path__[0], 'demo',
                                          'demo_data.txt')
            self.demo_data = numpy.loadtxt(demo_data_path)

        self.initUI()
Example #2
0
    def __init__(self):
        super().__init__()
        self.setWindowTitle('MiniPET')

        self.finish = False
        self.status = 'Ready'
        self.data = None
        default_config = os.path.join(PicoNuclear.__path__[0], 'config',
                                      'default.xml')
        self.config = tools.load_configuration(default_config)
        self.calib = {'A': [0, 1], 'B': [0, 1]}
        self.ch_range = [0, self.config['ch_range']]
        self.ch_bins = self.config['ch_range']
        self.t_range = [-self.config['t_range'], self.config['t_range']]
        self.t_bins = 2 * self.config['t_range']

        self.path_name = os.path.expanduser('~')

        self.initUI()
Example #3
0
import argparse
import numpy
import matplotlib.pyplot as plt
from PicoNuclear.pico3000a import PicoScope3000A
import PicoNuclear.tools as tools

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('config',
                        type=argparse.FileType('r'),
                        help='XML configuration file')
    parser.add_argument('--save', help='Name of output file with waveforms')

    args = parser.parse_args()

    config = tools.load_configuration(args.config)
    s = PicoScope3000A()

    s.set_channel('A',
                  coupling_type=config['A']['coupling'],
                  range_value=config['A']['range'],
                  offset=config['A']['offset'])
    s.set_channel('B',
                  coupling_type=config['B']['coupling'],
                  range_value=config['B']['range'],
                  offset=config['B']['offset'])
    s.set_trigger(config['trigger']['source'],
                  threshold=config['trigger']['threshold'],
                  direction=config['trigger']['direction'],
                  auto_trigger=config['trigger']['autotrigger'])
    print(
Example #4
0
 def default_clicked(self):
     default_config = os.path.join(PicoNuclear.__path__[0], 'config',
                                   'default.xml')
     self.config = tools.load_configuration(default_config)
     self.close()