feat: 修改电源自动启动设置为false,优化主窗口输入框处理逻辑,调整重量计算精度及警告提示信息
This commit is contained in:
parent
cbdc25545e
commit
b61f2cc70b
@ -120,7 +120,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"electricity": {
|
"electricity": {
|
||||||
"auto_start": true,
|
"auto_start": false,
|
||||||
"interval_minutes": 30
|
"interval_minutes": 30
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BIN
db/jtDB.db
BIN
db/jtDB.db
Binary file not shown.
@ -657,8 +657,8 @@ class MainWindow(MainWindowUI):
|
|||||||
# 如果用户确认,则执行上料操作
|
# 如果用户确认,则执行上料操作
|
||||||
if result == QDialog.Accepted:
|
if result == QDialog.Accepted:
|
||||||
# 从对话框中获取订单号和托盘号,并更新到主窗口
|
# 从对话框中获取订单号和托盘号,并更新到主窗口
|
||||||
order_code = dialog.order_input.text()
|
order_code = dialog.order_input.text().strip()
|
||||||
tray_code = dialog.tray_input.text()
|
tray_code = dialog.tray_input.text().strip()
|
||||||
self._current_order_code = order_code
|
self._current_order_code = order_code
|
||||||
self.tray_edit.setCurrentText(tray_code)
|
self.tray_edit.setCurrentText(tray_code)
|
||||||
|
|
||||||
@ -2041,7 +2041,7 @@ class MainWindow(MainWindowUI):
|
|||||||
Returns:
|
Returns:
|
||||||
float: 重量(千克)
|
float: 重量(千克)
|
||||||
"""
|
"""
|
||||||
return round(weight_in_g / 1000.0, 3) # 保留3位小数
|
return round(weight_in_g / 1000.0, 2) # 保留2位小数
|
||||||
|
|
||||||
@Slot(int)
|
@Slot(int)
|
||||||
def handle_weight_data(self, weight_in_g):
|
def handle_weight_data(self, weight_in_g):
|
||||||
@ -2136,48 +2136,23 @@ class MainWindow(MainWindowUI):
|
|||||||
max_retries: 最大重试次数
|
max_retries: 最大重试次数
|
||||||
"""
|
"""
|
||||||
retry_count = 0
|
retry_count = 0
|
||||||
success = False
|
|
||||||
last_error = None
|
last_error = None
|
||||||
modbus = ModbusUtils()
|
modbus = ModbusUtils()
|
||||||
client = None
|
client = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 获取Modbus客户端(现在使用连接池,不会每次都创建新连接)
|
# 获取Modbus客户端(现在使用连接池,不会每次都创建新连接)
|
||||||
client = modbus.get_client()
|
client = modbus.get_client()
|
||||||
if not client:
|
if not client:
|
||||||
logging.error("无法获取Modbus客户端连接")
|
logging.error("无法获取Modbus客户端连接")
|
||||||
return
|
return
|
||||||
|
# 这里不再写入D10=1,全部交由_process_stable_weight处理
|
||||||
# 重试机制写入寄存器
|
|
||||||
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
|
|
||||||
|
|
||||||
# 处理稳定重量
|
|
||||||
self._process_stable_weight(weight_kg)
|
self._process_stable_weight(weight_kg)
|
||||||
# 调用打印方法
|
# 调用打印方法
|
||||||
self._print_weight_label(weight_kg)
|
self._print_weight_label(weight_kg)
|
||||||
|
|
||||||
# 设置已处理标记和上次处理的重量
|
# 设置已处理标记和上次处理的重量
|
||||||
self._weight_processed = True
|
self._weight_processed = True
|
||||||
self._last_processed_weight = weight_kg
|
self._last_processed_weight = weight_kg
|
||||||
logging.info(f"已标记重量 {weight_kg}kg 为已处理")
|
logging.info(f"已标记重量 {weight_kg}kg 为已处理")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"处理稳定重量时发生错误: {str(e)}")
|
logging.error(f"处理稳定重量时发生错误: {str(e)}")
|
||||||
finally:
|
finally:
|
||||||
@ -2280,7 +2255,7 @@ class MainWindow(MainWindowUI):
|
|||||||
self.warning_msg = QMessageBox(self)
|
self.warning_msg = QMessageBox(self)
|
||||||
self.warning_msg.setIcon(QMessageBox.Warning)
|
self.warning_msg.setIcon(QMessageBox.Warning)
|
||||||
self.warning_msg.setWindowTitle('重量超出范围')
|
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.setStandardButtons(QMessageBox.NoButton)
|
||||||
self.warning_msg.setModal(False) # 确保非模态
|
self.warning_msg.setModal(False) # 确保非模态
|
||||||
self.warning_msg.setWindowFlags(self.warning_msg.windowFlags() | Qt.WindowStaysOnTopHint) # 置顶显示
|
self.warning_msg.setWindowFlags(self.warning_msg.windowFlags() | Qt.WindowStaysOnTopHint) # 置顶显示
|
||||||
@ -2314,6 +2289,12 @@ class MainWindow(MainWindowUI):
|
|||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
logging.info(f"称重值 {weight_kg:.3f}kg 在轴重要求范围内 ({min_weight:.1f} - {max_weight:.1f}kg)")
|
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:
|
else:
|
||||||
logging.debug(f"轴重要求格式不正确: '{zzyq_value}'")
|
logging.debug(f"轴重要求格式不正确: '{zzyq_value}'")
|
||||||
else:
|
else:
|
||||||
@ -2322,6 +2303,12 @@ class MainWindow(MainWindowUI):
|
|||||||
logging.warning(f"解析轴重要求失败,跳过范围检查: {str(e)}")
|
logging.warning(f"解析轴重要求失败,跳过范围检查: {str(e)}")
|
||||||
else:
|
else:
|
||||||
logging.debug("轴重要求字段不存在或为空,跳过范围检查")
|
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信号
|
# 暂时断开信号连接,避免触发cellChanged信号
|
||||||
try:
|
try:
|
||||||
@ -3761,7 +3748,7 @@ class MainWindow(MainWindowUI):
|
|||||||
self.update_info_table(order_info)
|
self.update_info_table(order_info)
|
||||||
# 订单号输入框回显 mo 字段
|
# 订单号输入框回显 mo 字段
|
||||||
if order_info:
|
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):
|
def on_report(self):
|
||||||
"""报表按钮点击处理"""
|
"""报表按钮点击处理"""
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user