feat: 优化线径数据处理逻辑,增强无效值过滤和回调通知功能

This commit is contained in:
zhu-mengmeng 2025-07-17 13:22:51 +08:00
parent dce6f4a14a
commit 383e6d3aaa

View File

@ -1160,32 +1160,30 @@ class SerialManager:
# 转换为浮点数 # 转换为浮点数
xj_value = float(number_str) xj_value = float(number_str)
logging.info(f"线径数据: {xj_value}") logging.info(f"线径数据: {xj_value}")
if xj_value/10000 > 10 or xj_value/10000 == 0:
# 过滤无效值:>10 或 =0 的值直接跳过 # 过滤无效值:>10 或 =0 的值直接跳过
# if xj_value/10000 > 10 or xj_value/10000 == 0: if xj_value/10000 > 10 or xj_value/10000 == 0:
# logging.info(f"过滤无效线径值: {xj_value} (超出有效范围或为零)") return False
# return False
# 更新数据 # 更新数据
self.data['xj'] = xj_value self.data['xj'] = xj_value
self._write_data_to_file() self._write_data_to_file()
# 构建MainWindow.on_diameter_data_received期望的格式 # 构建MainWindow.on_diameter_data_received期望的格式
callback_data_str = f"线径数据: {xj_value}" callback_data_str = f"线径数据: {xj_value}"
if 'xj_data' in self.callbacks: if 'xj_data' in self.callbacks:
try: try:
# 与米电阻类似,传递实际的串口名称 # 与米电阻类似,传递实际的串口名称
logging.info(f"线径回调开始调用,回调对象: {self.callbacks['xj_data'].__self__.__class__.__name__}, 数据: {xj_value}") logging.info(f"线径回调开始调用,回调对象: {self.callbacks['xj_data'].__self__.__class__.__name__}, 数据: {xj_value}")
self.callbacks['xj_data'](port_name, callback_data_str.encode('utf-8')) self.callbacks['xj_data'](port_name, callback_data_str.encode('utf-8'))
logging.info(f"通知 'xj_data' 回调成功. 值: {xj_value}, 串口: {port_name}") logging.info(f"通知 'xj_data' 回调成功. 值: {xj_value}, 串口: {port_name}")
except Exception as e: except Exception as e:
logging.error(f"调用 'xj_data' 回调失败: {e}") logging.error(f"调用 'xj_data' 回调失败: {e}")
else: else:
# 如果未注册回调,仍然使用通用方法通知 # 如果未注册回调,仍然使用通用方法通知
logging.warning(f"未找到xj_data回调使用通用_notify_callbacks方法") logging.warning(f"未找到xj_data回调使用通用_notify_callbacks方法")
self._notify_callbacks('xj_data', {"type": "xj", "value": self.data['xj'], "source": f"serial ({port_name})"}) self._notify_callbacks('xj_data', {"type": "xj", "value": self.data['xj'], "source": f"serial ({port_name})"})
return True return True
except ValueError: except ValueError:
logging.warning(f"线径数据字符串 '{number_str}' 无法转换为浮点数") logging.warning(f"线径数据字符串 '{number_str}' 无法转换为浮点数")
else: else: