当前位置:首页 C++ > 正文

c++实现Modbus CRC16校验

作者:野牛程序员:2023-12-28 11:13:38 C++阅读 2725

以下是C++代码示例,用于计算Modbus CRC16校验:

#include <iostream>
#include <cstdint>

uint16_t calculateModbusCRC16(const uint8_t *data, size_t length) {
    uint16_t crc = 0xFFFF;

    for (size_t i = 0; i < length; ++i) {
        crc ^= data[i];

        for (int j = 0; j < 8; ++j) {
            if (crc & 0x0001) {
                crc = (crc >> 1) ^ 0xA001;
            } else {
                crc = crc >> 1;
            }
        }
    }

    return crc;
}

int main() {
    uint8_t message[] = {0x01, 0x02, 0x03, 0x04, 0x05};
    size_t messageLength = sizeof(message) / sizeof(message[0]);

    uint16_t crcResult = calculateModbusCRC16(message, messageLength);

    std::cout << "Modbus CRC16校验结果: 0x" << std::hex << crcResult << std::endl;

    return 0;
}

这段代码定义了一个名为calculateModbusCRC16的函数,它接受数据和数据长度作为输入,并返回计算出的CRC16校验值。在main函数中,创建了一个包含示例数据的数组,调用calculateModbusCRC16函数计算CRC16校验值,并打印结果。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击