diff --git a/config/app_config.json b/config/app_config.json index 66d41c5..d527db1 100644 --- a/config/app_config.json +++ b/config/app_config.json @@ -120,7 +120,7 @@ } }, "electricity": { - "auto_start": true, + "auto_start": false, "interval_minutes": 30 } } \ No newline at end of file diff --git a/db/jtDB.db b/db/jtDB.db index 15deb36..d03a1e0 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 5c64e35..75d4eaf 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -657,8 +657,8 @@ class MainWindow(MainWindowUI): # 如果用户确认,则执行上料操作 if result == QDialog.Accepted: # 从对话框中获取订单号和托盘号,并更新到主窗口 - order_code = dialog.order_input.text() - tray_code = dialog.tray_input.text() + order_code = dialog.order_input.text().strip() + tray_code = dialog.tray_input.text().strip() self._current_order_code = order_code self.tray_edit.setCurrentText(tray_code) @@ -2041,7 +2041,7 @@ class MainWindow(MainWindowUI): Returns: float: 重量(千克) """ - return round(weight_in_g / 1000.0, 3) # 保留3位小数 + return round(weight_in_g / 1000.0, 2) # 保留2位小数 @Slot(int) def handle_weight_data(self, weight_in_g): @@ -2136,48 +2136,23 @@ class MainWindow(MainWindowUI): max_retries: 最大重试次数 """ retry_count = 0 - success = False last_error = None modbus = ModbusUtils() client = None - try: # 获取Modbus客户端(现在使用连接池,不会每次都创建新连接) client = modbus.get_client() if not client: logging.error("无法获取Modbus客户端连接") return - - # 重试机制写入寄存器 - while retry_count < max_retries and not success: - try: - # 称重稳定后,给寄存器 D10 为 1 表示已经称重完成 - success = modbus.write_register_until_success(client, 10, 1) - if success: - logging.info(f"成功写入D10寄存器值为1,表示称重完成") - break - except Exception as e: - last_error = e - retry_count += 1 - if retry_count < max_retries: - delay = 0.5 * (2 ** retry_count) # 指数退避 - logging.warning(f"写入D10寄存器失败,尝试第{retry_count}次重试,等待{delay:.1f}秒: {str(e)}") - time.sleep(delay) - - if not success: - logging.error(f"写入D10寄存器失败,已尝试{max_retries}次: {str(last_error)}") - return - - # 处理稳定重量 + # 这里不再写入D10=1,全部交由_process_stable_weight处理 self._process_stable_weight(weight_kg) # 调用打印方法 self._print_weight_label(weight_kg) - # 设置已处理标记和上次处理的重量 self._weight_processed = True self._last_processed_weight = weight_kg logging.info(f"已标记重量 {weight_kg}kg 为已处理") - except Exception as e: logging.error(f"处理稳定重量时发生错误: {str(e)}") finally: @@ -2280,7 +2255,7 @@ class MainWindow(MainWindowUI): self.warning_msg = QMessageBox(self) self.warning_msg.setIcon(QMessageBox.Warning) self.warning_msg.setWindowTitle('重量超出范围') - self.warning_msg.setText(f"称重值 {net_weight_kg:.3f}kg 不在轴重要求范围内 ({min_weight:.1f} - {max_weight:.1f}kg)") + self.warning_msg.setText(f"称重值 {net_weight_kg:.2f}kg 不在轴重要求范围内 ({min_weight:.1f} - {max_weight:.1f}kg)") self.warning_msg.setStandardButtons(QMessageBox.NoButton) self.warning_msg.setModal(False) # 确保非模态 self.warning_msg.setWindowFlags(self.warning_msg.windowFlags() | Qt.WindowStaysOnTopHint) # 置顶显示 @@ -2314,6 +2289,12 @@ class MainWindow(MainWindowUI): return else: logging.info(f"称重值 {weight_kg:.3f}kg 在轴重要求范围内 ({min_weight:.1f} - {max_weight:.1f}kg)") + # 只有在范围内才写入D10=1 + modbus = ModbusUtils() + client = modbus.get_client() + modbus.write_register_until_success(client, 10, 1) + modbus.close_client(client) + logging.info("已写入D10=1,通知PLC称重合格") else: logging.debug(f"轴重要求格式不正确: '{zzyq_value}'") else: @@ -2322,6 +2303,12 @@ class MainWindow(MainWindowUI): logging.warning(f"解析轴重要求失败,跳过范围检查: {str(e)}") else: logging.debug("轴重要求字段不存在或为空,跳过范围检查") + # 没有轴重要求时,直接写入D10=1 + modbus = ModbusUtils() + client = modbus.get_client() + modbus.write_register_until_success(client, 10, 1) + modbus.close_client(client) + logging.info("无轴重要求,已写入D10=1,通知PLC称重合格") # 暂时断开信号连接,避免触发cellChanged信号 try: @@ -3761,7 +3748,7 @@ class MainWindow(MainWindowUI): self.update_info_table(order_info) # 订单号输入框回显 mo 字段 if order_info: - self.order_no_input.setText(order_info.get('mo', '')) + self.order_no_input.setText(order_info.get('mo', '').strip()) def on_report(self): """报表按钮点击处理"""