コード例 #1
0
 def from_units_to_volts(self, value, dev):
     units = Q_(dev.properties['calibration']['units'])
     slope = dev.properties['calibration']['slope'] * units
     offset = dev.properties['calibration']['offset'] * units
     value = value.to(units)
     value = value.m
     slope = slope.m
     offset = offset.m
     return (value - offset) / slope
コード例 #2
0
ファイル: base_camera.py プロジェクト: nanoepics/pynta
    def configure(self, properties: dict):
        self.logger.info('Updating config')
        update_cam = False
        update_roi = False
        update_exposure = False
        update_binning = False
        for k, new_prop in properties.items():
            self.logger.debug('Updating {} to {}'.format(k, new_prop))

            update_cam = True
            if k in self.config:
                old_prop = self.config[k]
                if new_prop != old_prop:
                    update_cam = True
            else:
                update_cam = True

            if update_cam:
                if k in ['roi_x1', 'roi_x2', 'roi_y1', 'roi_y2']:
                    update_roi = True
                elif k == 'exposure_time':
                    update_exposure = True
                elif k in ['binning_x', 'binning_y']:
                    update_binning = True

        if update_cam:
            if update_roi:
                X = sorted([properties['roi_x1'], properties['roi_x2']])
                Y = sorted([properties['roi_y1'], properties['roi_y2']])
                self.set_ROI(X, Y)
                self.config.update({
                    'roi_x1': X[0],
                    'roi_x2': X[1],
                    'roi_y1': Y[0],
                    'roi_y2': Y[1]
                })

            if update_exposure:
                exposure = properties['exposure_time']
                if isinstance(exposure, str):
                    exposure = Q_(exposure)

                new_exp = self.set_exposure(exposure)
                self.config['exposure_time'] = new_exp

            if update_binning:
                self.set_binning(properties['binning_x'],
                                 properties['binning_y'])
                self.config.update({
                    'binning_x': properties['binning_x'],
                    'binning_y': properties['binning_y']
                })
コード例 #3
0
    def __init__(self, camera):
        super().__init__(camera)

        self.running = False
        self.xsize = 1080
        self.ysize = 720
        self.sb = SimBrownian((self.xsize, self.ysize))
        self.maxX = 1800
        self.maxY = 720
        self.exposure = Q_('10ms')
        self.X = [0, self.maxX-1]
        self.Y = [0, self.maxY-1]
        self.logger = get_logger(name=__name__)
コード例 #4
0
    def analog_output_dc(self, conditions):
        """ Sets the analog output of the NI card. For the time being is thought as a DC constant value.

        :param dict conditions: specifies DEV and Value
        :return:
        """
        dev = conditions['dev']
        port = "Dev%s/ao%s" % (self.daq_num, dev.properties['port'])
        units = Q_(dev.properties['calibration']['units'])
        min_value = Q_(dev.properties['limits']['min']).to(units)
        max_value = Q_(dev.properties['limits']['max']).to(units)
        # Convert values to volts:
        value = conditions['value'].to(units)
        V = self.from_units_to_volts(value, dev)
        min_V = self.from_units_to_volts(min_value, dev)
        max_V = self.from_units_to_volts(max_value, dev)
        t = nidaq.Task()
        t.CreateAOVoltageChan(port, None, min_V, max_V, nidaq.DAQmx_Val_Volts,
                              None)
        t.WriteAnalogScalarF64(nidaq.bool32(True), 0, V, None)
        t.StopTask()
        t.ClearTask()
コード例 #5
0
    def configure(self, properties):
        self.logger.info('Updating config')
        update_cam = False
        update_roi = False
        update_exposure = False
        update_binning = True
        for k in properties:
            new_prop = properties[k]
            self.logger.debug('Updating {} to {}'.format(k, new_prop))

            update_cam = True
            if k in self.config:
                old_prop = self.config[k]
                if new_prop != old_prop:
                    update_cam = True
            else:
                update_cam = True

            if update_cam:
                if k in ['roi_x1', 'roi_x2', 'roi_y1', 'roi_y2']:
                    update_roi = True
                elif k == 'exposure_time':
                    update_exposure = True
                elif k in ['binning_x', 'binning_y']:
                    update_binning = True

        if update_cam:
            if update_roi:

                X = np.sort([properties['roi_x1'], properties['roi_x2']])
                Y = np.sort([properties['roi_y1'], properties['roi_y2']])
                self.setROI(X, Y)
                self.config.update({
                    'roi_x1': X[0],
                    'roi_x2': X[1],
                    'roi_y1': Y[0],
                    'roi_y2': Y[1]
                })

            if update_exposure:
                exposure = Q_(properties['exposure_time'])
                new_exp = self.setExposure(exposure)
                self.config['exposure_time'] = new_exp

            if update_binning:
                self.setBinning(properties['binning_x'],
                                properties['binning_y'])
                self.config.update({
                    'binning_x': properties['binning_x'],
                    'binning_y': properties['binning_y']
                })
コード例 #6
0
ファイル: basler.py プロジェクト: nanoepics/pynta
 def get_exposure(self) -> Q_:
     self.exposure = float(self.camera.ExposureTime.ToString()) * Q_('us')
     return self.exposure
コード例 #7
0
ファイル: basler.py プロジェクト: nanoepics/pynta
        self.camera.AcquisitionStop.Execute()

    def __str__(self):
        return self.friendly_name

    def __del__(self):
        self.camera.Close()


if __name__ == '__main__':
    from time import sleep

    logger.setLevel(logging.DEBUG)
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    ch.setFormatter(formatter)
    logger.addHandler(ch)
    logger.info('Starting Basler')
    basler = Camera(0)
    basler.initialize()
    basler.set_acquisition_mode(basler.MODE_SINGLE_SHOT)
    basler.set_exposure(Q_('.02s'))
    basler.trigger_camera()
    print(len(basler.read_camera()))
    basler.set_acquisition_mode(basler.MODE_CONTINUOUS)
    basler.trigger_camera()
    sleep(1)
    imgs = basler.read_camera()
    print(len(imgs))