From 383e6d3aaa7d6c20b029cd6db615832e1f654886 Mon Sep 17 00:00:00 2001 From: zhu-mengmeng <15588200382@163.com> Date: Thu, 17 Jul 2025 13:22:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E7=BA=BF=E5=BE=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E6=97=A0=E6=95=88=E5=80=BC=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=92=8C=E5=9B=9E=E8=B0=83=E9=80=9A=E7=9F=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/serial_manager.py | 44 ++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/utils/serial_manager.py b/utils/serial_manager.py index 8bd781b..1c3ca5b 100644 --- a/utils/serial_manager.py +++ b/utils/serial_manager.py @@ -1160,32 +1160,30 @@ class SerialManager: # 转换为浮点数 xj_value = float(number_str) logging.info(f"线径数据: {xj_value}") - if xj_value/10000 > 10 or xj_value/10000 == 0: # 过滤无效值:>10 或 =0 的值直接跳过 - # if xj_value/10000 > 10 or xj_value/10000 == 0: - # logging.info(f"过滤无效线径值: {xj_value} (超出有效范围或为零)") - # return False + if xj_value/10000 > 10 or xj_value/10000 == 0: + return False # 更新数据 - self.data['xj'] = xj_value - self._write_data_to_file() - - # 构建MainWindow.on_diameter_data_received期望的格式 - callback_data_str = f"线径数据: {xj_value}" - if 'xj_data' in self.callbacks: - try: - # 与米电阻类似,传递实际的串口名称 - logging.info(f"线径回调开始调用,回调对象: {self.callbacks['xj_data'].__self__.__class__.__name__}, 数据: {xj_value}") - self.callbacks['xj_data'](port_name, callback_data_str.encode('utf-8')) - logging.info(f"通知 'xj_data' 回调成功. 值: {xj_value}, 串口: {port_name}") - except Exception as e: - logging.error(f"调用 'xj_data' 回调失败: {e}") - else: - # 如果未注册回调,仍然使用通用方法通知 - logging.warning(f"未找到xj_data回调,使用通用_notify_callbacks方法") - self._notify_callbacks('xj_data', {"type": "xj", "value": self.data['xj'], "source": f"serial ({port_name})"}) - - return True + self.data['xj'] = xj_value + self._write_data_to_file() + + # 构建MainWindow.on_diameter_data_received期望的格式 + callback_data_str = f"线径数据: {xj_value}" + if 'xj_data' in self.callbacks: + try: + # 与米电阻类似,传递实际的串口名称 + logging.info(f"线径回调开始调用,回调对象: {self.callbacks['xj_data'].__self__.__class__.__name__}, 数据: {xj_value}") + self.callbacks['xj_data'](port_name, callback_data_str.encode('utf-8')) + logging.info(f"通知 'xj_data' 回调成功. 值: {xj_value}, 串口: {port_name}") + except Exception as e: + logging.error(f"调用 'xj_data' 回调失败: {e}") + else: + # 如果未注册回调,仍然使用通用方法通知 + logging.warning(f"未找到xj_data回调,使用通用_notify_callbacks方法") + self._notify_callbacks('xj_data', {"type": "xj", "value": self.data['xj'], "source": f"serial ({port_name})"}) + + return True except ValueError: logging.warning(f"线径数据字符串 '{number_str}' 无法转换为浮点数") else: