CRC-16/MODBUS 校验位计算
2018-03-07 16:14
447 查看
实验指令: 前23位表示 信息头 + 信息内容。24,25位是待计算的校验位。26位是结束码
7E 01 00 00 01 10 02 00 27 00 0C 00 02 00 00 00 00 00 50 00 3C 00 03 90 0B 0D在线计算
代码实现
#include <stdio.h> #include <Windows.h> UINT8 data[23] = { 0x7E, 0x01, 0x00, 0x00, 0x01, 0x10, 0x02, 0x00, 0x27, 0x00, 0x0C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x3C, 0x00, 0x03 }; /* * 函数名 :CRC16 * 描述 : 计算CRC16 * 输入 : ptr---数据,len---长度 * 输出 : 校验值 */ UINT16 CRC16(UINT8 *ptr, UINT16 len) { unsigned char i; unsigned short crc = 0xFFFF; if (len == 0) { len = 1; } while (len--) { crc ^= *ptr; for (i = 0; i<8; i++) { if (crc & 1) { crc >>= 1; crc ^= 0xA001; } else { crc >>= 1; } } ptr++; } return(crc); } int main() { printf("%04x\n", CRC16(data, 23)); getchar(); }
相关文章推荐
- 安卓能用的modebus CRC16计算,附上对应的C语言的CRC16
- 关于modbus rtu协议的CRC(循环冗余校验)在线计算
- CRC-16 (Modbus)校验码
- CCITT CRC-16计算原理与实现
- 计算CRC程序(CRC16)
- Modbus CRC-16
- CRC-16 (Modbus)
- 计算ModBus CRC 校验码(delphi实现)
- CCITT CRC-16计算原理与实现
- C# 计算CRC16
- 计算CRC程序(CRC16)
- CRC-16计算方法
- CRC代码算法实现-CRC-16 MODBUS代码实验
- CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现
- CRC-16/MODBUS
- 计算CRC16
- CCITT CRC-16计算原理与实现【整理综合】
- C#和C实现通过CRC-16 (Modbus)获取CRC值并校验数据(代码)
- 【实用】STM32F10x 学习笔记3、4(CRC计算单元)
- CRC校验码生成与数据校验源码程序(逐位运算法) (包括CRC-4,5,6,7,8,16,32)