C#写的 crc16校验方法
public static byte[] crc(byte[] data)
{
//crc校验
Byte CRC16Lo = 0xFF;// CRC寄存器
Byte CRC16Hi = 0xFF;
Byte CL = 0x01; // '多项式码&HA001
Byte CH = 0xA0;
Byte SaveHi, SaveLo;
for (int intI = 0; intI < data.Length; intI++)
{
CRC16Lo = Convert.ToByte(CRC16Lo ^ data[intI]); //每一个数据与CRC寄存器进行异或
for (int flag = 0; flag < 7; flag++)
{
SaveHi = CRC16Hi;
SaveLo = CRC16Lo;
CRC16Hi = Convert.ToByte(CRC16Hi / 2); // '高位右移一位
CRC16Lo = Convert.ToByte(CRC16Lo / 2); // '低位右移一位
if ((SaveHi & 0x01) == 0x01)
{ //'如果高位字节最后一位为1
CRC16Lo = Convert.ToByte(CRC16Lo | 0x80); //'则低位字节右移后前面补1
} //'否则自动补0
if (Convert.ToByte(SaveLo &0x01) == 0x01)
{ //如果CRC16的LSB(最低位)为1,则与多项式码进行异或
CRC16Hi = Convert.ToByte(CRC16Hi ^ CH);
CRC16Lo = Convert.ToByte(CRC16Lo ^ CL);
}
}
}
byte[] bytCRCResult = new byte[2];
bytCRCResult[0] = CRC16Hi;
bytCRCResult[1] = CRC16Lo;
return bytCRCResult;
}
请问高手那里有错!
{
//crc校验
Byte CRC16Lo = 0xFF;// CRC寄存器
Byte CRC16Hi = 0xFF;
Byte CL = 0x01; // '多项式码&HA001
Byte CH = 0xA0;
Byte SaveHi, SaveLo;
for (int intI = 0; intI < data.Length; intI++)
{
CRC16Lo = Convert.ToByte(CRC16Lo ^ data[intI]); //每一个数据与CRC寄存器进行异或
for (int flag = 0; flag < 7; flag++)
{
SaveHi = CRC16Hi;
SaveLo = CRC16Lo;
CRC16Hi = Convert.ToByte(CRC16Hi / 2); // '高位右移一位
CRC16Lo = Convert.ToByte(CRC16Lo / 2); // '低位右移一位
if ((SaveHi & 0x01) == 0x01)
{ //'如果高位字节最后一位为1
CRC16Lo = Convert.ToByte(CRC16Lo | 0x80); //'则低位字节右移后前面补1
} //'否则自动补0
if (Convert.ToByte(SaveLo &0x01) == 0x01)
{ //如果CRC16的LSB(最低位)为1,则与多项式码进行异或
CRC16Hi = Convert.ToByte(CRC16Hi ^ CH);
CRC16Lo = Convert.ToByte(CRC16Lo ^ CL);
}
}
}
byte[] bytCRCResult = new byte[2];
bytCRCResult[0] = CRC16Hi;
bytCRCResult[1] = CRC16Lo;
return bytCRCResult;
}
请问高手那里有错!
...全文
相关推荐
CRC16_c#串口modbus_modbus调试_triedgi7_源码
串口 modbus crc16,集成在一个界面中,方便调试
C#和C语言实现CRC16串口校验代码解析
本文还有配套的精品资源,点击获取 简介:CRC校验是一种错误检测技术,主要用于数据传输中确保数据完整性。本压缩包中包含了使用C语言编写的CRC16串口校验代码,适用于数据正确性验证场景。文章详细解释了CRC校验的基本原理和关键步骤,并探讨了C#和C语言实现CRC校验的差异与方法。用户可将此代码集成到串口通信程序中,保证数据的准确接收。 1. CRC校验的定义和重要...
使用C# Modbus RTU串口通信
使用C# Modbus RTU串口通信 支援Modbus RTU 封包格式 自動計算CRC 測試工具
C# Modbus RTU完整源代码
本Modbus上位机程序,自带自动发送功能,支持CRC校验码、通讯超时、地址错误、功能码错误判断功能
C# Modbus RTU及TCPIP
关于Modbus底层协议的源码,包括各种校验方法,数据长度校验等等。RTU及TCP/IP的读写。


