From dcc778ede6da679f12bf7f1f92dcd5caa5b3c06a Mon Sep 17 00:00:00 2001 From: zhu-mengmeng <15588200382@163.com> Date: Sun, 20 Jul 2025 08:57:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=BD=93=E4=B8=8B=E6=96=99=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=90=8E=EF=BC=8C=E8=87=AA=E5=A2=9E=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E6=B8=85=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- widgets/main_window.py | 83 ++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 44 deletions(-) diff --git a/widgets/main_window.py b/widgets/main_window.py index 77771b3..a51e45f 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -2733,49 +2733,25 @@ class MainWindow(MainWindowUI): modbus.write_register_until_success(client, 3, 0) # 如果当前下料层数小于总层数,则将层数加1并写入寄存器4 - if self._current_unload_num < self._total_unload_num: - # 保存当前完成的层数用于消息显示 - completed_tier = self._current_unload_num - - # 当前层已完成,层数加1表示开始下一层 - self._current_unload_num += 1 - logging.info(f"当前层{completed_tier}下料完成,更新到下一层:当前={self._current_unload_num}, 总数={self._total_unload_num}") - - # 将新的层数写入寄存器4 - modbus.write_register_until_success(client, 4, self._current_unload_num) - logging.info(f"已将新层数{self._current_unload_num}写入寄存器4") - - # 不直接更新UI,而是通过信号将数据传递给主线程处理 - # 通过信号触发UI更新 - 显示前一层完成的消息 - message = f"第{completed_tier}层下料完成,请启动第{self._current_unload_num}层下料" - self.unloading_feedback_signal.emit("output", message) - - # 恢复开始按钮原始样式 - self.restore_start_button_style() - else: - # 所有层都下料完成,重置寄存器和计数器 - modbus.write_register_until_success(client, 3, 0) # 确保下料启动寄存器为0 - modbus.write_register_until_success(client, 4, 0) # 重置下料层数寄存器为0 - - # 记录完成的信息用于消息显示 - final_tier = self._current_unload_num - total_tier = self._total_unload_num - tray_code = self._current_unload_info.get('tray_code', '') if self._current_unload_info else '' - - # 重置计数器和信息 - self._current_unload_num = 0 - # 不重置总层数,以便可以继续使用相同的总层数 - # self._total_unload_num = 0 - self._current_unload_info = None - - logging.info(f"托盘 {tray_code} 的所有 {total_tier} 层下料完成,重置当前层数") - - # 通过信号触发UI更新,而不是直接操作UI - message = f"托盘 {tray_code} 的所有 {total_tier} 层下料已全部完成" - self.unloading_feedback_signal.emit("output", message) - - # 恢复开始按钮原始样式 - self.restore_start_button_style() + # 保存当前完成的层数用于消息显示 + completed_tier = self._current_unload_num + + # 当前层已完成,层数加1表示开始下一层 + self._current_unload_num += 1 + logging.info(f"当前层{completed_tier}下料完成,更新到下一层:当前={self._current_unload_num}, 总数={self._total_unload_num}") + + # 将新的层数写入寄存器4 + modbus.write_register_until_success(client, 4, self._current_unload_num) + logging.info(f"已将新层数{self._current_unload_num}写入寄存器4") + + # 不直接更新UI,而是通过信号将数据传递给主线程处理 + # 通过信号触发UI更新 - 显示前一层完成的消息 + message = f"第{completed_tier}层下料完成,请启动第{self._current_unload_num}层下料" + self.unloading_feedback_signal.emit("output", message) + + # 恢复开始按钮原始样式 + self.restore_start_button_style() + except Exception as e: logging.error(f"处理下料反馈时发生错误: {str(e)}") # 不在这里显示对话框,而是通过信号传递错误信息 @@ -3725,7 +3701,7 @@ class MainWindow(MainWindowUI): self.print_tray_button.clicked.connect(lambda: self.handle_tray_complete(ismt=False)) # 打印选中行按钮 - self.print_row_button = QPushButton("打印选中行") + self.print_row_button = QPushButton("打印") self.print_row_button.setFont(self.normal_font) self.print_row_button.setStyleSheet(""" QPushButton { @@ -3880,6 +3856,25 @@ class MainWindow(MainWindowUI): else: QMessageBox.information(self, "成功", "托盘号已打印") logging.info(f"托盘号 {tray_id} 已打印") + # 向D12寄存器写入1,触发打印 + from utils.modbus_utils import ModbusUtils + modbus = ModbusUtils() + client = modbus.get_client() + + if not client: + QMessageBox.critical(self, "错误", "无法连接到Modbus服务器") + return + + try: + # 向D12寄存器写入1,表示打印请求 + success = modbus.write_register(client, 12, 1) + if success: + logging.info(f"已向D12寄存器写入1") + else: + QMessageBox.warning(self, "警告", "发送打印请求失败,请检查PLC连接") + finally: + # 释放客户端连接 + modbus.close_client(client) else: error_msg = response.get('message', '未知错误') QMessageBox.warning(self, "失败", f"标记托盘完成失败: {error_msg}")