【发布时间】:2019-04-26 05:56:58
【问题描述】:
我在查找 XBee 的 API 1 和 API 2 模式之间的区别时遇到问题。我已经完成了我的编程工作,周三我有我的硕士论文答辩。我知道如何使用 XBee,但我的射频基础知识非常薄弱。请用我在论文答辩中可以说的几个基本词来解释这种差异。
【问题讨论】:
标签: xbee
我在查找 XBee 的 API 1 和 API 2 模式之间的区别时遇到问题。我已经完成了我的编程工作,周三我有我的硕士论文答辩。我知道如何使用 XBee,但我的射频基础知识非常薄弱。请用我在论文答辩中可以说的几个基本词来解释这种差异。
【问题讨论】:
标签: xbee
我个人不喜欢 API 模式 2,因为它增加了发送和接收数据的复杂性,除非您在串行驱动程序的低级别处理它。
API 模式 2 的好处是您可以观看字节流并知道您看到的任何0x7E 字节绝对是“帧开始”。使用 API 模式 1,可以在帧的内容中看到该字节。
如果您在中间选择了一条信息流,则需要做额外的工作来验证您是否找到了起点。这并不难,特别是如果您在 0x7E 帧开始之后对 16 位帧长度进行完整性检查。在大多数情况下,您将解码完整的帧,而无需寻找下一帧的开始。
由于转义还包括 XON 和 XOFF 字符,我猜如果串行流中有其他设备(连接在 XBee 和主机发送/接收帧之间)无法处理这些字符,则可能需要 API 模式 2 .
编辑以包含 API 模式 2 的详细信息:
在任一 API 模式下,字节 0x7E 表示帧的开始。
在模式 2 中,如果以下字节出现在帧内,它们将被替换为转义的两字节序列 0x7D 后跟与 0x20 异或的原始字节:
| byte in frame | escaped sequence |
|---|---|
0x7E (start of frame) |
0x7D 0x5E |
0x7D (start of escape sequence) |
0x7D 0x5D |
0x13 (XOFF) |
0x7D 0x33 |
0x11 (XON) |
0x7D 0x31 |
请注意,帧长度和校验和基于原始的未转义字节序列。如果您正在编写代码来处理转义出站帧和取消转义入站帧,您希望它发生在串行驱动程序的相当低级别。
【讨论】:
【讨论】: