feat: 在主窗口中新增多个信号连接,包括贴标、称重、NG、故障和急停信号,优化急停UI更新逻辑

This commit is contained in:
zhu-mengmeng 2025-07-17 17:51:57 +08:00
parent 5a05bfe9a2
commit 99bb8e27b6

View File

@ -1672,11 +1672,30 @@ class MainWindow(MainWindowUI):
# 连接电力数据变化信号
self.electricity_handler.electricity_data_changed.connect(self.update_electricity_statistics)
# 立即更新一次用电量数据
self.update_electricity_statistics()
# 连接贴标信号
self.machine_handlers.label_signal_changed.connect(self.handle_label_signal)
# 连接称重数据变化信号
self.machine_handlers.weight_changed.connect(self.handle_weight_data)
# 连接NG信号
self.machine_handlers.ng_changed.connect(self.handle_ng)
# 连接故障信号
self.machine_handlers.error_1_changed.connect(self.handle_error_1)
self.machine_handlers.error_2_changed.connect(self.handle_error_2)
self.machine_handlers.error_3_changed.connect(self.handle_error_3)
# 连接上下料反馈信号
self.machine_handlers.loading_feedback_changed.connect(self.handle_loading_feedback)
self.machine_handlers.unloading_feedback_changed.connect(self.handle_unloading_feedback)
# 连接急停信号
self.emergency_stop_signal.connect(self._handle_emergency_stop_ui)
# 立即更新一次用电量数据
self.update_electricity_statistics()
# 立即更新一次订单数量和产量统计数据
self.update_order_statistics()
@ -1800,7 +1819,7 @@ class MainWindow(MainWindowUI):
"""
try:
# 如果当前重量与定时器启动时的重量相同,说明这段时间内没有新的重量数据
if self._current_weight == original_weight_kg:
if self._current_weight == original_weight_kg and self._current_weight > 0.5:
logging.info(f"重量 {original_weight_kg}kg 在{self._weight_stable_threshold}秒内保持稳定")
# 如果这个重量与上一次处理的重量接近±0.1kg),且标记已处理,则跳过
@ -3190,17 +3209,34 @@ class MainWindow(MainWindowUI):
# 显示警告对话框
QMessageBox.warning(self, "急停警告", "监听到急停信号")
# 恢复按钮样式 - 确保在主线程中执行
logging.info("急停触发:开始恢复按钮样式")
self.restore_start_button_style()
logging.info("急停触发:已恢复开始按钮样式")
if hasattr(self, 'restore_output_button_style'):
self.restore_output_button_style()
logging.info("急停触发:已恢复下料按钮样式")
if hasattr(self, 'restore_input_button_style'):
self.restore_input_button_style()
logging.info("急停触发:已恢复上料按钮样式")
# 更新错误状态标签
self.error_status_label.setText("故障: 急停")
self.error_status_label.setToolTip("急停按钮被触发")
self.error_status_label.setStyleSheet("color: red; font-weight: bold;")
logging.info("急停UI已更新按钮样式已恢复状态标签已更新")
else:
# 急停信号解除,恢复错误状态显示
self._update_error_status()
# 恢复故障状态标签
self.label_status_label.setText("故障: 正常")
self.label_status_label.setStyleSheet("")
self.error_status_label.setText("故障: 正常")
self.error_status_label.setStyleSheet("color: green; font-weight: bold;")
logging.info("急停解除UI已更新状态标签已恢复")
except Exception as e:
logging.error(f"处理急停UI更新失败: {str(e)}")