This commit is contained in:
2025-10-17 10:32:52 +08:00
parent c0a1925150
commit 452aaaeaba
5 changed files with 185 additions and 203 deletions

View File

@@ -151,9 +151,6 @@ class LoRaMeshUartPassthroughManager:
log(f"LoRa: 提取的包: {packet.hex()}。剩余缓冲区 (长度 {len(self._rx_buffer)}): {self._rx_buffer.hex()}")
# --- 包结构解析 ---
# 根据代码 `chunk_data = packet[6:-2]` 推断,包结构为:
# 1 (帧头) + 1 (长度) + 2 (目标地址) + 1 (总分片) + 1 (当前分片) + N (数据) + 2 (源地址)
# 因此,一个合法的包至少需要 1+1+2+1+1+2 = 8个字节
if len(packet) < 8:
log(f"LoRa: 包长度 {len(packet)} 小于协议最小长度8, 判定为坏包,已丢弃。")
continue
@@ -161,8 +158,8 @@ class LoRaMeshUartPassthroughManager:
addr = int.from_bytes(packet[2:4], 'big')
total_chunks = packet[4]
current_chunk = packet[5]
# 提取数据块排除末尾的2字节源地址
chunk_data = packet[6:-2]
# 提取数据块
chunk_data = packet[6:]
source_addr = int.from_bytes(packet[-2:], 'big')
log(f"LoRa: 解析包: 源地址={source_addr}, 目标地址={addr}, 总分片={total_chunks}, 当前分片={current_chunk}, 数据块长度={len(chunk_data)}")