示例#1
0
    def __init__(self, *, vsync=True, logger=None):
        #
        self._logger = logger or get_logger(name='harvesters')

        #
        super().__init__()

        #
        self._mutex = QMutex()

        profile = True if 'HARVESTER_PROFILE' in os.environ else False
        self._harvester_core = HarvesterCore(profile=profile,
                                             logger=self._logger)
        self._ia = None  # Image Acquirer

        #
        self._widget_canvas = Canvas2D(vsync=vsync)
        self._widget_canvas.create_native()
        self._widget_canvas.native.setParent(self)

        #
        self._action_stop_image_acquisition = None

        #
        self._observer_widgets = []

        #
        self._widget_device_list = None
        self._widget_status_bar = None
        self._widget_main = None
        self._widget_about = None
        self._widget_attribute_controller = None

        #
        self._signal_update_statistics.connect(self.update_statistics)
        self._signal_stop_image_acquisition.connect(
            self._stop_image_acquisition)
        self._thread_statistics_measurement = _PyQtThread(
            parent=self,
            mutex=self._mutex,
            worker=self._worker_update_statistics,
            update_cycle_us=250000)

        #
        self._initialize_widgets()

        #
        for o in self._observer_widgets:
            o.update()
示例#2
0
    def action_on_connect(self):
        #
        try:
            self._ia = self.harvester_core.create_image_acquirer(
                self.device_list.currentIndex())
            # We want to hold one buffer to keep the chunk data alive:
            self._ia.num_buffers += 1
        except (
                NotInitializedException,
                InvalidHandleException,
                InvalidIdException,
                ResourceInUseException,
                InvalidParameterException,
                NotImplementedException,
                AccessDeniedException,
        ) as e:
            self._logger.error(e, exc_info=True)

        if not self._ia:
            # The device is not available.
            return

        #
        self.ia.thread_image_acquisition = _PyQtThread(parent=self,
                                                       mutex=self._mutex)
        self.ia.signal_stop_image_acquisition = self._signal_stop_image_acquisition

        try:
            if self.ia.remote_device.node_map:
                self._widget_attribute_controller = \
                    AttributeController(
                        self.ia.remote_device.node_map,
                        parent=self
                    )
        except AttributeError:
            pass

        #
        self.canvas.ia = self.ia