gpt4 book ai didi

c++ - XBee DigiMesh 帧中的奇怪位和错误的校验和

转载 作者:行者123 更新时间:2023-11-28 05:52:03 26 4
gpt4 key购买 nike

我正在使用 XBee DigiMesh 2.4 API-2 和 Raspberry Pi。我将一个帧从一个节点广播到另一个节点。

要传输的帧:7e 0 12 10 1 0 0 0 0 0 0 ff ff ff 0 0 41 6c 65 78 69

其他节点收到的帧:7e 0 10 90 0 7d 33 a2 0 40 91 57 26 ff fe c2 41 6c 65 78 1e

困扰我的字节是c2。应该是02,为什么会这样出现?而且,校验和不正确(我阅读了如何在 API 2 模式下计算校验和)。

对于字节 0x02,它应该是 0xe3 或者对于字节 c2,它应该是 0x23。我试图通过多种方式获得结果 0x1e,但我从未得到这个值。

当我以相反方向(从第二个节点到第一个节点)广播数据包时,会出现同样的问题。

两个 XBee 都配置了 9600 波特率,无奇偶校验。树莓派 UART 也是如此。


----- 编辑: 我找到了关于 C2 字节的答案。 C2 是位域。 C2 = 1100 0010。Bits 7 和 6 是 11,表示这里是 Digimesh。位 1 已设置,因此它是一个广播数据包。 https://dl.dropboxusercontent.com/u/318853/XBee%20900.PNG

还在寻找这个校验和的原因。

最佳答案

您可以通过使用 API 模式 1 并消除在发送和接收值时转义和取消转义值的需要来简化您的代码。让您的代码找出框架并忽略框架中间的 0x7E 真的并不难:如果您看到 0x7E 后跟无效长度,请保留看着。如果您的帧的校验和错误,请跳过 0x7E 并寻找下一个。

如果您绝对必须使用转义,请确保帧中的长度值和校验和不包含转义字节,并且您在发送时正确转义了必要的字节。

在接收端,对字节进行反转义,然后计算校验和。

关于c++ - XBee DigiMesh 帧中的奇怪位和错误的校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com