From 19d108e336b2d1f8c4e6065991737d41d7bbc43c Mon Sep 17 00:00:00 2001 From: YuanHongbin <975559679@qq.com> Date: Thu, 17 Sep 2026 18:41:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=BE=E5=A4=87=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=9F=A5=E8=AF=A2=E6=97=B6=E6=95=B0=E6=8D=AE=E6=B5=81?= =?UTF-8?q?=E4=B8=AD=E9=80=94=E8=A7=A6=E5=8F=91=E8=A7=A3=E6=9E=90=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E8=A1=A8=E6=A0=BC=E8=A2=AB=E6=B8=85=E9=9B=B6=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gateway_config.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/gateway_config.py b/gateway_config.py index b28c6cd..dcad180 100644 --- a/gateway_config.py +++ b/gateway_config.py @@ -874,6 +874,7 @@ class DeviceDialog(QDialog): self._buf = "" self._pending_del = None # 等待删除结果的MAC,"all"表示删除全部 + self._parsed = False # 本次查询是否已完成解析(防止数据流中途误触发) self._quiet = QTimer(self) self._quiet.setSingleShot(True) self._quiet.timeout.connect(self._on_quiet) @@ -921,14 +922,19 @@ class DeviceDialog(QDialog): return self._buf = "" self._pending_del = None + self._parsed = False self._quiet.stop() + self.table.setRowCount(0) # 清空旧数据,避免新旧混淆 self.status_lbl.setText("查询中...") self.main.send_command("culs") - self._quiet.start(800) + self._quiet.start(1200) # 首次等待稍长,给设备响应时间 def feed_text(self, text): + # 已完成本次解析后,忽略后续到来的残留数据,直到下一次手动查询 + if self._parsed: + return self._buf += text - self._quiet.start(600) + self._quiet.start(600) # 数据流仍在到达,重置静默定时器 def _on_quiet(self): if self._pending_del is not None: @@ -944,6 +950,10 @@ class DeviceDialog(QDialog): self._pending_del = None self.query() return + # 仅解析一次:避免数据流间歇触发的中途解析把表格清零 + if self._parsed: + return + self._parsed = True self._parse_devices() def _parse_devices(self): @@ -1001,7 +1011,6 @@ class DeviceDialog(QDialog): if m: cur["online"] = m.group(1) self._fill_table(devices) - self._buf = "" def _fill_table(self, devices): self.table.setRowCount(0)