modbusRTU协议用的CRC16
代码如下:
static ushort modbus_crc_16(char *p int len) { ushort r c; ushort i j; r = 0xffff; for (i = 0; i < len; i++) { r = r ^ (*(p + i) & 0x00ff); for (j = 0; j < 8; j++) { c = r & 0x0001; //按位与 r = r >> 1; //右移位 if (c > 0) r = r ^ 0xa001; } } return r; }
modbus数据帧采用的CRC16校验方式,
在串口通讯上,有的采用的是奇偶校验,或者不校验都行