API 1 和 API 2 XBee 模式的区别
Difference between API 1 and API 2 mode of XBee
我在查找 XBee 的 API 1 和 API 2 模式之间的区别时遇到了问题。我已经完成了编程工作,并且在周三进行了硕士论文答辩。我知道如何使用 XBee,但我的射频基础知识很薄弱。请用我在论文答辩中会说的几个基本词来解释这种差异。
我个人不喜欢 API 模式 2,因为它增加了发送和接收数据的复杂性,除非您在串行驱动程序的低级别处理它。
API 模式 2 的好处是您可以观看字节流并知道您看到的任何 0x7E
字节绝对是“帧开始”。使用 API 模式 1,可以在帧的内容中看到该字节。
如果您在中间选择一条溪流,则需要做额外的工作来验证您是否找到了起点。这不是很难做到,特别是如果您在 0x7E
帧开始之后包含对 16 位帧长度的健全性检查。在大多数情况下,您将解码完整的帧,而不需要寻找下一帧的开始。
由于转义还包括 XON 和 XOFF 字符,我想如果串行流中有其他设备(连接在 XBee 和主机 sending/receiving 帧之间,则可能需要 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
请注意,帧长度和校验和基于原始的、未转义的字节序列。如果您正在编写代码来处理转义出站帧和未转义入站帧,您希望它发生在串行驱动程序的相当低的级别。
我在查找 XBee 的 API 1 和 API 2 模式之间的区别时遇到了问题。我已经完成了编程工作,并且在周三进行了硕士论文答辩。我知道如何使用 XBee,但我的射频基础知识很薄弱。请用我在论文答辩中会说的几个基本词来解释这种差异。
我个人不喜欢 API 模式 2,因为它增加了发送和接收数据的复杂性,除非您在串行驱动程序的低级别处理它。
API 模式 2 的好处是您可以观看字节流并知道您看到的任何 0x7E
字节绝对是“帧开始”。使用 API 模式 1,可以在帧的内容中看到该字节。
如果您在中间选择一条溪流,则需要做额外的工作来验证您是否找到了起点。这不是很难做到,特别是如果您在 0x7E
帧开始之后包含对 16 位帧长度的健全性检查。在大多数情况下,您将解码完整的帧,而不需要寻找下一帧的开始。
由于转义还包括 XON 和 XOFF 字符,我想如果串行流中有其他设备(连接在 XBee 和主机 sending/receiving 帧之间,则可能需要 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 |
请注意,帧长度和校验和基于原始的、未转义的字节序列。如果您正在编写代码来处理转义出站帧和未转义入站帧,您希望它发生在串行驱动程序的相当低的级别。