From 2264836d736f3779c17a898bf97d9db21de2269a Mon Sep 17 00:00:00 2001 From: Tanvi Date: Fri, 22 Mar 2024 16:49:46 -0400 Subject: [PATCH 1/2] ALL BUTTONS WORK!! --- .../CTC_Maintenance.cpython-312.pyc | Bin 4125 -> 4122 bytes CTC/__pycache__/CTC_Testbench.cpython-312.pyc | Bin 3124 -> 3121 bytes CTC/__pycache__/CTC_UI.cpython-312.pyc | Bin 20620 -> 20617 bytes .../OccupiedBlocks.cpython-312.pyc | Bin 2696 -> 2693 bytes CTC/__pycache__/Schedule.cpython-312.pyc | Bin 3193 -> 3190 bytes CTC/__pycache__/TempData.cpython-312.pyc | Bin 1668 -> 1665 bytes CTC/__pycache__/Throughput.cpython-312.pyc | Bin 1721 -> 1718 bytes PLC_Files/__pycache__/Parser.cpython-312.pyc | Bin 2670 -> 2667 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 177 -> 174 bytes .../__pycache__/TrackModel.cpython-312.pyc | Bin 29434 -> 29431 bytes .../__pycache__/Block.cpython-312.pyc | Bin 1013 -> 1010 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 183 -> 180 bytes Train_Model/TrainModel_UI.ui | 30 +++-- Train_Model/TrainModel_testbench.ui | 109 +++--------------- Train_Model/app_trainmodel_ui.py | 88 ++++++++++---- .../WaysideSWandTB.cpython-312.pyc | Bin 35513 -> 35510 bytes __pycache__/Main_UI.cpython-312.pyc | Bin 2773 -> 2770 bytes 17 files changed, 98 insertions(+), 129 deletions(-) diff --git a/CTC/__pycache__/CTC_Maintenance.cpython-312.pyc b/CTC/__pycache__/CTC_Maintenance.cpython-312.pyc index d899ee20ad7f80cd45a31050339c34104c7e917e..35c8a2713ee5cf6fac2513cebf0cb89c33a12a26 100644 GIT binary patch delta 72 zcmbQMFiU~!G%qg~0}!z8-pF;2QQt4wDkiizwWv5IBr&fnQz0z1C^s?2CAB!aB)=dg aq$n{nuUH`{wIIJZvn0Q$aI3^@9uPjp`EVU>%F~%jeIJ+dj cASR?JF*C1NAt<#Vzc{lbzo>Ha1EDpx0GY}f^8f$< delta 77 zcmeBN$k?-xk?S-sFBbz4Fdy8=wM59sBiSk@v^ce>IHsgHH?t(hKQGm#D6=dz#wE2l fyClCL#;hbmAviTRwYVg;D8|sx#9;GXp*6Mu&*vJ; diff --git a/CTC/__pycache__/OccupiedBlocks.cpython-312.pyc b/CTC/__pycache__/OccupiedBlocks.cpython-312.pyc index 75ba105f99e9d679b79ef8a6a38db8590ee9b5ea..2792029fc435fe90b25e3d1dc5793a57b4470368 100644 GIT binary patch delta 73 zcmeAWZ58D{&CAQh00cL7{n^M}#HjC^Y!wq)oLW>I6Ox!$mZ=byT9lg@m!uZO7#f-wY+l27lLG*t78&#a diff --git a/CTC/__pycache__/Schedule.cpython-312.pyc b/CTC/__pycache__/Schedule.cpython-312.pyc index 2b41fc36ffac2f6edd6a8f4ad9b553aa464d9cf3..ecbe959ca5c17113b851a7d8f132aadb4ef5048c 100644 GIT binary patch delta 73 zcmew<@lAsJG%qg~0}$NU^=Bh@C8NH3vQIQ&OCpSrX%)m+DfKS(X~(l3JWy el3x&GR+6C*oSK_jT#{N8V`yk%uz54%VJ-mVMjFrn diff --git a/CTC/__pycache__/TempData.cpython-312.pyc b/CTC/__pycache__/TempData.cpython-312.pyc index 5b982f06a642b153b753767091a84c17f98a0248..575a759211abb27642c679b3d1b5c4ea0b498222 100644 GIT binary patch delta 72 zcmZqSZRF)T&CAQh00gYNH*%%0=({Id#e^2878S>YB<7W6DuksL&FDbCF-iSf@%bt%d$OO0_!EzT~< dFNiTK$xsMR%}p&XNiB*oG&C{TJeTDOBLIYk8HWG> diff --git a/CTC/__pycache__/Throughput.cpython-312.pyc b/CTC/__pycache__/Throughput.cpython-312.pyc index 15f3621528090ed294d7bf3dc2bcd1033094e638..f8174b1e6a940e251722a3b81a60dc9b94afe28d 100644 GIT binary patch delta 72 zcmdnVyN#FYG%qg~0}$NUwUMiVQQtG!DkiizwWv5IBr&fnQz0z1C^s?2CAB!aB)=dg aq$n{nuUH`{wIIJZvn0Q$a`PU>zbpV`ZWQay dUl3zflA#csnwwf&l3EmFXlP=vc_-sv7672F8XEur diff --git a/PLC_Files/__pycache__/Parser.cpython-312.pyc b/PLC_Files/__pycache__/Parser.cpython-312.pyc index edc15ef7ec71cb4d60f2b126b3ee017f30b59ca0..042d7cbbf928534f47bbd6abb106b8ddeca10db7 100644 GIT binary patch delta 73 zcmaDS@>+!ZG%qg~0}u$W`LmH*m`UF|*(xTqIJKxaCL}ShEK?yYwJ0|+#wE2lyClCL bCZs4aGp|@7D77HJII|?bsB&`vlN<*CcrY0h delta 76 zcmaDY@=k>NG%qg~0}x0k|K7+g%w*)3Y!wq)oLW>IQ&OCpSrX%)m+DfKS(X~(l3JWy el3x&GR+6C*oSK_jT#{N8V`yk%u-TVMjspO!CK%}e diff --git a/PLC_Files/__pycache__/__init__.cpython-312.pyc b/PLC_Files/__pycache__/__init__.cpython-312.pyc index 998348daa92aed237ce3dbed58e49304541273bb..fcae52759362ef0817a4ac64119d9aa6e3b05faa 100644 GIT binary patch delta 70 zcmdnUxQ>zgG%qg~0}z;Oy*!cISl>6`DkiizwWv6zq&PRTB*s54)ukx2EH%a@wK%&Z bzaYk}Bts!MH8-`mB(*5U(9pzSVy+_qV4oPq diff --git a/Track_Model/__pycache__/TrackModel.cpython-312.pyc b/Track_Model/__pycache__/TrackModel.cpython-312.pyc index 7ef9c6b6c85bc6fd8ecea1cf5bf8295165a411ce..24879e10f1263e152e7dd5b724a7c90d4adf079d 100644 GIT binary patch delta 74 zcmezMl=1shMy}Jmyj%=Gkb8I|molGzV6s(AXmM&$aZE^JURkC>SZYyjVvI{_adt_5 cK}<+dVrE{kLQrZ!esN|=eo^J-c)r;w0NmIcSpWb4 delta 77 zcmezVl=0V7My}Jmyj%=G(6whHmolGGNU~K-XmM&$aZE{ZZe~f0e_pCfQD#|cj7w^9 fc1eCgj9E#BLU3wsYH>+wQH-IXiNWR=zS$`NI#?UY diff --git a/Track_Resources/__pycache__/Block.cpython-312.pyc b/Track_Resources/__pycache__/Block.cpython-312.pyc index 6a853dd73ebc9866e3e02e32188719d5feadd135..4322cb076f7c2287716ce71c6d8bb98b6438a8fa 100644 GIT binary patch delta 72 zcmey${)wIIG%qg~0}wPH-pG~6q#uxM6%$&VT2vepl9*SPsSuW0l$#jil3JWyl3x%L aQk0mPSF8|}T999yS(0B=xp^*A1S0@y6d7ay delta 75 zcmeyw{*|5UG%qg~0}wRq*~pd1WE7li6%$&VT2vfUQkQay dUl3zflA#csnwwf&l3EmFXlP=vc@|RyBLKTa8MFWZ diff --git a/Track_Resources/__pycache__/__init__.cpython-312.pyc b/Track_Resources/__pycache__/__init__.cpython-312.pyc index 5b8d92a96820eb55db4eaddc875e875e8445c0b3..c0d13d92e3b422eb9432dd77b27b3ff019fbe851 100644 GIT binary patch delta 70 zcmdnaxP_7XG%qg~0}z;Oy*!cISU)(~DkiizwWv5IBr&fnQz0z1C^s?2CAB!aB)=dg Yq$n{nuUH`{wIIJZvn0Q$a$ Times New Roman - 9 - 75 - true + 12 + 9 + false + false - background-color: rgb(192, 192, 192); + background-color: rgb(192, 192, 192); +font: 75 12pt "Times New Roman"; QFrame::Box @@ -659,13 +661,15 @@ font: 75 12pt "Times New Roman"; Times New Roman - 9 - 75 - true + 10 + 9 + false + false - background-color: rgb(192, 192, 192); + background-color: rgb(192, 192, 192); +font: 75 10pt "Times New Roman"; QFrame::Box @@ -680,13 +684,15 @@ font: 75 12pt "Times New Roman"; Times New Roman - 9 - 75 - true + 10 + 9 + false + false - background-color: rgb(192, 192, 192); + background-color: rgb(192, 192, 192); +font: 75 10pt "Times New Roman"; QFrame::Box diff --git a/Train_Model/TrainModel_testbench.ui b/Train_Model/TrainModel_testbench.ui index a1ecfc82..2ddf3b01 100644 --- a/Train_Model/TrainModel_testbench.ui +++ b/Train_Model/TrainModel_testbench.ui @@ -761,30 +761,15 @@ - + 0 - -5 - 281 - 21 + 0 + 362 + 19 - - - - - OFF - - - false - - - true - - - - @@ -808,41 +793,6 @@ - - - - - - - - - 0 - -5 - 281 - 21 - - - - - - - OFF - - - false - - - true - - - false - - - - - - - @@ -1085,30 +1035,15 @@ - + 0 - -5 - 281 - 20 + 0 + 362 + 19 - - - - - OPEN - - - false - - - true - - - - @@ -1117,30 +1052,15 @@ - + - -1 - -5 - 281 - 21 + 0 + 0 + 362 + 19 - - - - - OPEN - - - false - - - true - - - - @@ -1167,6 +1087,9 @@ + + + diff --git a/Train_Model/app_trainmodel_ui.py b/Train_Model/app_trainmodel_ui.py index 3920f668..e31e690d 100644 --- a/Train_Model/app_trainmodel_ui.py +++ b/Train_Model/app_trainmodel_ui.py @@ -21,7 +21,7 @@ class MyMainWindow(QMainWindow): def __init__(self): super().__init__() - uic.loadUi("Train Model/TrainModel_UI.ui", self) + uic.loadUi("Train_Model/TrainModel_UI.ui", self) self.Calculate_acceleration() self.calculate_force() self.get_acceleration() @@ -232,20 +232,53 @@ def engine_fail_tb(self,state): self.en_fail_enable.setStyleSheet('') self.en_fail_disable.setStyleSheet('background-color: rgb(38, 207, 4);') - def int_lights_tb(self,state): - message=state - if state: + #SETTING INTERIOR LIGHTS TO ON/DIM/OFF STATUS + def interior_lights(self,state): + if state==0: self.int_lights_value.setFixedSize(109, 98) - # self.int_lights_value.setFont("Times New Roman",9) self.int_lights_value.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) - self.int_lights_value.setText(state) + self.int_lights_value.setText('OFF') - else : + elif state==1: self.int_lights_value.setFixedSize(109, 98) - self.int_lights_value.setText(state) + self.int_lights_value.setText('ON') + elif state==2: + self.int_lights_value.setFixedSize(109, 98) + self.int_lights_value.setText('DIM') + #SETTING EXTERIOR LIGHTS TO ON/DIM/OFF STATUS + def exterior_lights(self,state): + if state==0: + self.ext_lights_value.setFixedSize(109, 97) + self.ext_lights_value.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) + self.ext_lights_value.setText('OFF') + elif state==1: + self.ext_lights_value.setFixedSize(109, 97) + self.ext_lights_value.setText('ON') + + #SETTING RIGHT DOORS + def right_doors(self,state): + if state==0: + self.right_doors_value.setFixedSize(109, 98) + self.right_doors_value.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) + self.right_doors_value.setText('CLOSED') + + elif state==1: + self.right_doors_value.setFixedSize(109, 98) + self.right_doors_value.setText('OPEN') + + #SETTING LEFT DOORS + def left_doors(self,state): + if state==0: + self.left_doors_value.setFixedSize(109, 97) + self.left_doors_value.setAlignment(QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) + self.left_doors_value.setText('CLOSED') + elif state==1: + self.left_doors_value.setFixedSize(109, 97) + self.left_doors_value.setText('OPEN') + @@ -270,14 +303,14 @@ class trainmodel_testbench(QMainWindow): engine_fail_input_signal=qtc.pyqtSignal(int) right_doors_input_signal=qtc.pyqtSignal(int) left_doors_input_signal=qtc.pyqtSignal(int) - int_lights_input_signal=qtc.pyqtSignal(str) + int_lights_input_signal=qtc.pyqtSignal(int) ext_lights_input_signal=qtc.pyqtSignal(int) cabin_temp_input_signal=qtc.pyqtSignal(str) def __init__(self): super().__init__() - uic.loadUi("Train Model/TrainModel_testbench.ui", self) + uic.loadUi("Train_Model/TrainModel_testbench.ui", self) self.train_sel_combo_tb.activated[str].connect(self.get_train_selection) self.power_input_tb.returnPressed.connect(self.receive_power) @@ -318,31 +351,32 @@ def __init__(self): self.cabin_temp_input_tb.returnPressed.connect(self.get_cabin_temp) self.cabin_temp_input_tb.returnPressed.connect(self.display_cabin_temp) - self.int_lights_input_tb.stateChanged.connect(self.interior_lights) + self.int_lights_input_tb.returnPressed.connect(self.interior_lights_tb) - self.ext_lights_input_tb.stateChanged.connect(self.exterior_lights) + self.ext_lights_input_tb.returnPressed.connect(self.exterior_lights_tb) - self.right_doors_input_tb.stateChanged.connect(self.right_doors) + self.right_doors_input_tb.returnPressed.connect(self.right_doors_tb) - self.left_doors_input_tb.stateChanged.connect(self.left_doors) + self.left_doors_input_tb.returnPressed.connect(self.left_doors_tb) - def interior_lights(self,state): - if state: - self.int_lights_input_signal.emit("OFF") - else: - self.int_lights_input_signal.emit("ON") + def interior_lights_tb(self): + state=int(self.int_lights_input_tb.text()) + self.int_lights_input_signal.emit(state) - def exterior_lights(self,state): + def exterior_lights_tb(self): + state=int(self.ext_lights_input_tb.text()) self.ext_lights_input_signal.emit(state) - def right_doors(self,state): + def right_doors_tb(self): + state=int(self.right_doors_input_tb.text()) self.right_doors_input_signal.emit(state) - def left_doors(self,state): + def left_doors_tb(self): + state=int(self.left_doors_input_tb.text()) self.left_doors_input_signal.emit(state) @@ -500,8 +534,14 @@ def display_announcement(self): window_tb.engine_fail_input_signal.connect(window.engine_fail_tb) #cabin_temp window_tb.cabin_temp_input_signal.connect(window.set_cabin_temp) - #interior_light - window_tb.int_lights_input_signal.connect(window.int_lights_tb) + #interior_lights + window_tb.int_lights_input_signal.connect(window.interior_lights) + #exterior_lights + window_tb.ext_lights_input_signal.connect(window.exterior_lights) + #right_doors + window_tb.right_doors_input_signal.connect(window.right_doors) + #left_doors + window_tb.left_doors_input_signal.connect(window.left_doors) window.show() window_tb.show() diff --git a/Wayside_SW/__pycache__/WaysideSWandTB.cpython-312.pyc b/Wayside_SW/__pycache__/WaysideSWandTB.cpython-312.pyc index a9fe6d6145dfd8a5ab5105bbafaa467ad0f10318..fbad8744696c5afd5e86f934b3de39fcec49015f 100644 GIT binary patch delta 74 zcmdlvm1)~lCa%-Gyj%=G(0q6!mlUghNU~K-XmM&$aZE^JURkC>SZYyjVvI{_adt_5 cK}<+dVrE{kLQrZ!esN|=eo^J-FxKQ&0F5si7XSbN delta 77 zcmdlsm1*ZxCa%-Gyj%=G(6DDCmlUf}c(PSYXmM&$aZE{ZZe~f0e_pCfQD#|cj7w^9 fc1eCgj9E#BLU3wsYH>+wQH-IXiNWSz*5p Date: Sat, 23 Mar 2024 14:23:28 -0400 Subject: [PATCH 2/2] 03-23 push --- .../__pycache__/TestBench.cpython-312.pyc | Bin 0 -> 39614 bytes .../__pycache__/mainControl.cpython-312.pyc | Bin 0 -> 61997 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Train Controller SW/__pycache__/TestBench.cpython-312.pyc create mode 100644 Train Controller SW/__pycache__/mainControl.cpython-312.pyc diff --git a/Train Controller SW/__pycache__/TestBench.cpython-312.pyc b/Train Controller SW/__pycache__/TestBench.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..321bdbda3c274711de892a5efcb4f592d6e377bb GIT binary patch literal 39614 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 literal 0 HcmV?d00001 diff --git a/Train Controller SW/__pycache__/mainControl.cpython-312.pyc b/Train Controller SW/__pycache__/mainControl.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7ecb41ec38a3b6b5c5d8f8b128f84766b9fb85a3 GIT binary patch literal 61997 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 J?qWvl{{yYeHZ%YL literal 0 HcmV?d00001