Exemple #1
0
    def __init__(self, parent=None, macros=None, **kwargs):
        super().__init__(parent=parent, macros=macros, ui_filename=COMPLETE_UI)
        self.setup_icons()

        self.btnErr.filenames = [ERR_MAIN]
        self.btnWarn.filenames = [WARN_MAIN]

        self.btnSysHistory.filenames = [ALARM_MAIN]
        self.btnSysHistory.base_macros = {'P': macros['P'], 'T': 'Sys'}
        self.btnModHistory.filenames = [ALARM_MAIN]
        self.btnModHistory.base_macros = {'P': macros['P'], 'T': 'Mod'}

        # Warning Groups
        self.ch_mod_std_warn_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Mod-StdWarnGroup-Mon',
            value_slot=self.get_mod_std_warn_report)
        self.ch_mod_std_warn_report.connect()

        self.ch_sys_std_warn_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Sys-StdWarnGroup-Mon',
            value_slot=self.get_sys_std_warn_report)
        self.ch_sys_std_warn_report.connect()

        self.ch_mod_ext_warn_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Mod-ExtWarnGroup-Mon',
            value_slot=self.get_mod_ext_warn_report)
        self.ch_mod_ext_warn_report.connect()

        self.ch_sys_ext_warn_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Sys-ExtWarnGroup-Mon',
            value_slot=self.get_sys_ext_warn_report)
        self.ch_sys_ext_warn_report.connect()

        # Error Groups
        self.ch_mod_std_error_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Mod-StdErrGroup-Mon',
            value_slot=self.get_mod_std_error_report)
        self.ch_mod_std_error_report.connect()

        self.ch_sys_std_error_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Sys-StdErrGroup-Mon',
            value_slot=self.get_sys_std_error_report)
        self.ch_sys_std_error_report.connect()

        self.ch_mod_ext_error_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Mod-ExtErrGroup-Mon',
            value_slot=self.get_mod_ext_error_report)
        self.ch_mod_std_error_report.connect()

        self.ch_sys_ext_error_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Sys-ExtErrGroup-Mon',
            value_slot=self.get_sys_ext_error_report)
        self.ch_sys_ext_error_report.connect()
Exemple #2
0
    def initializeCamera(self, new_camera):
        new_camera = str(new_camera)
        self._color_map_limit_sliders_need_config = True
        self.times = np.zeros(10)
        self.old_timestamp = 0
        self.image_width = 0  #current width (width of ROI)
        self.image_max_width = 0  #full width.  Only used to reset ROI to full.
        self.image_max_height = 0  #full height.  Only used to reset ROI to full.
        self.image_data = np.zeros(0)
        self._average_counter = 0
        self._average_buffer = np.ndarray(0)
        self._needs_auto_range = True
        self.imageChannel = self.cameras[new_camera]["image"]
        self.widthChannel = self.cameras[new_camera][
            "roi_width"] or self.cameras[new_camera]["max_width"]
        self.maxWidthChannel = self.cameras[new_camera]["max_width"]
        self.maxHeightChannel = self.cameras[new_camera]["max_height"]
        self.roiXChannel = self.cameras[new_camera]["roi_x"]
        self.roiYChannel = self.cameras[new_camera]["roi_y"]
        self.roiWidthChannel = self.cameras[new_camera]["roi_width"]
        self.roiHeightChannel = self.cameras[new_camera]["roi_height"]

        self._channels = [
            PyDMChannel(address=self.imageChannel,
                        connection_slot=self.connectionStateChanged,
                        waveform_slot=self.receiveImageWaveform,
                        severity_slot=self.alarmSeverityChanged),
            PyDMChannel(address=self.widthChannel,
                        value_slot=self.receiveImageWidth),
            PyDMChannel(address=self.maxWidthChannel,
                        value_slot=self.receiveMaxWidth),
            PyDMChannel(address=self.maxHeightChannel,
                        value_slot=self.receiveMaxHeight)
        ]
        if self.roiXChannel and self.roiYChannel and self.roiWidthChannel and self.roiHeightChannel:
            self._channels.extend([
                PyDMChannel(address=self.roiXChannel,
                            value_slot=self.receiveRoiX,
                            value_signal=self.roi_x_signal,
                            write_access_slot=self.roiWriteAccessChanged),
                PyDMChannel(address=self.roiYChannel,
                            value_slot=self.receiveRoiY,
                            value_signal=self.roi_y_signal),
                PyDMChannel(address=self.roiWidthChannel,
                            value_slot=self.receiveRoiWidth,
                            value_signal=self.roi_w_signal),
                PyDMChannel(address=self.roiHeightChannel,
                            value_slot=self.receiveRoiHeight,
                            value_signal=self.roi_h_signal)
            ])
            self.ui.roiXLineEdit.setEnabled(True)
            self.ui.roiYLineEdit.setEnabled(True)
            self.ui.roiWLineEdit.setEnabled(True)
            self.ui.roiHLineEdit.setEnabled(True)
        else:
            self.ui.roiXLineEdit.clear()
            self.ui.roiXLineEdit.setEnabled(False)
            self.ui.roiYLineEdit.clear()
            self.ui.roiYLineEdit.setEnabled(False)
            self.ui.roiWLineEdit.clear()
            self.ui.roiWLineEdit.setEnabled(False)
            self.ui.roiHLineEdit.clear()
            self.ui.roiHLineEdit.setEnabled(False)
