fix: MQTT协议 V1.02 同步 — 字段名缩短 + 时间单位修正
- docs/DLD960_IoT_MQTT协议.md: 字段缩写 + 时间单位 5ms→50ms - vd960DBN/iot_mqtt_srv.c: 6字段缩短对齐协议 (level/iscar/freq/diff/sens/cndtn) - vd960DBN/tcp_json_srv.c: gap_ms5/passtime_ms → gap/passtime - vd960DBN/loop_uart_proto.h: 注释 5ms→50ms - DBNMQTTool/main.py: 模拟样本数据字段同步
This commit is contained in:
@@ -107,3 +107,35 @@ DBNMQTTool/
|
||||
| 协议Topic订阅/发布 | ✅ c19e465 |
|
||||
| 自定义Topic订阅/发布 | ✅ c19e465 |
|
||||
| 固件联调 | ✅ vd960DBN IoT 模式稳定上报 |
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-07 — MQTT V1.01 适配 + 稳定性修复
|
||||
|
||||
### 1. MQTT 协议 V1.01 适配
|
||||
|
||||
- Topic 从多主题(`/loop_data`, `/event_report`, `/heartbeat`, `/cmd`…)压缩为双主题 `dld960/{sn}/dev`(上报)、`dld960/{sn}/srv`(下发)
|
||||
- `manage_mqtt_recv_message()` 实现 V1.01 协议命令分发,支持 `cmd`/`Method` 双格式
|
||||
- MQTT PUBLISH 接收修复:topic 过滤 + 通配符路由修正
|
||||
|
||||
### 2. MqttClient 重构:tkinter 回调 → QObject 信号/槽
|
||||
|
||||
**问题**: `paho.mqtt` C 层回调直接操作 Qt UI 控件 → `RuntimeError: wrapped C/C++ object has been deleted` 崩溃。
|
||||
|
||||
**修复**:
|
||||
- `MqttClient` 继承 `QObject`,使用 Qt 信号/槽机制
|
||||
- `on_message` → `message_received` 信号 → 主线程 slot 安全更新 UI
|
||||
- 所有 publish 路径增加通用异常捕获,防止未捕获异常导致静默崩溃
|
||||
- 回退 Qt 信号排队方案,改用 `QMetaObject.invokeMethod` + 日志追踪定位阻塞点
|
||||
|
||||
### 3. DeviceManager 死锁修复
|
||||
|
||||
`threading.Lock` 在单线程 Qt 事件循环中自锁 → `RLock`。`add_device()` 和 `remove_device()` 同线程互调时 `Lock` 阻塞自身。
|
||||
|
||||
### 4. UI/UX 改进
|
||||
|
||||
- **日志增强**: 收发打印 topic + payload 详情,调试信息更直观
|
||||
- **查询响应自动回填**: 设备信息查询后自动填充 SN 等输入框
|
||||
- **主动上报配置**: `report_config` 面板支持完整 7 参数独立开关
|
||||
- `right` 局部变量 → `self._notebook`,修复 tab 引用丢失
|
||||
|
||||
|
||||
Reference in New Issue
Block a user