【问题标题】:How to calculate checksum (for DFPlayer mini)如何计算校验和(适用于 DFPlayer mini)
【发布时间】:2021-11-08 21:38:16
【问题描述】:

一段时间以来,我一直在尝试计算我的 DFPlayer mini 的校验和(仍将交付)。由于我对这个主题没有太多经验,我真的不知道该怎么做,所以我试着用data sheet帮助自己。 不幸的是,这并没有给我带来太多,我开始搜索论坛。就在那时,我遇到了完全相同的问题。但令我惊讶的是,the example in the forum 的校验和与我找到的数据表不同。论坛贡献附有数据表,其中包含相同的示例但具有不同的校验和(参见图片)。 Example from (my) data sheet ; Example from the data sheet from the forum ; Forum post.

我已经尝试分析the library which one could use的代码(但如果可能我不想使用它)。但由于我还是一个初学者,我不能依赖我的结果,部分原因是具有不同校验和的相同示例让我很困惑。

如果有人可以在这里帮助我,我会很高兴

【问题讨论】:

  • 这两个数据表描述的软件版本似乎略有不同,因此除了文档错误之外,还可能是校验和计算不同。如果您可以观察到一些正确的消息,那么应该可以确定哪种校验和计算适合您的设备。

标签: checksum


【解决方案1】:

大部分 DFPlayer 迷你克隆都使用这种方法:

/*
DFPlayer data frame format:
0      1    2    3    4    5   6   7     8     9-byte
START, VER, LEN, CMD, ACK, DH, DL, SUMH, SUML, END
       -------- checksum --------
*/

int16_t checksum = 0;

checksum = checksum - _dataBuffer[1] - _dataBuffer[2] - _dataBuffer[3] - _dataBuffer[4] - _dataBuffer[5] - _dataBuffer[6];

_dataBuffer[7] = checksum >> 8;
_dataBuffer[8] = checksum;

【讨论】:

    猜你喜欢
    • 2011-02-04
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多