From 6d7e06e9ecaac75dad00556384e7b83545ba2a8e Mon Sep 17 00:00:00 2001 From: chrin Date: Thu, 28 Aug 2025 13:48:57 +0200 Subject: [PATCH] v1.8.3 --- config/control/hush.json | 5 -- config/g1/hush.json | 4 -- config/g2/hush.json | 4 -- config/g3/hush.json | 4 -- config/o2/hush.json | 4 -- config/pif/hush.json | 4 -- hush.sh | 2 +- hush_g1.sh | 2 +- hush_g2.sh | 2 +- hush_g3.sh | 2 +- hush_o2.sh | 2 +- hush_pif.sh | 2 +- src/gui.py | 121 ++++++++++++++++++++++++++++++++++----- src/t.py | 2 +- 14 files changed, 113 insertions(+), 47 deletions(-) diff --git a/config/control/hush.json b/config/control/hush.json index 6610046..9ea73b6 100755 --- a/config/control/hush.json +++ b/config/control/hush.json @@ -1,5 +1,4 @@ { - "Parameters":{ "drawLine" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}}, @@ -10,10 +9,6 @@ }, "Expert":{ - "alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:", - "value" : " 90"}}, - "alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:", - "value" : "180"}}, "debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}}, "simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}} }, diff --git a/config/g1/hush.json b/config/g1/hush.json index ce89202..6ec5c0f 100755 --- a/config/g1/hush.json +++ b/config/g1/hush.json @@ -10,10 +10,6 @@ }, "Expert":{ - "alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:", - "value" : " 90"}}, - "alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:", - "value" : "180"}}, "debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}}, "simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}} }, diff --git a/config/g2/hush.json b/config/g2/hush.json index 0c39ad0..acd8d0b 100755 --- a/config/g2/hush.json +++ b/config/g2/hush.json @@ -10,10 +10,6 @@ }, "Expert":{ - "alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:", - "value" : " 90"}}, - "alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:", - "value" : "180"}}, "debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}}, "simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}} }, diff --git a/config/g3/hush.json b/config/g3/hush.json index 8642849..c8db0d4 100755 --- a/config/g3/hush.json +++ b/config/g3/hush.json @@ -10,10 +10,6 @@ }, "Expert":{ - "alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:", - "value" : " 90"}}, - "alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:", - "value" : "180"}}, "debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}}, "simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}} }, diff --git a/config/o2/hush.json b/config/o2/hush.json index 0498cf8..1e0bc68 100755 --- a/config/o2/hush.json +++ b/config/o2/hush.json @@ -10,10 +10,6 @@ }, "Expert":{ - "alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:", - "value" : " 90"}}, - "alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:", - "value" : "180"}}, "debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}}, "simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}} }, diff --git a/config/pif/hush.json b/config/pif/hush.json index b2df758..973f731 100755 --- a/config/pif/hush.json +++ b/config/pif/hush.json @@ -10,10 +10,6 @@ }, "Expert":{ - "alarmMinor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Minor Alarm:", - "value" : " 90"}}, - "alarmMajor": {"flag" : 1, "data":{"widget": "QLineEdit", "text" : "Minutes to Major Alarm:", - "value" : "180"}}, "debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}}, "simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}} }, diff --git a/hush.sh b/hush.sh index 23cf661..76fa539 100755 --- a/hush.sh +++ b/hush.sh @@ -1,5 +1,5 @@ #!/bin/bash -cd /proscan/bd/applications/hush/hla/1.8.2 +cd /proscan/bd/applications/hush/hla/1.8.3 # For use if script is sourced rather than executed appNameDefault="hush.sh" diff --git a/hush_g1.sh b/hush_g1.sh index 5488f0b..a0dc674 100755 --- a/hush_g1.sh +++ b/hush_g1.sh @@ -1,5 +1,5 @@ #!/bin/bash -cd /proscan/bd/applications/hush/hla/1.8.2 +cd /proscan/bd/applications/hush/hla/1.8.3 # For use if script is sourced rather than executed appNameDefault="hush_g1.sh" diff --git a/hush_g2.sh b/hush_g2.sh index 5d6c433..29525e4 100755 --- a/hush_g2.sh +++ b/hush_g2.sh @@ -1,5 +1,5 @@ #!/bin/bash -cd /proscan/bd/applications/hush/hla/1.8.2 +cd /proscan/bd/applications/hush/hla/1.8.3 # For use if script is sourced rather than executed appNameDefault="hush_g2.sh" diff --git a/hush_g3.sh b/hush_g3.sh index 4ea845a..e20407a 100755 --- a/hush_g3.sh +++ b/hush_g3.sh @@ -1,5 +1,5 @@ #!/bin/bash -cd /proscan/bd/applications/hush/hla/1.8.2 +cd /proscan/bd/applications/hush/hla/1.8.3 # For use if script is sourced rather than executed appNameDefault="hush_g3.sh" diff --git a/hush_o2.sh b/hush_o2.sh index 36cdee4..c75c628 100755 --- a/hush_o2.sh +++ b/hush_o2.sh @@ -1,5 +1,5 @@ #!/bin/bash -cd /proscan/bd/applications/hush/hla/1.8.2 +cd /proscan/bd/applications/hush/hla/1.8.3 # For use if script is sourced rather than executed appNameDefault="hush_o2.sh" diff --git a/hush_pif.sh b/hush_pif.sh index cd3267b..2e90282 100755 --- a/hush_pif.sh +++ b/hush_pif.sh @@ -1,5 +1,5 @@ #!/bin/bash -cd /proscan/bd/applications/hush/hla/1.8.2 +cd /proscan/bd/applications/hush/hla/1.8.3 # For use if script is sourced rather than executed appNameDefault="hush_pif.sh" diff --git a/src/gui.py b/src/gui.py index 64b11d7..a1e9234 100644 --- a/src/gui.py +++ b/src/gui.py @@ -94,7 +94,44 @@ class AppGui(QWidget): no_alarm_color_str = f'background-color: {no_alarm_color};' self.no_alarm_sss = ('QLabel {color:#000000; font-weight: bold; ' + no_alarm_color_str + '}') - + + + self.pv_alarm_warn = self.settings.data['alarmPV']['warn'] + self.pv_alarm_error = self.settings.data['alarmPV']['error'] + self.pv_user_start_time = self.settings.data['alarmPV']['startTime'] + self.pv_user_end_time = self.settings.data['alarmPV']['endTime'] + + + self.alarm_warn = 90 + self.alarm_error = 180 + self.user_start_time = "07:00" + self.user_end_time = "17:00" + + def cb_alarm_warn(pv, handle, pvdata): + if pvdata.value[0] is not None: + self.alarm_warn = pvdata.value[0] + + def cb_alarm_error(pv, handle, pvdata): + if pvdata.value[0] is not None: + self.alarm_error = pvdata.value[0] + + def cb_user_start(pv, handle, pvdata): + if pvdata.value[0] is not None: + self.user_start_time = pvdata.value[0] + + def cb_user_end(pv, handle, pvdata): + if pvdata.value[0] is not None: + self.user_end_time = pvdata.value[0] + + self.cafe.openMonitorPrepare() + self.cafe.monitorStart(self.pv_alarm_warn, cb=cb_alarm_warn) + self.cafe.monitorStart(self.pv_alarm_error, cb=cb_alarm_error) + self.cafe.monitorStart(self.pv_user_start_time, cb=cb_user_start) + self.cafe.monitorStart(self.pv_user_end_time, cb=cb_user_end) + self.cafe.openMonitorNow() + + + self.status_dict = {} self.font_gui = self.parent.gui_frame.font_gui @@ -102,7 +139,7 @@ class AppGui(QWidget): self.input_labels = self.parent.input_labels self.expert_parameters = self.parent.expert_parameters self.gui_frame.expert_parameters_group.setFixedWidth(260) #260 - self.gui_frame.expert_parameters_group.setFixedHeight(180) #130 + self.gui_frame.expert_parameters_group.setFixedHeight(130) #130 self.gui_frame.operator_parameters_group.setFixedWidth(260) self.gui_frame.operator_parameters_group.setFixedHeight(130) self.gui_frame.measurement_tab_wgt.setFixedWidth(440) @@ -158,8 +195,11 @@ class AppGui(QWidget): self.gui_frame.central_tab_widget.tabBar().setTabText(0, "Control") #self.gui_frame.central_tab_widget.tabBar().setTabText(1, "IOC") print("====================================") + + + if "Controlroom" in self.assigned_master: - + shift_type = CAQMenu(self, pv_name="PRO-HUSH:SHIFT-TYPE") self.gui_frame.operator_parameters_group.layout().insertWidget( 0, QLabel(" Shift Type:")) @@ -199,7 +239,8 @@ class AppGui(QWidget): self.gui_frame.results_layout.addWidget( self.reset_lastpwr(), 1, 0, 1, 1, Qt.AlignmentFlag(Qt.AlignTop|Qt.AlignCenter)) - + + self.expert_labels = self.parent.expert_labels self.settings = self.parent.settings @@ -255,9 +296,14 @@ class AppGui(QWidget): open_list = (hush_list + self.sec_state_list + pv_list + self.pv_name_in_sector_list) self.cafe.openPrepare() - self.cafe.open(open_list) - self.cafe.openNowAndWait(1.0) - + self.cafe.open(open_list) + self.cafe.open(self.pv_alarm_warn) + self.cafe.open(self.pv_alarm_error) + self.cafe.open(self.pv_user_start_time) + self.cafe.open(self.pv_user_end_time) + self.cafe.openNowAndWait(0.4) + time.sleep(0.1) + self.cafe.printDisconnected() self.submastership_dict = { @@ -347,6 +393,13 @@ class AppGui(QWidget): except Exception as ex: print("EMIT FAILED", str(ex)) + #Alarm handling + self.gui_frame.results_layout.addWidget( + self.group_alarm(), 1, 1, 1, 1, + Qt.AlignmentFlag(Qt.AlignTop|Qt.AlignCenter)) + + + self.gui_frame.simulation_checkbox.stateChanged.connect( self.simulation_update) @@ -433,9 +486,12 @@ class AppGui(QWidget): current_time = datetime.now().time() #given_time_start = datetime.strptime("07:00AM", "I:%M%p").time() #given_time_stop = datetime.strptime("05:30PM", "I:%M%p").time() - given_time_start = datetime.strptime("07:00", "%H:%M").time() - given_time_stop = datetime.strptime("17:00", "%H:%M").time() - + + given_time_start = datetime.strptime(self.user_start_time, "%H:%M").time() + given_time_stop = datetime.strptime(self.user_end_time, "%H:%M").time() + + #print(given_time_start, given_time_stop) + if given_time_start <= current_time <= given_time_stop: return True else: @@ -465,12 +521,12 @@ class AppGui(QWidget): self.simple_alarm[idx].setStyleSheet(self.no_alarm_sss) alarm_val = 0 - elif self.simple_tdiff[idx][0] > int( - self.input_parameters['alarmMajor']): + elif self.simple_tdiff[idx][0] > int(self.alarm_error): + #self.input_parameters['alarmMajor']): self.simple_alarm[idx].setStyleSheet(self.alarm_major_sss) alarm_val = 2 - elif self.simple_tdiff[idx][0] > int( - self.input_parameters['alarmMinor']): + elif self.simple_tdiff[idx][0] > int(self.alarm_warn): + #self.input_parameters['alarmMinor']): self.simple_alarm[idx].setStyleSheet(self.alarm_minor_sss) alarm_val = 1 else: @@ -482,7 +538,8 @@ class AppGui(QWidget): int(self.simple_tdiff[idx][0])) + ' min ') return alarm_val - + + for sect in self.simple_sector_list: idx = self.simple_sector_list.index(sect) pv = self.settings.data[sect]['alarm'] @@ -1173,6 +1230,40 @@ class AppGui(QWidget): return qsector, qpinit, qpnow, qpsave, qptime, qptotsave, qawakealarm + + def group_alarm(self): + qgrid = QGridLayout() + + qwarn = CAQTextEntry(self, pv_name=self.pv_alarm_warn) + qerror = CAQTextEntry(self, pv_name=self.pv_alarm_error) + qstarttime = CAQTextEntry(self, pv_name=self.pv_user_start_time) + qendtime = CAQTextEntry(self, pv_name=self.pv_user_end_time) + qlwarn = QLabel("Minutes to Minor Alarm:") + qlerror = QLabel(" Major Alarm:") + qlstarttime = QLabel("User Operation Start Time:") + #qlstarttime.setToolTip("Format HH::MM") + + qlendtime = QLabel(" End Time:") + #qlendtime.setToolTip("Format HH::MM") + + qgrid.addWidget(qlwarn, 0, 0, 1, 2) + qgrid.addWidget(qlerror, 0, 3, 1, 1) + qgrid.addWidget(qlstarttime, 1, 0, 1, 2) + qgrid.addWidget(qlendtime, 1, 3, 1, 1) + qgrid.addWidget(qwarn, 0, 2, 1, 1) + qgrid.addWidget(qerror, 0, 4, 1, 1) + qgrid.addWidget(qstarttime, 1, 2, 1, 1) + qgrid.addWidget(qendtime, 1, 4, 1, 1) + + qw = QGroupBox("Alarm Settings") + qw.setContentsMargins(9, 9, 9, 9) + qw.setObjectName("OUTER") + qw.setLayout(qgrid) + qw.setFixedWidth(410) # 596 + qw.setFixedHeight(150) + + return qw + def group_sector_qtabwidget(self): #idx_last = self.settings.data["header"].index("MASTER") diff --git a/src/t.py b/src/t.py index 80c3c6a..59632ff 100644 --- a/src/t.py +++ b/src/t.py @@ -9,7 +9,7 @@ def in_range(): given_time_stop = datetime.strptime("17:00", "%H:%M").time() if given_time_start <= current_time <= given_time_stop: - print("in range") + print("in range", current_time) return True else: print(current_time)