From c3d45318701d4d26e5813266d6cef60157564dfb Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Fri, 10 Oct 2025 14:36:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 56cf205..d01bbe4 100644 --- a/README.md +++ b/README.md @@ -8,25 +8,27 @@ 每个通过LoRa UART模块发送的物理数据包都遵循以下结构: -| 字段 | 长度 (字节) | 值 (Hex) | 描述 | -| :-------------------- | :------------ | :---------------- | :--------------------------------------------- | -| **帧头 (Header)** | 1 | `0xED` | 固定值,表示一个数据包的开始。 | -| **后续长度 (Length)** | 1 | `0x00`-`0xFF` | 从`总包数`字段到`数据块`末尾的总字节数。 | -| **目标地址 (DestAddr)** | 2 | `0x0000`-`0xFFFF` | 接收该数据包的设备地址。 | -| **总包数 (TotalChunks)**| 1 | `0x01`-`0xFF` | 表示当前消息被分成了几个包。`0x01`代表这是唯一的包。 | -| **当前包序号 (CurrentChunk)**| 1 | `0x00`-`0xFE` | 当前是第几个数据包(从0开始计数)。 | -| **数据块 (ChunkData)** | N | - | 实际传输的数据片段。 | +| 字段 | 长度 (字节) | 值 (Hex) | 描述 | +|:-------------------------| :------------ | :---------------- | :--------------------------------------------- | +| **帧头 (Header)** | 1 | `0xED` | 固定值,表示一个数据包的开始。 | +| **数据长度 (Length)** | 1 | `0x00`-`0xFF` | 从`总包数`字段到`数据块`末尾的总字节数,不包含源地址。 | +| **目标地址 (DestAddr)** | 2 | `0x0000`-`0xFFFF` | 接收该数据包的设备地址。 | +| **总包数 (TotalChunks)** | 1 | `0x01`-`0xFF` | 表示当前消息被分成了几个包。`0x01`代表这是唯一的包。 | +| **当前包序号 (CurrentChunk)** | 1 | `0x00`-`0xFE` | 当前是第几个数据包(从0开始计数)。 | +| **数据块 (ChunkData)** | N | - | 实际传输的数据片段。 | +| **源地址 (SourceAddr)** | 2 | `0x0000`-`0xFFFF` | 发送该数据包的设备地址。 | **示例:** -发送一个数据为 `[0x01, 0x02, 0x03]` 的单包消息到地址 `0x1234`: -`ED 05 12 34 01 00 01 02 03` +发送一个数据为 `[0x01, 0x02, 0x03]` 的单包消息到地址 `0x1234`,发送方地址为 `0x5678`: +`ED 05 12 34 01 00 01 02 03 56 78` - `ED`: 帧头 - `05`: 后续长度 (1+1+3 = 5) - `12 34`: 目标地址 - `01`: 总包数 (共1包) - `00`: 当前包序号 (第0包) - `01 02 03`: 数据块 +- `56 78`: 源地址 ### 2. 数据分片 (Fragmentation) @@ -39,4 +41,4 @@ - `receive_packet` 方法会缓存收到的分片。 - 当一个设备的所有分片都接收完毕后,`receive_packet` 会将它们自动重组成一个完整的消息,并向上层返回。 -- 由于通信是单向的(仅主控发送),接收端无需管理多个源地址的重组缓冲区。 +- 由于通信是单向的(仅主控发送),接收端无需管理多个源地址的重组缓冲区。 \ No newline at end of file