diff --git a/db/jtDB.db b/db/jtDB.db index 74d7912..3c0d654 100644 Binary files a/db/jtDB.db and b/db/jtDB.db differ diff --git a/widgets/main_window.py b/widgets/main_window.py index 5903a0f..16e3766 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -355,11 +355,44 @@ class MainWindow(MainWindowUI): # 显示对话框 result = dialog.exec() - # 如果用户点击确认按钮 + # 如果用户确认,则执行上料操作 if result == QDialog.Accepted: - # TODO: 在这里添加上料操作的具体逻辑 - logging.info(f"上料对话框已确认,托盘号: {self.tray_edit.currentText()}") - pass + # 获取托盘料值作为拆垛层数 + stow_num = dialog.pallet_material_value.text() + if stow_num == "--" or not stow_num: + QMessageBox.warning(self, "错误", "未获取到托盘料信息,请重试") + return + + # 获取托盘号对应的托盘类型 + pallet_type = self.pallet_type_manager.get_pallet_type_by_pallet_id(tray_id) + # 初始化托盘号对应的序号 + if tray_id not in self.init_seq: + self.init_seq[tray_id] = 1 + + if not pallet_type: + QMessageBox.warning(self, "错误", "未查到对应下料托盘类型") + return + + # 执行Modbus操作 + modbus = ModbusUtils() + client = modbus.get_client() + try: + # 上料 D2 寄存器写入 1, D0 寄存器写入拆垛层数 + success0 = modbus.write_register_until_success(client, 0, int(stow_num)) + success2 = modbus.write_register_until_success(client, 2, 1) + success3 = modbus.write_register_until_success(client, 3, 1) + + # 上料 D2 寄存器写入 1, D0 寄存器写入拆垛层数 + if success0 and success2 and success3: + # 创建状态标签并显示在右上角 + self.show_operation_status("拆垛层数", "input", stow_num) + else: + QMessageBox.information(self, "操作提示", "上料失败") + except Exception as e: + logging.error(f"上料操作失败: {str(e)}") + QMessageBox.critical(self, "错误", f"上料操作失败: {str(e)}") + finally: + modbus.close_client(client) def handle_output(self): """处理下料按钮点击事件""" @@ -452,7 +485,7 @@ class MainWindow(MainWindowUI): pallet_combo.addItem(str(i)) layout.addWidget(pallet_combo) - # 添加提示信息 + # 添加提示信息 info_label = QLabel("请选择码垛层数:") info_label.setFont(self.normal_font) layout.addWidget(info_label)