Exemple #3
0
class Regatron(Display):
    def __init__(self, parent=None, macros=None, **kwargs):
        super().__init__(parent=parent, macros=macros, ui_filename=COMPLETE_UI)
        self.setup_icons()

        self.btnErr.filenames = [ERR_MAIN]
        self.btnWarn.filenames = [WARN_MAIN]

        self.btnSysHistory.filenames = [ALARM_MAIN]
        self.btnSysHistory.base_macros = {'P': macros['P'], 'T': 'Sys'}
        self.btnModHistory.filenames = [ALARM_MAIN]
        self.btnModHistory.base_macros = {'P': macros['P'], 'T': 'Mod'}

        # Warning Groups
        self.ch_mod_std_warn_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Mod-StdWarnGroup-Mon',
            value_slot=self.get_mod_std_warn_report)
        self.ch_mod_std_warn_report.connect()

        self.ch_sys_std_warn_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Sys-StdWarnGroup-Mon',
            value_slot=self.get_sys_std_warn_report)
        self.ch_sys_std_warn_report.connect()

        self.ch_mod_ext_warn_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Mod-ExtWarnGroup-Mon',
            value_slot=self.get_mod_ext_warn_report)
        self.ch_mod_ext_warn_report.connect()

        self.ch_sys_ext_warn_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Sys-ExtWarnGroup-Mon',
            value_slot=self.get_sys_ext_warn_report)
        self.ch_sys_ext_warn_report.connect()

        # Error Groups
        self.ch_mod_std_error_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Mod-StdErrGroup-Mon',
            value_slot=self.get_mod_std_error_report)
        self.ch_mod_std_error_report.connect()

        self.ch_sys_std_error_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Sys-StdErrGroup-Mon',
            value_slot=self.get_sys_std_error_report)
        self.ch_sys_std_error_report.connect()

        self.ch_mod_ext_error_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Mod-ExtErrGroup-Mon',
            value_slot=self.get_mod_ext_error_report)
        self.ch_mod_std_error_report.connect()

        self.ch_sys_ext_error_report = PyDMChannel(
            address='ca://' + macros['P'] + ':Sys-ExtErrGroup-Mon',
            value_slot=self.get_sys_ext_error_report)
        self.ch_sys_ext_error_report.connect()

    # Warning
    def get_mod_ext_warn_report(self, value):
        self.lblModGenWarnExt.setText('\n'.join(
            get_report(value, EXTENDED_MAP, "Module extended")))

    def get_sys_ext_warn_report(self, value):
        self.lblSysGenWarnExt.setText('\n'.join(
            get_report(value, EXTENDED_MAP, "System extended")))

    def get_mod_std_warn_report(self, value):
        self.lblModGenWarnStd.setText('\n'.join(
            get_report(value, STANDARD_MAP, "Module standard")))

    def get_sys_std_warn_report(self, value):
        self.lblSysGenWarnStd.setText('\n'.join(
            get_report(value, STANDARD_MAP, "System standard")))

    # Error
    def get_mod_std_error_report(self, value):
        self.lblModGenErrStd.setText('\n'.join(
            get_report(value, STANDARD_MAP, "Module standard")))

    def get_mod_ext_error_report(self, value):
        self.lblModGenErrExt.setText('\n'.join(
            get_report(value, EXTENDED_MAP, "Module extended")))

    def get_sys_std_error_report(self, value):
        self.lblSysGenErrStd.setText('\n'.join(
            get_report(value, STANDARD_MAP, "System standard")))

    def get_sys_ext_error_report(self, value):
        self.lblSysGenErrExt.setText('\n'.join(
            get_report(value, EXTENDED_MAP, "System extended")))

    def setup_icons(self):
        REFRESH_ICON = IconFont().icon('refresh')
        # Overview
        self.btnSstate.setIcon(REFRESH_ICON)
        self.btnSCtrlMode.setIcon(REFRESH_ICON)
        self.btnMState.setIcon(REFRESH_ICON)
        self.btnMCtrlMode.setIcon(REFRESH_ICON)
        self.btnActIFace.setIcon(REFRESH_ICON)

        self.btnSave.setIcon(IconFont().icon('download'))
        self.btnClear.setIcon(IconFont().icon('eraser'))

        # Module
        self.btnMMV.setIcon(REFRESH_ICON)
        self.btnMMC.setIcon(REFRESH_ICON)
        self.btnMMinC.setIcon(REFRESH_ICON)
        self.btnMMP.setIcon(REFRESH_ICON)
        self.btnMMinV.setIcon(REFRESH_ICON)
        self.btnMMinP.setIcon(REFRESH_ICON)
        self.btnMRes.setIcon(REFRESH_ICON)
        self.btnNomDCV.setIcon(REFRESH_ICON)
        self.btnDCV.setIcon(REFRESH_ICON)
        self.btnMOV.setIcon(REFRESH_ICON)
        self.btnMOC.setIcon(REFRESH_ICON)
        self.btnMOP.setIcon(REFRESH_ICON)

        self.btnMVPRb.setIcon(REFRESH_ICON)
        self.btnMVLQ4Rb.setIcon(REFRESH_ICON)
        self.btnMCPRb.setIcon(REFRESH_ICON)
        self.btnMCQLRb.setIcon(REFRESH_ICON)
        self.btnMPPRb.setIcon(REFRESH_ICON)
        self.btnMPLQRb.setIcon(REFRESH_ICON)
        self.btnMRPRb.setIcon(REFRESH_ICON)

        # System
        self.PyDMPushButton_17.setIcon(REFRESH_ICON)
        self.PyDMPushButton_18.setIcon(REFRESH_ICON)
        self.PyDMPushButton_19.setIcon(REFRESH_ICON)
        self.PyDMPushButton_20.setIcon(REFRESH_ICON)
        self.PyDMPushButton_21.setIcon(REFRESH_ICON)
        self.PyDMPushButton_22.setIcon(REFRESH_ICON)
        self.PyDMPushButton_23.setIcon(REFRESH_ICON)
        self.PyDMPushButton_28.setIcon(REFRESH_ICON)
        self.PyDMPushButton_29.setIcon(REFRESH_ICON)
        self.PyDMPushButton_45.setIcon(REFRESH_ICON)
        self.PyDMPushButton_46.setIcon(REFRESH_ICON)
        self.PyDMPushButton_47.setIcon(REFRESH_ICON)
        self.PyDMPushButton_48.setIcon(REFRESH_ICON)
        self.PyDMPushButton_49.setIcon(REFRESH_ICON)
        self.PyDMPushButton_57.setIcon(REFRESH_ICON)
        self.PyDMPushButton_71.setIcon(REFRESH_ICON)
        self.PyDMPushButton_73.setIcon(REFRESH_ICON)

        # Advanced
        self.PyDMPushButton_41.setIcon(REFRESH_ICON)
        self.PyDMPushButton_50.setIcon(REFRESH_ICON)
        self.PyDMPushButton_51.setIcon(REFRESH_ICON)
        self.PyDMPushButton_52.setIcon(REFRESH_ICON)