2 Commits

+13 -4
View File
@@ -144,7 +144,7 @@ class GatewayConfigTool(QMainWindow):
self.refresh_ports()
def init_ui(self):
self.setWindowTitle("网关配置工具(窄带版 V1.2.0)")
self.setWindowTitle("网关配置工具(窄带版 V1.2.1)")
self.setWindowIcon(QIcon(resource_path("物联网网关.png")))
self.setMinimumSize(940, 640)
self.resize(1000, 700)
@@ -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)