251108问题修复

This commit is contained in:
2025-11-08 20:38:55 +08:00
parent b66b31d9ad
commit e54c8d6f5e
27 changed files with 613 additions and 51 deletions

112
main.py
View File

@ -61,8 +61,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.drop_position_manager = DropPositionManager()
self.sensor_thread = None
self.sensor2_thread = None
self.emergency_thread = None
self.last_status_printed = None
self.last_pause_printed = None
#判断是否按下急停按钮
self.is_emergency_pressed = False
self.cur_pushbutton_num = None
self.pushbutton_num_style = """
QPushButton { background-color: #101F3F;color:#ffffff }
@ -751,6 +754,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# self.camera_img.update_camera_image.connect(self.updateUI_label_detection)
self.feeding.log_signal.connect(self.log_message)
self.feeding.stack_finish_signal.connect(self.stack_finish)
self.relay_controller.log_signal.connect(self.log_message)
self.relay_controller.emergency_signal.connect(self.emergency_press_notify)
self.feeding.feed_error_signal.connect(self.feed_error_notify)
# self.camera_img=CameraImg(self.feeding)
# self.camera_img.update_camera_image.connect(self.updateUI_label_detection)
@ -941,6 +947,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def start_Runing(self):
#多线程启动
self.emergency_thread = Thread(
target=self.relay_controller.handle_emergency_pressed,
name="emergency",
daemon=True
)
self.emergency_thread.start()
self.main_threading = Thread(target=self.run,name="feeding")#主循环
self.robot_connect_threading = Thread(target=self.robotClient.run,name="robot_connect")
# self.main_UI_threading = Thread(target=self.updateUI,name="updateUI")
@ -1005,6 +1018,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
return
def send_startFeed_button_click(self):
if self.is_emergency_pressed:
self.show_infomessage_box("急停按钮已按下,不能启动,请先松开急停按钮")
return
if self.feeding.feedStatus != FeedStatus.FNone:
self.show_infomessage_box("正在执行")
return
@ -1372,7 +1389,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.feeding.feedStatus = FeedStatus.FNone
self.feeding.reset_status = ResetStatus.RNone
self.relay_controller.pause_start_sensor(True)
self.feeding.pause = True #暂停,停止滚去等
self.feeding.pause = True #暂停
stop_command = CMDRequest()
stop_command.cmdData.append("actionStop")
stop_command.cmdData.append("1")
@ -1384,12 +1401,17 @@ class MainWindow(QMainWindow, Ui_MainWindow):
log.log_message(logging.INFO, Constant.str_sys_emergencyStop)
def send_emergency_alarm_command(self):
if self.is_emergency_pressed:
self.show_infomessage_box("急停按钮已按下,不能停止,请先松开急停按钮")
return
"""停止当前工作,需要启动"""
msg_box_person = QMessageBox()
msg_box_person.setIcon(QMessageBox.Icon.Question)
msg_box_person.setText("您确定要停止当前工作吗?")
msg_box_person.setWindowTitle("提示")
font = msg_box_person.font()
font.setPointSize(20)
msg_box_person.setFont(font)
msg_box_person.addButton("确定", PySide6.QtWidgets.QMessageBox.ButtonRole.AcceptRole)
cancel_button = msg_box_person.addButton("取消", PySide6.QtWidgets.QMessageBox.ButtonRole.RejectRole)
msg_box_person.exec()
@ -1401,6 +1423,16 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def send_pauseFeed_button_click(self):
if self.is_emergency_pressed:
self.show_infomessage_box("急停按钮已按下,不能暂停,请先松开急停按钮")
return
if self.feeding.feedStatus == FeedStatus.FNone:
self.show_infomessage_box("当前没有运行中的工作,不能暂停")
return
self.send_pauseFeed_click()
pass
def send_pauseFeed_click(self):
if self.pushButton_pauseFeed.text() == '暂停':
self.relay_controller.pause_start_sensor(True)
icon9 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.SystemReboot))
@ -1423,9 +1455,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
log.log_message(logging.INFO, Constant.str_sys_start_tool)
self.feeding.pause = False
pass
def send_tabWidget_control_change(self):
if self.robotClient.status_model.curMode != 7:
self.send_switch_tool_command()
@ -1635,10 +1665,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
else:
self.set_run_status_button(False)
if self.feeding.feedStatus == FeedStatus.FNone:
self.stackedWidget_num.setCurrentIndex(0)
else:
self.stackedWidget_num.setCurrentIndex(1)
if self.is_emergency_pressed:
self.stackedWidget_num.setCurrentIndex(1)
else:
if self.feeding.feedStatus == FeedStatus.FNone:
self.stackedWidget_num.setCurrentIndex(0)
else:
self.stackedWidget_num.setCurrentIndex(1)
self.label_date.setText(datetime.now().strftime("%Y-%m-%d"))
@ -1675,18 +1708,55 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# self.send_pause_command(True)
# self.feeding.pause = True
# self.relay_controller.pause_start_sensor(True)
self.stop_all_work()
msg_box_finish = QMessageBox()
msg_box_finish.setIcon(QMessageBox.Icon.Warning)
msg_box_finish.setText("码垛完成,请移走拖板")
msg_box_finish.setWindowTitle("提示")
msg_box_finish.addButton("确定", QMessageBox.AcceptRole)
loc_font=QFont("Microsoft YaHei UI",20)
msg_box_finish.setFont(font)
msg_box_finish.setFont(loc_font)
result=msg_box_finish.exec()
self.label_remain_num.setText(str(self.feeding.feedConfig.remain_count))
self.stop_all_work()
def feed_error_notify(self,error_code,error_msg):
"""
feeding 报警处理,打开声控
"""
self.relay_controller.open(alarm=True)
self.send_pauseFeed_click()
msg_box_finish = QMessageBox()
msg_box_finish.setIcon(QMessageBox.Icon.Warning)
msg_box_finish.setText(error_msg)
msg_box_finish.setWindowTitle("提示")
msg_box_finish.addButton("确定", QMessageBox.AcceptRole)
loc_font=QFont("Microsoft YaHei UI",20)
msg_box_finish.setFont(loc_font)
result=msg_box_finish.exec()
if error_code==1:
msg_box_finish.setText("是否打开滚筒让料带滚出?")
msg_box_finish.addButton("取消", QMessageBox.RejectRole)
result=msg_box_finish.exec()
if result == QMessageBox.AcceptRole:
self.relay_controller.open(conveyor2=True)
def emergency_press_notify(self,emergency_pressed):
"""
急停按钮按下
"""
if emergency_pressed:
if not self.is_emergency_pressed:
self.send_pauseFeed_click()
self.is_emergency_pressed = True
self.label_button_status.setText("急停中,禁止操作")
else:
if self.is_emergency_pressed:
self.label_button_status.setText("已暂停,可操作工控机")
self.is_emergency_pressed = False
def updateUI_IOPanel(self):
try:
io_bits = self.robotClient.status_model.get_IO_bits()
@ -1921,12 +1991,13 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.robotClient.add_sendQuene(request_command)
def send_clear_alarm_command(self, pause: bool):
self.send_clear_auto_command()
pause_command = CMDRequest()
pause_command.cmdData.append("StopButton")
pause_command.cmdData.append("1")
request_command = pause_command.toString()
self.robotClient.add_sendQuene(request_command)
self.relay_controller.close(alarm=True)
# self.send_clear_auto_command()
# pause_command = CMDRequest()
# pause_command.cmdData.append("StopButton")
# pause_command.cmdData.append("1")
# request_command = pause_command.toString()
# self.robotClient.add_sendQuene(request_command)
def send_switch_tool_command(self):
switch_command = CMDRequest()
@ -2201,6 +2272,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
msg_box.setText(message)
msg_box.setIcon(QMessageBox.Icon.Information)
msg_box.setStandardButtons(QMessageBox.StandardButton.Ok)
font = msg_box.font()
font.setPointSize(20)
msg_box.setFont(font)
msg_box.show()
def send_click_change_stackView(self,index):
self.stackedWidget_view.setCurrentIndex(index)
@ -2303,7 +2377,9 @@ def handle_exception(exc_type, exc_value, exc_tb):
if __name__ == "__main__":
app = MyApplication(sys.argv)
window = MainWindow()
window.show()
# window.show()
# window.showFullScreen()
window.showMaximized()
sys.excepthook = handle_exception
try :
sys.exit(app.exec())