feat: 简化开始操作逻辑,移除对话框,直接写入寄存器 2 和 3 的值为 1

This commit is contained in:
zhu-mengmeng 2025-06-22 01:32:24 +08:00
parent c6d101f65c
commit 26e835e25a

View File

@ -482,114 +482,18 @@ class MainWindow(MainWindowUI):
def handle_start(self): def handle_start(self):
""" """
处理开始按钮点击事件,并启动 modbus 监控 2,3 寄存器设置为 1
""" """
# 创建对话框
dialog = QDialog(self)
dialog.setWindowTitle("上料操作")
dialog.setFixedSize(300, 200)
# 对话框布局
layout = QVBoxLayout(dialog)
# 添加提示信息
info_label = QLabel("请选择拆垛层数:")
info_label.setFont(self.normal_font)
layout.addWidget(info_label)
# 添加托盘类型选择
pallet_combo = QComboBox()
pallet_combo.setFont(self.normal_font)
# 复制当前托盘类型选择器的内容
for i in range(1,4):
pallet_combo.addItem(str(i))
layout.addWidget(pallet_combo)
# 添加提示信息
info_label = QLabel("请选择码垛层数:")
info_label.setFont(self.normal_font)
layout.addWidget(info_label)
# 添加托盘类型选择
pallet_combo2 = QComboBox()
pallet_combo2.setFont(self.normal_font)
# 复制当前托盘类型选择器的内容
for i in range(1,4):
pallet_combo2.addItem(str(i))
layout.addWidget(pallet_combo2)
# 添加按钮
button_layout = QHBoxLayout()
confirm_button = QPushButton("确认")
confirm_button.setFont(self.normal_font)
confirm_button.setStyleSheet("background-color: #e3f2fd; border: 1px solid #2196f3; padding: 8px 16px; font-weight: bold; border-radius: 4px;")
cancel_button = QPushButton("取消")
cancel_button.setFont(self.normal_font)
cancel_button.setStyleSheet("padding: 8px 16px; font-weight: bold; border-radius: 4px;")
button_layout.addStretch()
button_layout.addWidget(confirm_button)
button_layout.addWidget(cancel_button)
layout.addLayout(button_layout)
# 连接按钮信号
confirm_button.clicked.connect(dialog.accept)
cancel_button.clicked.connect(dialog.reject)
# 显示对话框
result = dialog.exec()
# 如果用户确认,则执行上料操作
if result == QDialog.Accepted:
stow_num = pallet_combo.currentText()
stow_num2 = pallet_combo2.currentText()
# 获取托盘号对应的托盘类型
tray_id = self.tray_edit.currentText()
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() modbus = ModbusUtils()
client = modbus.get_client() client = modbus.get_client()
try: try:
# 启动Modbus监控
self.setup_modbus_monitor()
# 启动串口监听
self.serial_manager.auto_open_configured_ports()
# 显式启动键盘监听器
self.serial_manager.start_keyboard_listener()
logging.info("已在开始操作时启动键盘监听器")
success0 = modbus.write_register_until_success(client, 0, int(stow_num))
success1 = modbus.write_register_until_success(client, 1, int(pallet_type))
success2 = modbus.write_register_until_success(client, 2, 1) success2 = modbus.write_register_until_success(client, 2, 1)
success3 = modbus.write_register_until_success(client, 3, 1) success3 = modbus.write_register_until_success(client, 3, 1)
success4 = modbus.write_register_until_success(client, 4, int(stow_num2))
# 上料 D2 寄存器写入 1 ,D0 寄存器写入托盘类型
if success0 and success2 and success1 and success3 and success4:
# 创建状态标签并显示在右上角
self.show_operation_status("拆垛层数", "input", stow_num)
else:
QMessageBox.information(self, "操作提示", "上料失败")
except Exception as e: except Exception as e:
logging.error(f"上料操作失败: {str(e)}") logging.error(f"启动操作失败: {str(e)}")
QMessageBox.critical(self, "错误", f"上料操作失败: {str(e)}")
finally: finally:
modbus.close_client(client) modbus.close_client(client)
def handle_stop(self): def handle_stop(self):
"""处理停止按钮点击事件,并关闭 modbus 监控""" """处理停止按钮点击事件,并关闭 modbus 监控"""
modbus = ModbusUtils() modbus = ModbusUtils()