【问题标题】:CRC checksum calculation algorithmCRC校验和计算算法
【发布时间】:2021-05-11 05:57:52
【问题描述】:

任何熟悉 CRC 计算的人都可以验证此代码

https://github.com/psvanstrom/esphome-p1reader/blob/main/p1reader.h#L120

真的是按照这个描述计算crc吗?

CRC 是根据数据消息中前面的字符计算的 CRC16 值(来自 “/“ 到 ”!”使用多项式:x16+x15+x2 +1)。 CRC16 不使用异或输入,不使用异或输出并且是 首先计算最低有效位。该值表示为 4 个十六进制字符(MSB 在前)。

【问题讨论】:

    标签: crc crc16


    【解决方案1】:

    链接代码中没有关于它的开始和结束位置以及最终如何表示结果的任何内容,但是是的,该代码实现了该规范。

    【讨论】:

    • 感谢您的确认!是的,在第 270 行和第 278 行的同一代码中进一步调用 crc16_update 来计算 crc。如果 CRC 正常,则将其发布到 HomeAssistant,代码中的第 302 行。