From 38f006230871b3486ecd4ba446715ad3fd5352a4 Mon Sep 17 00:00:00 2001 From: zhu-mengmeng <15588200382@163.com> Date: Thu, 17 Jul 2025 09:34:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E8=B4=B4=E6=A0=87=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/app_config.json | 2 +- db/jtDB.db | Bin 159744 -> 159744 bytes widgets/main_window.py | 96 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 94 insertions(+), 4 deletions(-) diff --git a/config/app_config.json b/config/app_config.json index 27e282e..921f301 100644 --- a/config/app_config.json +++ b/config/app_config.json @@ -116,7 +116,7 @@ } }, "electricity": { - "auto_start": false, + "auto_start": true, "interval_minutes": 30 } } \ No newline at end of file diff --git a/db/jtDB.db b/db/jtDB.db index 056fe3b8684e5f34da132a5a5800aca03096e68e..034fe412b0cb726be4c0332776c149b2fe247dd4 100644 GIT binary patch delta 1319 zcmb`H%WD%s9LM+NCb3zfwsl+-TtTV`Df8GzGEg5BM6F5>YY);EEk+w_G@9DtX$!Jm zyiA#s7f*U`EZVDofrS1Axk)@o!Gjh&~|@u=#+1p2_~-UP5QOAdTo@vdA`?j+`0Blv0NVb2@GDVOQ2-r%Tl&B5G0_}K d-y~dOuazYE<+;;G@36L8BJCPhi0Xwl^{XPL>lU_fD1~wTD12qDZkOmY20?4vJ1aJc$ z1r3u2usyR85Xl6y4Yl_w1QG|f0h0*eB(o6^iU$d4g+>nmAprpolL6@ylhWtF1PN#W zW|I*RVgqf3NRzPY8Iu(0R0Iq20Be&G5NCta>9^DA0Wo$18Vy{N2hcUM5fC5^w_I%k Fqyk5+F~R@< diff --git a/widgets/main_window.py b/widgets/main_window.py index fbf9092..ccb7dd2 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -2089,7 +2089,13 @@ class MainWindow(MainWindowUI): # 删除当前处理的行 self.process_table.removeRow(data_row) logging.info(f"已删除处理完成的行 {data_row}") - + + # 复原寄存器 12 为 0 + modbus = ModbusUtils() + client = modbus.get_client() + modbus.write_register_until_success(client, 12, 0) + modbus.close_client(client) + # 重新连接单元格变更信号 self.process_table.cellChanged.connect(self.handle_inspection_cell_changed) @@ -3203,7 +3209,7 @@ class MainWindow(MainWindowUI): self.process_title = QLabel(original_title) self.process_title.setFont(self.second_title_font) self.process_title.setAlignment(Qt.AlignLeft | Qt.AlignVCenter) - + # 创建删除按钮 self.delete_row_button = QPushButton("删除选中行") self.delete_row_button.setFont(self.normal_font) @@ -3221,9 +3227,27 @@ class MainWindow(MainWindowUI): """) self.delete_row_button.clicked.connect(self.handle_delete_row) + # 创建打印按钮 + self.print_row_button = QPushButton("打印选中行") + self.print_row_button.setFont(self.normal_font) + self.print_row_button.setStyleSheet(""" + QPushButton { + padding: 5px 10px; + background-color: #e3f2fd; + border: 1px solid #2196f3; + border-radius: 4px; + font-weight: bold; + } + QPushButton:hover { + background-color: #bbdefb; + } + """) + self.print_row_button.clicked.connect(self.handle_print_row) + # 将标题和按钮添加到布局中 title_layout.addWidget(self.process_title) title_layout.addStretch() + title_layout.addWidget(self.print_row_button) title_layout.addWidget(self.delete_row_button) # 设置容器样式 @@ -3398,4 +3422,70 @@ class MainWindow(MainWindowUI): logging.error(f"更新上料区域信息表格失败: {str(e)}") # 记录异常堆栈,便于调试 import traceback - logging.error(traceback.format_exc()) \ No newline at end of file + logging.error(traceback.format_exc()) + + def handle_print_row(self): + """处理打印按钮点击事件,打印选中的微丝产线表格行""" + try: + # 获取当前选中的行 + selected_rows = self.process_table.selectionModel().selectedRows() + if not selected_rows: + # 如果没有选中整行,则获取当前选中的单元格所在行 + current_row = self.process_table.currentRow() + if current_row >= 2: # 确保不是表头行 + selected_rows = [self.process_table.model().index(current_row, 0)] + else: + QMessageBox.warning(self, "提示", "请先选择要打印的数据行") + return + + # 确认打印 + reply = QMessageBox.question( + self, + "确认打印", + "确定要打印选中的数据吗?", + QMessageBox.Yes | QMessageBox.No, + QMessageBox.No + ) + + if reply != QMessageBox.Yes: + return + + # 获取选中的行索引(只处理第一个选中的行) + row = selected_rows[0].row() + if row < 2: # 跳过表头行 + return + + # 获取工程号(用于日志记录) + gc_note_item = self.process_table.item(row, 1) + if not gc_note_item: + QMessageBox.warning(self, "提示", "无法获取工程号信息") + return + + gc_note = gc_note_item.text().strip() + if not gc_note: + QMessageBox.warning(self, "提示", "工程号不能为空") + return + + # 向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,触发打印工程号 {gc_note} 的数据") + else: + QMessageBox.warning(self, "警告", "发送打印请求失败,请检查PLC连接") + finally: + # 释放客户端连接 + modbus.close_client(client) + + except Exception as e: + logging.error(f"打印数据失败: {str(e)}") + QMessageBox.critical(self, "错误", f"打印数据失败: {str(e)}") \ No newline at end of file